تم اكتشاف ثغرة جديدة في تجاوز السعة للعدد الصحيح في آلية الأمان لاستشهاد لغة Move
مؤخراً، اكتشف باحثو الأمان ثغرة جديدة في تجاوز العدد الصحيح أثناء تحليلهم العميق لـ Aptos MoveEVM. توجد هذه الثغرة في عملية التحقق من أمان الإشارة للغة Move، وتحديداً في خطوة reference_safety.
تقوم لغة Move بالتحقق من وحدات الشيفرة قبل تنفيذ بايت كود، وتنقسم إلى 4 خطوات. يعتبر التحقق من الأمان المرجعي أحد المراحل الهامة، ويستخدم بشكل رئيسي لضمان عدم وجود مراجع معلقة، وأن الوصول إلى المراجع المتغيرة آمن، وأن الوصول إلى مراجع التخزين العالمي آمن، وما إلى ذلك.
الجوهر الأساسي للتحقق من الأمان هو تحليل الكتل الأساسية في كل دالة. الكتلة الأساسية تشير إلى تسلسل التعليمات البرمجية الذي لا يحتوي على تعليمات فرعية باستثناء المدخلات والمخرجات. يقوم Move بتحديد الكتل الأساسية عن طريق استعراض التعليمات البرمجية للبايت، والبحث عن جميع التعليمات الفرعية وتعليمات الحلقات.
تستخدم عملية التحقق هيكل AbstractState لتمثيل الحالة، الذي يتضمن جزءين هما borrow graph و locals. أثناء التحقق، سيتم تنفيذ كود كتلة الأساس لتوليد حالة ما بعد، ثم دمجها مع حالة ما قبل لتحديث حالة الكتلة، ونشرها إلى الكتل اللاحقة. تشبه هذه العملية فكرة Sea of Nodes في V8 turbofan.
تظهر الثغرة في دالة join_. عندما يكون مجموع طول معلمات الدالة وطول المتغيرات المحلية أكبر من 256، فإن استخدام نوع u8 لتكرار المتغيرات المحلية سيؤدي إلى تجاوز سعة العدد. على الرغم من أن Move لديه عملية للتحقق من عدد المتغيرات المحلية، إلا أنه يتحقق فقط من المتغيرات المحلية دون تضمين طول المعلمات.
من خلال استغلال هذه الثغرة، يمكن للمهاجم إنشاء كتلة كود حلقية، واستغلال التجاوز لتغيير حالة الكتلة. عند التنفيذ مرة أخرى، إذا كانت الفهارس التي تحتاج التعليمات للوصول إليها غير موجودة في خريطة المحليين الجديدة، فسوف يؤدي ذلك إلى هجوم منع الخدمة (DoS).
تظهر هذه الثغرة مرة أخرى أنه حتى اللغات التي تركز على الأمان مثل Move قد تواجه مشاكل. يُوصى مصممي لغة Move بزيادة الفحوصات أثناء التشغيل، وليس الاعتماد فقط على فحوصات الأمان خلال مرحلة التحقق. كما أنه يُذكّر المطورين بأهمية تدقيق الشيفرة.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 12
أعجبني
12
5
مشاركة
تعليق
0/400
BoredWatcher
· منذ 15 س
هذا الخطأ سخيف للغاية، كيف لا يزال بهذه السذاجة
شاهد النسخة الأصليةرد0
WalletInspector
· منذ 15 س
اه، استخدام rust أفضل من استخدام move
شاهد النسخة الأصليةرد0
MemecoinTrader
· منذ 15 س
هههه، مستوى آخر يتعرض للهزيمة... تسرب كلاسيكي لمشكلة تجاوز السعة
اكتشاف ثغرة في تجاوز السعة العددية في آلية الأمان المعتمدة على لغة Move تؤثر على AptosMoveEVM
تم اكتشاف ثغرة جديدة في تجاوز السعة للعدد الصحيح في آلية الأمان لاستشهاد لغة Move
مؤخراً، اكتشف باحثو الأمان ثغرة جديدة في تجاوز العدد الصحيح أثناء تحليلهم العميق لـ Aptos MoveEVM. توجد هذه الثغرة في عملية التحقق من أمان الإشارة للغة Move، وتحديداً في خطوة reference_safety.
تقوم لغة Move بالتحقق من وحدات الشيفرة قبل تنفيذ بايت كود، وتنقسم إلى 4 خطوات. يعتبر التحقق من الأمان المرجعي أحد المراحل الهامة، ويستخدم بشكل رئيسي لضمان عدم وجود مراجع معلقة، وأن الوصول إلى المراجع المتغيرة آمن، وأن الوصول إلى مراجع التخزين العالمي آمن، وما إلى ذلك.
الجوهر الأساسي للتحقق من الأمان هو تحليل الكتل الأساسية في كل دالة. الكتلة الأساسية تشير إلى تسلسل التعليمات البرمجية الذي لا يحتوي على تعليمات فرعية باستثناء المدخلات والمخرجات. يقوم Move بتحديد الكتل الأساسية عن طريق استعراض التعليمات البرمجية للبايت، والبحث عن جميع التعليمات الفرعية وتعليمات الحلقات.
تستخدم عملية التحقق هيكل AbstractState لتمثيل الحالة، الذي يتضمن جزءين هما borrow graph و locals. أثناء التحقق، سيتم تنفيذ كود كتلة الأساس لتوليد حالة ما بعد، ثم دمجها مع حالة ما قبل لتحديث حالة الكتلة، ونشرها إلى الكتل اللاحقة. تشبه هذه العملية فكرة Sea of Nodes في V8 turbofan.
تظهر الثغرة في دالة join_. عندما يكون مجموع طول معلمات الدالة وطول المتغيرات المحلية أكبر من 256، فإن استخدام نوع u8 لتكرار المتغيرات المحلية سيؤدي إلى تجاوز سعة العدد. على الرغم من أن Move لديه عملية للتحقق من عدد المتغيرات المحلية، إلا أنه يتحقق فقط من المتغيرات المحلية دون تضمين طول المعلمات.
! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة
! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة
من خلال استغلال هذه الثغرة، يمكن للمهاجم إنشاء كتلة كود حلقية، واستغلال التجاوز لتغيير حالة الكتلة. عند التنفيذ مرة أخرى، إذا كانت الفهارس التي تحتاج التعليمات للوصول إليها غير موجودة في خريطة المحليين الجديدة، فسوف يؤدي ذلك إلى هجوم منع الخدمة (DoS).
! اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة
تظهر هذه الثغرة مرة أخرى أنه حتى اللغات التي تركز على الأمان مثل Move قد تواجه مشاكل. يُوصى مصممي لغة Move بزيادة الفحوصات أثناء التشغيل، وليس الاعتماد فقط على فحوصات الأمان خلال مرحلة التحقق. كما أنه يُذكّر المطورين بأهمية تدقيق الشيفرة.