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