توجد ثغرة تجاوز عدد صحيح في وحدة الأمان المستندة إلى لغة Move
في الآونة الأخيرة، اكتشف باحثو الأمان ثغرة خطيرة في تجاوز الأعداد الصحيحة أثناء تحليلهم المتعمق للغة Move. توجد هذه الثغرة في وحدة التحقق من الأمان المرجعية، وقد تؤدي إلى هجوم رفض الخدمة. ستتناول هذه المقالة بالتفصيل مبدأ هذه الثغرة وتأثيرها.
خلفية الثغرة
تقوم لغة Move بإجراء التحقق من الشيفرة قبل تنفيذ الشيفرة البايتية، بما في ذلك فحص أمان الإشارات. تنقسم هذه العملية إلى عدة خطوات، وقد وُجدت الثغرة المكتشفة في مرحلة التحقق من أمان الإشارات.
العملية الرئيسية للتحقق من الأمان هي:
تقسيم الكود إلى كتل أساسية
تحليل كل كتلة أساسية
حالة التحليل قبل وبعد الدمج
نشر النتائج إلى الكتل اللاحقة
تم استخدام بنية AbstractState لتمثيل حالة التحليل، والتي تتضمن معلومات عن locals و borrow graph.
تفاصيل الثغرات
تظهر الثغرة في دالة join_ في حالة تحليل الدمج. تستخدم هذه الدالة نوع u8 لتكرار locals، ولكن إذا تجاوز مجموع طول المعلمات وطول المتغيرات المحلية 256، فسيحدث تجاوز عددي.
بشكل محدد:
استخدم self.iter_locals() لتكرار locals في دالة join_
iter_locals() يعيد مُكرّر من نوع u8
إذا كان طول المعاملات + طول المتغيرات المحلية > 256، فإن المُكرِّر سيتجاوز الحدود
على الرغم من أن Move لديه عملية التحقق من عدد المتغيرات المحلية، إلا أنه يتحقق فقط من عدد المتغيرات المحلية، دون تضمين طول المعلمات.
استخدم أنواع الأعداد الصحيحة الأكبر مثل u16 للتكرار عبر locals
إضافة فحوصات أمان إضافية أثناء التشغيل
ملخص
توضح هذه الثغرة مرة أخرى أنه حتى اللغات المصممة بدقة قد تحتوي على مخاطر أمنية. بالنسبة للغة Move، يُنصح بإضافة الفحوصات الأمنية اللازمة في مرحلة التشغيل، بالإضافة إلى مرحلة التحقق. سيواصل الباحثون الأمنيون تحليل لغة Move بعمق لاكتشاف المزيد من القضايا المحتملة.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
ثغرة في تجاوز سعة الأعداد في وحدة الأمان المرجعية للغة Move قد تؤدي إلى رفض الخدمة من عقدة
توجد ثغرة تجاوز عدد صحيح في وحدة الأمان المستندة إلى لغة Move
في الآونة الأخيرة، اكتشف باحثو الأمان ثغرة خطيرة في تجاوز الأعداد الصحيحة أثناء تحليلهم المتعمق للغة Move. توجد هذه الثغرة في وحدة التحقق من الأمان المرجعية، وقد تؤدي إلى هجوم رفض الخدمة. ستتناول هذه المقالة بالتفصيل مبدأ هذه الثغرة وتأثيرها.
خلفية الثغرة
تقوم لغة Move بإجراء التحقق من الشيفرة قبل تنفيذ الشيفرة البايتية، بما في ذلك فحص أمان الإشارات. تنقسم هذه العملية إلى عدة خطوات، وقد وُجدت الثغرة المكتشفة في مرحلة التحقق من أمان الإشارات.
العملية الرئيسية للتحقق من الأمان هي:
تم استخدام بنية AbstractState لتمثيل حالة التحليل، والتي تتضمن معلومات عن locals و borrow graph.
تفاصيل الثغرات
تظهر الثغرة في دالة join_ في حالة تحليل الدمج. تستخدم هذه الدالة نوع u8 لتكرار locals، ولكن إذا تجاوز مجموع طول المعلمات وطول المتغيرات المحلية 256، فسيحدث تجاوز عددي.
بشكل محدد:
على الرغم من أن Move لديه عملية التحقق من عدد المتغيرات المحلية، إلا أنه يتحقق فقط من عدد المتغيرات المحلية، دون تضمين طول المعلمات.
! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة
! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة
استغلال الثغرات
يمكن للمهاجمين إنشاء كتلة كود دائرية، واستغلال الفائض لتغيير حالة الكتلة:
قد يؤدي هذا إلى رفض خدمة العقد.
! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة
تأثير الثغرات
قد يؤدي هذا الثغرة إلى:
اقتراحات الإصلاح
ملخص
توضح هذه الثغرة مرة أخرى أنه حتى اللغات المصممة بدقة قد تحتوي على مخاطر أمنية. بالنسبة للغة Move، يُنصح بإضافة الفحوصات الأمنية اللازمة في مرحلة التشغيل، بالإضافة إلى مرحلة التحقق. سيواصل الباحثون الأمنيون تحليل لغة Move بعمق لاكتشاف المزيد من القضايا المحتملة.