كشف ثغرة تجاوز سعة الأعداد في لغة Move: المخاطر في التحقق من bytecode

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

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

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

عملية التحقق من بايت كود لغة Move

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

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

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

أمان الإشارة في Move

تدعم Move نوعين من المراجع: المراجع الثابتة (&) والمراجع المتغيرة (&mut). ستقوم وحدة أمان المراجع بفحص تعليمات بايت كود لكل كتلة أساسية في الدالة، للتحقق من أن جميع عمليات الإشارة قانونية.

تستخدم عملية التحقق هيكل AbstractState لتمثيل الحالة، والذي يتضمن مخطط الاقتراض والمحلّيات. أثناء التحقق، تتم مقارنة الحالة قبل وبعد التنفيذ، ويتم دمج تحديث حالة الكتلة.

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

تحليل الثغرات

تظهر الثغرة في دالة join_. تُستخدم هذه الدالة لدمج الحالة قبل وبعد التنفيذ، وتحديث خريطة locals ورسم الاقتراض. المشكلة تكمن في أن مُكرّر locals يُرجع نوع u8، وعندما يتجاوز مجموع طول المعاملات وطول المتغيرات المحلية 256، سيحدث تجاوز.

على الرغم من أن Move لديها عملية للتحقق من عدد المتغيرات المحلية، إلا أنها تتحقق فقط من عدد المتغيرات المحلية ولا تشمل طول المعلمات.

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

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

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

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

استغلال الثغرات

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

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

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

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

عرض PoC

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

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

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

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

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

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

ملخص

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

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

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 7
  • مشاركة
تعليق
0/400
RektButStillHerevip
· 07-11 04:35
لقد حدث تدفق مرة أخرى، تاه تاه
شاهد النسخة الأصليةرد0
consensus_failurevip
· 07-11 01:01
هناك بالفعل هذه المشكلة
شاهد النسخة الأصليةرد0
SchrodingersPapervip
· 07-09 07:32
هل تم إرسال move مرة أخرى؟ لقد فقدنا الأمر، فقدنا الأمر.
شاهد النسخة الأصليةرد0
DevChivevip
· 07-08 16:28
菜鸟被 خداع الناس لتحقيق الربح
شاهد النسخة الأصليةرد0
ProposalManiacvip
· 07-08 06:09
قلت من قبل أن التحقق من المعلمات لا يمكن أن يكتب فقط في الوثائق
شاهد النسخة الأصليةرد0
DegenWhisperervip
· 07-08 06:07
يبدو أن الفائض مخيف قليلاً، أليس كذلك؟
شاهد النسخة الأصليةرد0
ApeWithAPlanvip
· 07-08 05:48
حدث شيء آخر في move宁
شاهد النسخة الأصليةرد0
  • تثبيت