تم اكتشاف ثغرة جديدة في تجاوز السعة الصحيحة في التحقق من الأمان في لغة Move.

robot
إنشاء الملخص قيد التقدم

تحليل ثغرة تجاوز السعة في التحقق من الأمان في لغة Move

مؤخراً، أثناء بحثنا المتعمق في لغة Move، اكتشفنا ثغرة جديدة في تجاوز الأعداد الصحيحة. هذه الثغرة موجودة في عملية التحقق من سلامة المرجع، وطريقة تنشيطها مثيرة للاهتمام. ستقوم هذه المقالة بتحليل هذه الثغرة بعمق، واستكشاف بعض المعلومات الخلفية المتعلقة بلغة Move.

تقوم لغة Move بالتحقق من وحدات الكود قبل تنفيذ بايت كود ، وتنقسم إلى أربع خطوات. تظهر هذه الثغرة في خطوة reference_safety.

تعرّف وحدة التحقق من الأمان وظيفة التحويل المستخدمة للتحقق من أمان المرجع لهيكل العملية. تشمل محتويات الفحص التحقق من عدم وجود مراجع معلقة، وما إذا كان الوصول إلى المراجع القابلة للتغيير آمناً، وما إذا كان الوصول إلى مراجع التخزين العالمية آمناً، وغيرها.

تم اكتشاف ثغرة عالية الخطورة أخرى في لغة move بواسطة Numen Cyber

تستدعي دالة مدخل التحقق من الأمان دالة analyze_function للتحقق من كل كتلة أساسية. الكتلة الأساسية هي تسلسل من التعليمات البرمجية لا تحتوي على تعليمات فرعية باستثناء المدخلات والمخرجات. تحدد لغة Move الكتل الأساسية من خلال استعراض الشيفرة الثنائية والبحث عن جميع تعليمات الفرع وتعليمات الحلقة.

تدعم لغة Move نوعين من المراجع: المراجع غير القابلة للتغيير & والمراجع القابلة للتغيير &mut. تُستخدم المراجع غير القابلة للتغيير لقراءة البيانات، بينما تُستخدم المراجع القابلة للتغيير لتعديل البيانات. يساعد الاستخدام المعقول لنوع المرجع على الحفاظ على الأمان والتعرف على وحدات القراءة.

ستقوم وحدة التحقق من الأمان بفحص التعليمات البرمجية للبايت في الكتل الأساسية داخل الدوال، والتحقق من أن جميع عمليات الإشارة قانونية. تتعلق عملية التحقق بشكل أساسي ببنية AbstractState، والتي تحتوي على رسم الاقتراض والمحليين، لضمان سلامة الإشارات داخل الدالة.

اكتشاف حصري من Numen Cyber لثغرة خطيرة أخرى في لغة move

خلال عملية التحقق، سيتم مقارنة حالة التنفيذ قبل وبعد الكتلة الأساسية، من خلال ما إذا كان join_result قد تغير لدمج الحالة السابقة والحالة اللاحقة. إذا حدث تغيير وكان هناك حافة عكسية تشير إلى نفسها في الكتلة الحالية (مما يشير إلى وجود حلقة)، فسيتم العودة إلى بداية الحلقة، والاستمرار في تنفيذ تلك الكتلة الأساسية، حتى تتساوى الحالة اللاحقة مع الحالة السابقة أو يتم الإنهاء بسبب خطأ.

تظهر الثغرة أثناء عملية判断 ما إذا كانت نتيجة الانضمام قد تغيرت. عندما يكون مجموع طول المعلمات وطول المتغيرات المحلية أكبر من 256، فإن استخدام نوع u8 لتكرار المتغيرات المحلية يؤدي إلى تجاوز عدد صحيح. على الرغم من أن Move لديه عملية للتحقق من عدد المتغيرات المحلية، إلا أن وحدة التحقق من الحدود تحقق فقط من المتغيرات المحلية، دون تضمين طول المعلمات.

اكتشاف حصري من Numen Cyber ثغرة عالية الخطورة أخرى في لغة move

يمكن أن تتسبب ثغرة تجاوز عدد صحيح هذه في هجمات الحرمان من الخدمة (DoS). يمكن للمهاجمين بناء كتل كود متكررة واستغلال التجاوز لتغيير حالة الكتلة، مما يجعل خريطة locals الجديدة مختلفة عن السابقة. عند تنفيذ دالة execute_block مرة أخرى، ستؤدي تحليل تسلسل تعليمات بايت كود في الكتلة الأساسية إلى الوصول إلى خريطة locals الجديدة. إذا كان المؤشر الذي تحتاج التعليمات للوصول إليه غير موجود في خريطة AbstractState locals الجديدة، فسيؤدي ذلك إلى DoS.

! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة

للتحقق من هذه الثغرة، يمكن إعادة إنتاج PoC في git. تحتوي كتلة التعليمات البرمجية في PoC على تعليمات فرعية غير مشروطة، حيث يتم القفز إلى التعليمات الأولى في كل مرة يتم فيها تنفيذ التعليمات الأخيرة، مما يؤدي إلى استدعاء دوال execute_block و join عدة مرات.

Numen Cyber اكتشفت ثغرة عالية الخطورة جديدة في لغة move

تظهر هذه الثغرة أنه حتى اللغات التي تركز على الأمان مثل Move قد تحتوي على مخاطر أمنية. إنها تؤكد على أهمية تدقيق الكود، وفي الوقت نفسه توصي مصممي لغة Move بزيادة المزيد من فحوصات الكود أثناء وقت التشغيل لمنع حدوث حالات غير متوقعة. حاليًا، يتم إجراء فحوصات الأمان بشكل رئيسي في مرحلة التحقق، ولكن بمجرد تجاوز التحقق، فإن نقص التعزيز الأمني الكافي في مرحلة التشغيل قد يؤدي إلى مشاكل أكثر خطورة.

بصفتنا رواد البحث في أمان لغة Move، سنواصل دراسة قضايا الأمان المتعلقة بـ Move بعمق وسنشارك المزيد من الاكتشافات في المستقبل.

Numen Cyber اكتشفت حصريًا ثغرة عالية الخطورة أخرى في لغة move

اكتشاف حصري من Numen Cyber لثغرة خطيرة أخرى في لغة move

اكتشاف حصري من Numen Cyber ثغرة عالية الخطورة أخرى في لغة move

اكتشاف حصري من Numen Cyber ثغرة عالية الخطورة أخرى في لغة move

اكتشاف حصري من Numen Cyber لثغرة خطيرة أخرى في لغة move

اكتشاف حصري لـ Numen Cyber ثغرة عالية الخطورة أخرى في لغة move

Numen Cyber اكتشف حصريًا ثغرة عالية الخطورة أخرى في لغة move

! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة

! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة

! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة

MOVE-15.6%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • مشاركة
تعليق
0/400
BagHolderTillRetirevip
· 07-22 09:41
هذه المشكلة حقًا مدهشة، تدفق زاد عن حده مما تسبب في تعطل النظام.
شاهد النسخة الأصليةرد0
MetaverseVagabondvip
· 07-21 19:40
ثغرة الفائض عادت مرة أخرى، مؤسف
شاهد النسخة الأصليةرد0
HeavenAndEarthAreBlevip
· 07-20 02:27
تبا لها
شاهد النسخة الأصليةرد0
MemeTokenGeniusvip
· 07-20 00:50
أوه، هذا الخطأ حقا انفجر
شاهد النسخة الأصليةرد0
GamefiHarvestervip
· 07-20 00:43
لا تصلح في الوقت المناسب؟ احترس يا حمقى، سأخدع الناس لتحقيق الربح.
شاهد النسخة الأصليةرد0
SerumSurfervip
· 07-20 00:40
يا إلهي، هناك خطأ آخر! سأغادر الآن~
شاهد النسخة الأصليةرد0
  • تثبيت