وجود ثغرة تجاوز عدد صحيح في وحدة الأمان لغة Move قد تؤدي إلى هجوم DoS

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

تحليل ثغرة تجاوز عدد صحيح في وحدة الأمان الخاصة بلغة Move

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

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

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

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

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

يدعم لغة Move نوعين من الإشارات: الإشارة غير القابلة للتغيير (&) والإشارة القابلة للتغيير (&mut). تُستخدم الإشارة غير القابلة للتغيير لقراءة البيانات، بينما تُستخدم الإشارة القابلة للتغيير لتعديل البيانات. تساعد هذه التصميمات في تحسين أمان الشيفرة وقراءتها.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

شاهد النسخة الأصلية
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • أعجبني
  • 4
  • مشاركة
تعليق
0/400
LadderToolGuyvip
· 07-06 19:13
هناك العديد من أخطاء overflow حقًا
شاهد النسخة الأصليةرد0
MetaverseMigrantvip
· 07-06 17:57
مرة أخرى أشعر أنني عدت إلى عام 2021 عندما كنت أختبر Solana.
شاهد النسخة الأصليةرد0
ETHReserveBankvip
· 07-06 17:45
move لم يعد جذاباً
شاهد النسخة الأصليةرد0
RuntimeErrorvip
· 07-06 17:32
كنت قد اكتشفت المشكلة في وقت مبكر
شاهد النسخة الأصليةرد0
  • تثبيت