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