لغة Move تظهر ثغرة خطيرة مرة أخرى: تجاوز السعة العددية يمكن أن يؤدي إلى انهيار العقدة
في الآونة الأخيرة، اكتشف باحثو الأمن ثغرة جديدة في تجاوز السعة العددية أثناء تحليلهم المتعمق لـ Aptos Moveevm. توجد هذه الثغرة في عملية التحقق من أمان الإشارة في لغة Move، وقد تؤدي إلى انهيار العقدة.
تقوم لغة Move بالتحقق من الشفرة قبل تنفيذ بايت كود، وتنقسم إلى 4 خطوات. تظهر هذه الثغرة في خطوة reference_safety. تُستخدم هذه الخطوة بشكل رئيسي للتحقق من أمان الإشارات، بما في ذلك فحص ما إذا كانت هناك إشارات معلقة، وما إذا كانت الوصولات إلى الإشارات القابلة للتغيير آمنة.
ستقوم عملية التحقق بعبور كل كتلة أساسية وتحليلها. الكتلة الأساسية هي تسلسل من التعليمات البرمجية التي لا تحتوي على تعليمات فرعية باستثناء المدخلات والمخرجات. تحدد لغة Move الكتل الأساسية من خلال البحث عن تعليمات الفرع والدورة.
عند التحقق من أمان الإحالة، سيتم الحفاظ على بنية AbstractState، التي تحتوي على معلومات الرسم البياني للإعارة والمعلومات المحلية. ستقوم عملية التحقق بتنفيذ كود الكتلة الأساسية، وتوليد الحالة بعد التنفيذ، ثم دمجها مع الحالة السابقة، وتحديث حالة الكتلة ونشرها إلى الكتل اللاحقة.
ظهرت الثغرة في دالة join_. تُستخدم هذه الدالة لدمج الحالة قبل وبعد التنفيذ، وتحديث المتغيرات المحلية ورسم الاقتراض. عندما يكون مجموع طول المعلمات وطول المتغيرات المحلية أكبر من 256، يؤدي استخدام نوع u8 لتكرار المتغيرات المحلية إلى تجاوز عدد صحيح.
يمكن استخدام هذا الفائض لتغيير حالة الكتلة الأساسية. في وجود كود دائري، قد يؤدي تنفيذ نفس الكتلة الأساسية عدة مرات إلى الوصول إلى فهارس محلية غير موجودة، مما يتسبب في حدوث حالة طوارئ تؤدي إلى انهيار العقدة.
قدّم الباحثون رمز PoC، من خلال ضبط معلمات معينة وعدد المتغيرات المحلية، مما أدى إلى حدوث تجاوز عددي، مما تسبب في حدوث panic.
هذا الثغرة تكشف أنه حتى اللغات التي تركز على الأمان مثل Move قد تحتوي على ثغرات. يُنصح مصممو لغة Move بإضافة المزيد من الفحوصات الأمنية أثناء التشغيل، وليس فقط الاعتماد على فحوصات مرحلة التحقق. كما يُظهر أيضًا أهمية تدقيق الشيفرة.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
ثغرة تجاوز عدد صحيح في لغة Move: المخاطر المرتبطة بالتحقق من الأمان
لغة Move تظهر ثغرة خطيرة مرة أخرى: تجاوز السعة العددية يمكن أن يؤدي إلى انهيار العقدة
في الآونة الأخيرة، اكتشف باحثو الأمن ثغرة جديدة في تجاوز السعة العددية أثناء تحليلهم المتعمق لـ Aptos Moveevm. توجد هذه الثغرة في عملية التحقق من أمان الإشارة في لغة Move، وقد تؤدي إلى انهيار العقدة.
تقوم لغة Move بالتحقق من الشفرة قبل تنفيذ بايت كود، وتنقسم إلى 4 خطوات. تظهر هذه الثغرة في خطوة reference_safety. تُستخدم هذه الخطوة بشكل رئيسي للتحقق من أمان الإشارات، بما في ذلك فحص ما إذا كانت هناك إشارات معلقة، وما إذا كانت الوصولات إلى الإشارات القابلة للتغيير آمنة.
ستقوم عملية التحقق بعبور كل كتلة أساسية وتحليلها. الكتلة الأساسية هي تسلسل من التعليمات البرمجية التي لا تحتوي على تعليمات فرعية باستثناء المدخلات والمخرجات. تحدد لغة Move الكتل الأساسية من خلال البحث عن تعليمات الفرع والدورة.
عند التحقق من أمان الإحالة، سيتم الحفاظ على بنية AbstractState، التي تحتوي على معلومات الرسم البياني للإعارة والمعلومات المحلية. ستقوم عملية التحقق بتنفيذ كود الكتلة الأساسية، وتوليد الحالة بعد التنفيذ، ثم دمجها مع الحالة السابقة، وتحديث حالة الكتلة ونشرها إلى الكتل اللاحقة.
! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة
ظهرت الثغرة في دالة join_. تُستخدم هذه الدالة لدمج الحالة قبل وبعد التنفيذ، وتحديث المتغيرات المحلية ورسم الاقتراض. عندما يكون مجموع طول المعلمات وطول المتغيرات المحلية أكبر من 256، يؤدي استخدام نوع u8 لتكرار المتغيرات المحلية إلى تجاوز عدد صحيح.
! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة
! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة
يمكن استخدام هذا الفائض لتغيير حالة الكتلة الأساسية. في وجود كود دائري، قد يؤدي تنفيذ نفس الكتلة الأساسية عدة مرات إلى الوصول إلى فهارس محلية غير موجودة، مما يتسبب في حدوث حالة طوارئ تؤدي إلى انهيار العقدة.
قدّم الباحثون رمز PoC، من خلال ضبط معلمات معينة وعدد المتغيرات المحلية، مما أدى إلى حدوث تجاوز عددي، مما تسبب في حدوث panic.
هذا الثغرة تكشف أنه حتى اللغات التي تركز على الأمان مثل Move قد تحتوي على ثغرات. يُنصح مصممو لغة Move بإضافة المزيد من الفحوصات الأمنية أثناء التشغيل، وليس فقط الاعتماد على فحوصات مرحلة التحقق. كما يُظهر أيضًا أهمية تدقيق الشيفرة.