تم اكتشاف ثغرة جديدة في تجاوز السعة الصحيحة في لغة Move
مؤخراً، تم اكتشاف ثغرة جديدة في تجاوز السعة الصحيحة في لغة Move. توجد هذه الثغرة في عملية التحقق من الشيفرة خلال مرحلة التحقق من الأمان المرجعي، مما قد يؤدي إلى هجمات تعطيل الخدمة.
تقوم لغة Move بالتحقق من الكود قبل تنفيذ البايت كود، وتنقسم إلى أربع خطوات. حدثت هذه الثغرة في خطوة التحقق من الأمان (reference_safety). تركز فحوصات الأمان على التحقق مما إذا كانت هناك مراجع عالقة في الكود، وما إذا كان الوصول إلى المراجع المتغيرة آمنًا، وما إذا كان الوصول إلى مراجع التخزين العالمية آمنًا، وغيرها من المشكلات.
أثناء عملية التحقق، سيتم تحليل كل كتلة أساسية. الكتلة الأساسية تشير إلى تسلسل التعليمات البرمجية الذي لا يحتوي على تعليمات فرعية باستثناء المدخلات والمخرجات. يقوم Move بالتنقل عبر الشيفرة البايتية، بحثًا عن تعليمات الفرع والحلقة لتحديد الكتل الأساسية.
سوف يقوم نموذج فحص الأمان بالتحقق من تعليمات بايت الكتل الأساسية في الوظيفة، لتحديد ما إذا كانت عمليات الإشارة قانونية. تشمل العملية الرئيسية: تنفيذ كود الكتل الأساسية، توليد حالة بعد التنفيذ، دمج حالة ما قبل وما بعد التنفيذ لتحديث حالة الكتلة، ونقلها إلى الكتل اللاحقة.
تحدث الثغرة خلال عملية دمج الحالة. عندما يتجاوز مجموع عدد معلمات الدالة وعدد المتغيرات المحلية 256، يحدث تجاوز في عدد صحيح بسبب استخدام نوع u8 للتخزين. هذا يؤدي إلى الوصول إلى متغيرات محلية غير موجودة في التنفيذ اللاحق، مما يتسبب في حدوث panic.
يمكن للمهاجمين إنشاء كتلة أساسية دائرية، واستغلال هذا الفائض لتغيير حالة الكتلة. عند التنفيذ مرة أخرى، فإن الوصول إلى فهرس متغير محلي غير موجود سيؤدي إلى رفض الخدمة.
تُظهر هذه الثغرة أنه حتى لغة Move المصممة بدقة يمكن أن تحتوي على ثغرات أمنية يمكن تجاوزها. يُنصح مصممو لغة Move بإضافة المزيد من الفحوصات أثناء التشغيل لمنع حدوث حالات غير متوقعة مماثلة. يجب أيضًا تعزيز أبحاث أمان لغة Move في المستقبل.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
وجود ثغرة في فحص الأمان لاقتباسات لغة Move تؤدي إلى تجاوز عدد صحيح قد يؤدي إلى هجوم حجب الخدمة
تم اكتشاف ثغرة جديدة في تجاوز السعة الصحيحة في لغة Move
مؤخراً، تم اكتشاف ثغرة جديدة في تجاوز السعة الصحيحة في لغة Move. توجد هذه الثغرة في عملية التحقق من الشيفرة خلال مرحلة التحقق من الأمان المرجعي، مما قد يؤدي إلى هجمات تعطيل الخدمة.
تقوم لغة Move بالتحقق من الكود قبل تنفيذ البايت كود، وتنقسم إلى أربع خطوات. حدثت هذه الثغرة في خطوة التحقق من الأمان (reference_safety). تركز فحوصات الأمان على التحقق مما إذا كانت هناك مراجع عالقة في الكود، وما إذا كان الوصول إلى المراجع المتغيرة آمنًا، وما إذا كان الوصول إلى مراجع التخزين العالمية آمنًا، وغيرها من المشكلات.
أثناء عملية التحقق، سيتم تحليل كل كتلة أساسية. الكتلة الأساسية تشير إلى تسلسل التعليمات البرمجية الذي لا يحتوي على تعليمات فرعية باستثناء المدخلات والمخرجات. يقوم Move بالتنقل عبر الشيفرة البايتية، بحثًا عن تعليمات الفرع والحلقة لتحديد الكتل الأساسية.
سوف يقوم نموذج فحص الأمان بالتحقق من تعليمات بايت الكتل الأساسية في الوظيفة، لتحديد ما إذا كانت عمليات الإشارة قانونية. تشمل العملية الرئيسية: تنفيذ كود الكتل الأساسية، توليد حالة بعد التنفيذ، دمج حالة ما قبل وما بعد التنفيذ لتحديث حالة الكتلة، ونقلها إلى الكتل اللاحقة.
تحدث الثغرة خلال عملية دمج الحالة. عندما يتجاوز مجموع عدد معلمات الدالة وعدد المتغيرات المحلية 256، يحدث تجاوز في عدد صحيح بسبب استخدام نوع u8 للتخزين. هذا يؤدي إلى الوصول إلى متغيرات محلية غير موجودة في التنفيذ اللاحق، مما يتسبب في حدوث panic.
يمكن للمهاجمين إنشاء كتلة أساسية دائرية، واستغلال هذا الفائض لتغيير حالة الكتلة. عند التنفيذ مرة أخرى، فإن الوصول إلى فهرس متغير محلي غير موجود سيؤدي إلى رفض الخدمة.
تُظهر هذه الثغرة أنه حتى لغة Move المصممة بدقة يمكن أن تحتوي على ثغرات أمنية يمكن تجاوزها. يُنصح مصممو لغة Move بإضافة المزيد من الفحوصات أثناء التشغيل لمنع حدوث حالات غير متوقعة مماثلة. يجب أيضًا تعزيز أبحاث أمان لغة Move في المستقبل.