اكتشاف ثغرة تجاوز سعة الأعداد الصحيحة في وحدة أمان الاستعانة بلغة Move
مؤخراً، كشفت دراسة معمقة عن ثغرة جديدة في تجاوز السعة الصحيحة في لغة Move. هذه الثغرة موجودة في عملية التحقق من الأمان المرجعي، وتتعلق ببعض المفاهيم والآليات الأساسية في لغة Move.
تقوم لغة Move بالتحقق من الشيفرة قبل تنفيذ بايت كودها، وتنقسم إلى أربع خطوات. ظهرت هذه الثغرة المكتشفة حديثًا في خطوة reference_safety. هذه الخطوة مسؤولة عن التحقق من أمان المراجع، بما في ذلك فحص ما إذا كانت هناك مراجع معلقة، وأمان الوصول إلى المراجع القابلة للتغيير، وأمان الوصول إلى المراجع في التخزين العالمي.
الجوهر الأساسي للتحقق من الأمان هو تحليل الكتل الأساسية في كل دالة. الكتلة الأساسية هي تسلسل من التعليمات البرمجية لا يحتوي على تعليمات فرعية باستثناء المدخلات والمخرجات. تتعرف لغة Move على الكتل الأساسية من خلال استعراض التعليمات البرمجية للبايت، والبحث عن جميع التعليمات الفرعية وتعليمات الحلقة.
أثناء عملية التحقق، سيقوم النظام بالحفاظ على هيكل AbstractState، الذي يحتوي على معلومات عن الرسم البياني للاقتراض والمعلومات المحلية، لضمان أمان المراجع المستخدمة في الدالة. ستقوم عملية التحقق بتنفيذ كود الكتلة الأساسية، وتوليد الحالة بعد التنفيذ، ثم دمج الحالة قبل وبعد التنفيذ، وتحديث حالة الكتلة ونشرها إلى الكتل التالية.
يظهر الخلل في دالة join_. عندما يتجاوز طول معلمات الدالة وطول المتغيرات المحلية 256، فإن استخدام نوع u8 لتمثيل المتغيرات المحلية يؤدي إلى تجاوز سعة الأعداد. على الرغم من أن لغة Move تحتوي على آلية للتحقق من عدد المتغيرات المحلية، إلا أنها تتحقق فقط من عدد المتغيرات المحلية، دون أن تشمل طول المعلمات.
هذه الثغرة في تجاوز السعة قد تؤدي إلى هجمات رفض الخدمة. يمكن للمهاجم بناء كتلة كود دائرية، واستغلال التجاوز لتغيير حالة الكتلة. عند تنفيذ الكتلة الأساسية مرة أخرى، إذا كان الفهرس الذي تحتاج التعليمات للوصول إليه غير موجود في خريطة المحليات الجديدة، فسوف يؤدي ذلك إلى تعطل النظام.
لإظهار هذه الثغرة، قدم الباحثون إثبات مفهوم (PoC). من خلال ضبط معلمات معينة وعدد متغيرات محلية، يمكن تحفيز تجاوز عدد صحيح، مما يؤدي إلى حدوث panic في النظام.
تظهر هذه الثغرة أنه حتى اللغات المصممة بدقة قد تحتوي على مخاطر أمنية. إنها تبرز أهمية تدقيق الشفرات، والحاجة إلى أخذ المزيد من حالات الحدود في الاعتبار عند تصميم اللغات. بالنسبة للغة Move، يُنصح بزيادة المزيد من الفحوصات الأمنية أثناء وقت التشغيل، بدلاً من الاعتماد فقط على آليات الأمان في مرحلة التحقق.
مع الانتشار الواسع للغة Move في مجال Web3، فإن البحث المتعمق واكتشاف هذه الثغرات المحتملة أمر بالغ الأهمية لتعزيز أمان النظام البيئي بأكمله. يجب على المطورين والباحثين في مجال الأمن أن يظلوا في حالة تأهب، ويراقبوا ويعملوا على تحسين أداء أمان لغة Move باستمرار.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 14
أعجبني
14
9
إعادة النشر
مشاركة
تعليق
0/400
GateUser-aa7df71e
· 08-19 18:48
مشروع آخر سيفشل، الانفجار سيؤدي إلى الانهيار
شاهد النسخة الأصليةرد0
TokenVelocity
· 08-17 11:11
عملت لمدة عامين لإعالة الجميع وأفنيت كل ما لدي، وأنا وحدي أتحمل العبء، 3000 يوم من حلم ريادة الأعمال انتهى.
شاهد النسخة الأصليةرد0
GateUser-0717ab66
· 08-16 22:28
من يتجاوز حدودهم هو sb
شاهد النسخة الأصليةرد0
ForumLurker
· 08-16 22:27
هل تحاول "move" القيام بشيء آخر؟
شاهد النسخة الأصليةرد0
TokenTaxonomist
· 08-16 22:23
إحصائيًا، يعتبر نهاية تطورية أخرى غير ناجحة للتحرك... لا أتفاجأ بصراحة
اكتشفت وحدة الأمان في لغة Move ثغرة في تجاوز سعة الأعداد الصحيحة، مما قد يؤدي إلى هجوم بناء أو انهيار النظام.
اكتشاف ثغرة تجاوز سعة الأعداد الصحيحة في وحدة أمان الاستعانة بلغة Move
مؤخراً، كشفت دراسة معمقة عن ثغرة جديدة في تجاوز السعة الصحيحة في لغة Move. هذه الثغرة موجودة في عملية التحقق من الأمان المرجعي، وتتعلق ببعض المفاهيم والآليات الأساسية في لغة Move.
تقوم لغة Move بالتحقق من الشيفرة قبل تنفيذ بايت كودها، وتنقسم إلى أربع خطوات. ظهرت هذه الثغرة المكتشفة حديثًا في خطوة reference_safety. هذه الخطوة مسؤولة عن التحقق من أمان المراجع، بما في ذلك فحص ما إذا كانت هناك مراجع معلقة، وأمان الوصول إلى المراجع القابلة للتغيير، وأمان الوصول إلى المراجع في التخزين العالمي.
الجوهر الأساسي للتحقق من الأمان هو تحليل الكتل الأساسية في كل دالة. الكتلة الأساسية هي تسلسل من التعليمات البرمجية لا يحتوي على تعليمات فرعية باستثناء المدخلات والمخرجات. تتعرف لغة Move على الكتل الأساسية من خلال استعراض التعليمات البرمجية للبايت، والبحث عن جميع التعليمات الفرعية وتعليمات الحلقة.
أثناء عملية التحقق، سيقوم النظام بالحفاظ على هيكل AbstractState، الذي يحتوي على معلومات عن الرسم البياني للاقتراض والمعلومات المحلية، لضمان أمان المراجع المستخدمة في الدالة. ستقوم عملية التحقق بتنفيذ كود الكتلة الأساسية، وتوليد الحالة بعد التنفيذ، ثم دمج الحالة قبل وبعد التنفيذ، وتحديث حالة الكتلة ونشرها إلى الكتل التالية.
يظهر الخلل في دالة join_. عندما يتجاوز طول معلمات الدالة وطول المتغيرات المحلية 256، فإن استخدام نوع u8 لتمثيل المتغيرات المحلية يؤدي إلى تجاوز سعة الأعداد. على الرغم من أن لغة Move تحتوي على آلية للتحقق من عدد المتغيرات المحلية، إلا أنها تتحقق فقط من عدد المتغيرات المحلية، دون أن تشمل طول المعلمات.
هذه الثغرة في تجاوز السعة قد تؤدي إلى هجمات رفض الخدمة. يمكن للمهاجم بناء كتلة كود دائرية، واستغلال التجاوز لتغيير حالة الكتلة. عند تنفيذ الكتلة الأساسية مرة أخرى، إذا كان الفهرس الذي تحتاج التعليمات للوصول إليه غير موجود في خريطة المحليات الجديدة، فسوف يؤدي ذلك إلى تعطل النظام.
لإظهار هذه الثغرة، قدم الباحثون إثبات مفهوم (PoC). من خلال ضبط معلمات معينة وعدد متغيرات محلية، يمكن تحفيز تجاوز عدد صحيح، مما يؤدي إلى حدوث panic في النظام.
! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة
! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة
تظهر هذه الثغرة أنه حتى اللغات المصممة بدقة قد تحتوي على مخاطر أمنية. إنها تبرز أهمية تدقيق الشفرات، والحاجة إلى أخذ المزيد من حالات الحدود في الاعتبار عند تصميم اللغات. بالنسبة للغة Move، يُنصح بزيادة المزيد من الفحوصات الأمنية أثناء وقت التشغيل، بدلاً من الاعتماد فقط على آليات الأمان في مرحلة التحقق.
مع الانتشار الواسع للغة Move في مجال Web3، فإن البحث المتعمق واكتشاف هذه الثغرات المحتملة أمر بالغ الأهمية لتعزيز أمان النظام البيئي بأكمله. يجب على المطورين والباحثين في مجال الأمن أن يظلوا في حالة تأهب، ويراقبوا ويعملوا على تحسين أداء أمان لغة Move باستمرار.