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

تم اكتشاف ثغرة جديدة في تجاوز السعة الصحيحة في وحدة الأمان الخاصة بلغة Move

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

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

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

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

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

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

![اكتشاف حصري من Numen Cyber لثغرة خطيرة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-6952376046c901dfae2b19d5144746b5.webp(

تظهر الثغرة في دالة join_. عندما يتجاوز طول المعلمات بالإضافة إلى طول المتغيرات المحلية 256، فإن دالة iter_locals)( التي تعيد مُكرّرًا من نوع u8 ستؤدي إلى تجاوز سعة العدد. على الرغم من أن Move لديه عملية للتحقق من عدد المتغيرات المحلية، إلا أن وحدة check bounds تتحقق فقط من المتغيرات المحلية، دون أن تشمل طول المعلمات.

![اكتشاف حصري من Numen Cyber لثغرة خطيرة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-92892f2a9dffea9f805f3a1952e82703.webp(

قد يؤدي هذا الفائض في الأعداد الصحيحة إلى هجمات رفض الخدمة (DoS). عندما يكون هناك كتلة من التعليمات البرمجية الدائرية ويستغل الفائض لتغيير حالة الكتلة، فإن خريطة locals الجديدة تختلف عن السابقة. عند تنفيذ دالة execute_block مرة أخرى، إذا كان الفهرس الذي تحتاجه التعليمات غير موجود في خريطة AbstractState locals الجديدة، فسوف يؤدي ذلك إلى DoS.

![اكتشاف حصري من Numen Cyber لثغرة عالية الخطورة جديدة في لغة move])https://img-cdn.gateio.im/webp-social/moments-1347ef8b31983109babdf8ef29270c67.webp(

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

![Numen Cyber اكتشفت حصريًا ثغرة عالية الخطورة في لغة move])https://img-cdn.gateio.im/webp-social/moments-ac937ab4f426d30a476feb32520a95b4.webp(

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

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

![اكتشاف حصري من Numen Cyber لثغرة خطيرة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-a18dcf64108d1a75b728ffe8391100f1.webp(

![Numen Cyber اكتشفت حصريًا ثغرة عالية الخطورة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-7c8fe4e4cf376ad49d729a6f80df6f08.webp(

![Numen Cyber اكتشاف حصري ثغرة عالية الخطورة في لغة move])https://img-cdn.gateio.im/webp-social/moments-c598d61833550ec5494f9a5a4ee2a760.webp(

![اكتشاف حصري من Numen Cyber ثغرة خطيرة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-12c60c225a5629f6d927982a7585fc5b.webp(

! [اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة])https://img-cdn.gateio.im/webp-social/moments-94b0c97bb9e287ed715cddb5165f129d.webp(

![تم اكتشاف ثغرة خطيرة أخرى في لغة move من قبل Numen Cyber])https://img-cdn.gateio.im/webp-social/moments-095e2b585c45a86b0a689214ca673619.webp(

![اكتشاف حصري من Numen Cyber عن ثغرة عالية الخطورة في لغة move])https://img-cdn.gateio.im/webp-social/moments-5ebaa03263f7a87edd78d146c5beadd2.webp(

![اكتشاف حصري من Numen Cyber لثغرة عالية الخطورة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-fe905356cbee596e8aba08ec14f5d508.webp(

![اكتشاف حصري من Numen Cyber لثغرة خطيرة جديدة في لغة move])https://img-cdn.gateio.im/webp-social/moments-ae25cc7d31726e2e1477e6d112b7aa75.webp(

MOVE-0.9%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • إعادة النشر
  • مشاركة
تعليق
0/400
BearMarketMonkvip
· منذ 4 س
مرة أخرى تم العبث بالأمر، هل هناك نهاية لذلك؟
شاهد النسخة الأصليةرد0
GasFeeWhisperervip
· 08-16 04:23
تحرك مرة أخرى انهار
شاهد النسخة الأصليةرد0
StopLossMastervip
· 08-16 03:33
مرة أخرى إنها حفرة حفرها أحد من جماعتنا
شاهد النسخة الأصليةرد0
LiquidationWatchervip
· 08-16 03:31
لقد اكتشفنا ثغرة مرة أخرى
شاهد النسخة الأصليةرد0
ZKProofEnthusiastvip
· 08-16 03:28
هذا الخطأ أصبح كبيراً
شاهد النسخة الأصليةرد0
ZenMinervip
· 08-16 03:08
هناك سم ، يجب على move أن يقوم بتصحيح مرة أخرى.
شاهد النسخة الأصليةرد0
  • تثبيت