تم اكتشاف ثغرة جديدة في تجاوز السعة الصحيحة في وحدة أمان لغة Move
مؤخراً، أثناء البحث المتعمق في لغة Move، تم اكتشاف ثغرة جديدة في تجاوز السعة العددية. توجد هذه الثغرة في وحدة التحقق من أمان الإرجاع، وعملية تفعيلها مثيرة للاهتمام. ستقدم هذه المقالة تحليلاً عميقاً لهذه الثغرة، بالإضافة إلى تقديم المعرفة الأساسية المتعلقة بلغة Move.
تقوم لغة Move بالتحقق من وحدات الكود قبل تنفيذ التعليمات البرمجية، وتنقسم عملية التحقق الكاملة إلى 4 خطوات. تم اكتشاف الثغرة الحالية في خطوة reference_safety.
تتحمل وحدة التحقق من الأمان المسؤولية الرئيسية عن فحص ما إذا كانت هناك مراجع عالقة، وما إذا كان الوصول إلى المراجع القابلة للتغيير آمنًا، وما إذا كان الوصول إلى المراجع المخزنة عالميًا آمنًا، وما إلى ذلك. تبدأ عملية التحقق من دالة analyze_function، حيث يتم التحقق من كل كتلة أساسية.
في لغة Move، يُشير الكتلة الأساسية إلى تسلسل التعليمات البرمجية الذي لا يحتوي على تعليمات فرعية باستثناء المدخلات والمخرجات. يقوم النظام بتحديد الكتلة الأساسية من خلال استعراض التعليمات البرمجية، والبحث عن جميع تعليمات الفروع وتسلسل تعليمات الحلقات.
تدعم لغة Move نوعين من الإشارات: الإشارة الثابتة ( و الإشارة المتغيرة )&mut (. ستقوم وحدة أمان الإشارات بفحص تعليمات بايت الكتل الأساسية في الدالة، لتحديد ما إذا كانت جميع عمليات الإشارة قانونية. تستخدم عملية التحقق هيكل AbstractState، الذي يحتوي على مكونين: رسم الاقتراض والمحليين، لضمان أمان الإشارات المستخدمة في الدالة.
![اكتشاف حصرية من Numen Cyber ثغرة خطيرة جديدة في لغة move])https://img-cdn.gateio.im/webp-social/moments-6952376046c901dfae2b19d5144746b5.webp(
خلال عملية التحقق، سيقوم النظام بتنفيذ كود الكتلة الأساسية لإنشاء حالة ما بعد، ثم دمج حالة ما قبل وحالة ما بعد لتحديث حالة الكتلة. إذا حدث تغيير في الحالة وكانت هناك حلقة، فسيتم تنفيذ الكتلة الأساسية مرة أخرى حتى تصبح حالة ما بعد مساوية لحالة ما قبل أو يحدث خطأ.
![اكتشاف حصري من Numen Cyber ثغرة عالية الخطورة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-92892f2a9dffea9f805f3a1952e82703.webp(
تظهر الثغرة في دالة join_. عندما يتجاوز طول المعلمات مع طول المتغيرات المحلية 256، فإن استخدام نوع u8 لتكرار المتغيرات المحلية يؤدي إلى تجاوز عدد صحيح. على الرغم من أن لغة Move تحتوي على عملية للتحقق من عدد المتغيرات المحلية، إلا أنها تتحقق فقط من عدد المتغيرات المحلية، دون تضمين طول المعلمات.
![اكتشاف حصري من Numen Cyber ثغرة عالية الخطورة في لغة move])https://img-cdn.gateio.im/webp-social/moments-1347ef8b31983109babdf8ef29270c67.webp(
يمكن أن يؤدي تجاوز العدد الصحيح هذا إلى هجوم حجب الخدمة. يمكن للمهاجم إنشاء كتلة شفرة دائرية، مستفيدًا من التجاوز لتغيير حالة الكتلة. عند تنفيذ دالة execute_block مرة أخرى، إذا كان الفهرس الذي تحتاج التعليمات للوصول إليه غير موجود في خريطة AbstractState locals الجديدة، فسوف يتسبب ذلك في تعطل النظام.
![اكتشاف حصري من Numen Cyber لثغرة خطيرة جديدة في لغة move])https://img-cdn.gateio.im/webp-social/moments-ac937ab4f426d30a476feb32520a95b4.webp(
لإظهار هذه الثغرة، يمكننا بناء كتلة أساسية تحتوي على تعليمات فرعية غير مشروطة. من خلال تعيين المعلمات المناسبة وعدد المتغيرات المحلية، يمكن أن يتجاوز طول خريطة المتغيرات المحلية 8. في التنفيذ الثاني، سيؤدي محاولة الوصول إلى offset غير موجود إلى حدوث panic.
![اكتشاف حصري من Numen Cyber ثغرة عالية الخطورة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-a18dcf64108d1a75b728ffe8391100f1.webp(
! [اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة])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(
![Numen Cyber اكتشفت حصريًا ثغرة عالية الخطورة أخرى في لغة move])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(
تذكرنا هذه الثغرة بأنه حتى اللغات المصممة بعناية قد تكون لديها نقاط ضعف أمنية. بالنسبة للغة Move، يُنصح بإضافة المزيد من رموز الفحص أثناء التشغيل لمنع حدوث حالات غير متوقعة. حاليًا، يتم إجراء الفحوصات الأمنية بشكل رئيسي في مرحلة التحقق، ولكن إذا تم تجاوز التحقق، فقد يؤدي ذلك إلى مشاكل أكثر خطورة.
بصفتنا رواد في أبحاث أمان لغة Move، سنواصل استكشاف القضايا الأمنية ذات الصلة بعمق، من أجل المساهمة في التنمية الصحية لنظام Move البيئي.
![اكتشاف حصري من Numen Cyber عن ثغرة خطيرة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-ae25cc7d31726e2e1477e6d112b7aa75.webp(
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
اكتشف نموذج Move ثغرة جديدة في تجاوز الأعداد الصحيحة في وحدة الأمان.
تم اكتشاف ثغرة جديدة في تجاوز السعة الصحيحة في وحدة أمان لغة Move
مؤخراً، أثناء البحث المتعمق في لغة Move، تم اكتشاف ثغرة جديدة في تجاوز السعة العددية. توجد هذه الثغرة في وحدة التحقق من أمان الإرجاع، وعملية تفعيلها مثيرة للاهتمام. ستقدم هذه المقالة تحليلاً عميقاً لهذه الثغرة، بالإضافة إلى تقديم المعرفة الأساسية المتعلقة بلغة Move.
تقوم لغة Move بالتحقق من وحدات الكود قبل تنفيذ التعليمات البرمجية، وتنقسم عملية التحقق الكاملة إلى 4 خطوات. تم اكتشاف الثغرة الحالية في خطوة reference_safety.
تتحمل وحدة التحقق من الأمان المسؤولية الرئيسية عن فحص ما إذا كانت هناك مراجع عالقة، وما إذا كان الوصول إلى المراجع القابلة للتغيير آمنًا، وما إذا كان الوصول إلى المراجع المخزنة عالميًا آمنًا، وما إلى ذلك. تبدأ عملية التحقق من دالة analyze_function، حيث يتم التحقق من كل كتلة أساسية.
في لغة Move، يُشير الكتلة الأساسية إلى تسلسل التعليمات البرمجية الذي لا يحتوي على تعليمات فرعية باستثناء المدخلات والمخرجات. يقوم النظام بتحديد الكتلة الأساسية من خلال استعراض التعليمات البرمجية، والبحث عن جميع تعليمات الفروع وتسلسل تعليمات الحلقات.
تدعم لغة Move نوعين من الإشارات: الإشارة الثابتة ( و الإشارة المتغيرة )&mut (. ستقوم وحدة أمان الإشارات بفحص تعليمات بايت الكتل الأساسية في الدالة، لتحديد ما إذا كانت جميع عمليات الإشارة قانونية. تستخدم عملية التحقق هيكل AbstractState، الذي يحتوي على مكونين: رسم الاقتراض والمحليين، لضمان أمان الإشارات المستخدمة في الدالة.
![اكتشاف حصرية من Numen Cyber ثغرة خطيرة جديدة في لغة move])https://img-cdn.gateio.im/webp-social/moments-6952376046c901dfae2b19d5144746b5.webp(
خلال عملية التحقق، سيقوم النظام بتنفيذ كود الكتلة الأساسية لإنشاء حالة ما بعد، ثم دمج حالة ما قبل وحالة ما بعد لتحديث حالة الكتلة. إذا حدث تغيير في الحالة وكانت هناك حلقة، فسيتم تنفيذ الكتلة الأساسية مرة أخرى حتى تصبح حالة ما بعد مساوية لحالة ما قبل أو يحدث خطأ.
![اكتشاف حصري من Numen Cyber ثغرة عالية الخطورة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-92892f2a9dffea9f805f3a1952e82703.webp(
تظهر الثغرة في دالة join_. عندما يتجاوز طول المعلمات مع طول المتغيرات المحلية 256، فإن استخدام نوع u8 لتكرار المتغيرات المحلية يؤدي إلى تجاوز عدد صحيح. على الرغم من أن لغة Move تحتوي على عملية للتحقق من عدد المتغيرات المحلية، إلا أنها تتحقق فقط من عدد المتغيرات المحلية، دون تضمين طول المعلمات.
![اكتشاف حصري من Numen Cyber ثغرة عالية الخطورة في لغة move])https://img-cdn.gateio.im/webp-social/moments-1347ef8b31983109babdf8ef29270c67.webp(
يمكن أن يؤدي تجاوز العدد الصحيح هذا إلى هجوم حجب الخدمة. يمكن للمهاجم إنشاء كتلة شفرة دائرية، مستفيدًا من التجاوز لتغيير حالة الكتلة. عند تنفيذ دالة execute_block مرة أخرى، إذا كان الفهرس الذي تحتاج التعليمات للوصول إليه غير موجود في خريطة AbstractState locals الجديدة، فسوف يتسبب ذلك في تعطل النظام.
![اكتشاف حصري من Numen Cyber لثغرة خطيرة جديدة في لغة move])https://img-cdn.gateio.im/webp-social/moments-ac937ab4f426d30a476feb32520a95b4.webp(
لإظهار هذه الثغرة، يمكننا بناء كتلة أساسية تحتوي على تعليمات فرعية غير مشروطة. من خلال تعيين المعلمات المناسبة وعدد المتغيرات المحلية، يمكن أن يتجاوز طول خريطة المتغيرات المحلية 8. في التنفيذ الثاني، سيؤدي محاولة الوصول إلى offset غير موجود إلى حدوث panic.
![اكتشاف حصري من Numen Cyber ثغرة عالية الخطورة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-a18dcf64108d1a75b728ffe8391100f1.webp(
! [اكتشفت Numen Cyber حصريا ثغرة أمنية أخرى عالية الخطورة في لغة الحركة])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(
![Numen Cyber اكتشفت حصريًا ثغرة عالية الخطورة أخرى في لغة move])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(
تذكرنا هذه الثغرة بأنه حتى اللغات المصممة بعناية قد تكون لديها نقاط ضعف أمنية. بالنسبة للغة Move، يُنصح بإضافة المزيد من رموز الفحص أثناء التشغيل لمنع حدوث حالات غير متوقعة. حاليًا، يتم إجراء الفحوصات الأمنية بشكل رئيسي في مرحلة التحقق، ولكن إذا تم تجاوز التحقق، فقد يؤدي ذلك إلى مشاكل أكثر خطورة.
بصفتنا رواد في أبحاث أمان لغة Move، سنواصل استكشاف القضايا الأمنية ذات الصلة بعمق، من أجل المساهمة في التنمية الصحية لنظام Move البيئي.
![اكتشاف حصري من Numen Cyber عن ثغرة خطيرة أخرى في لغة move])https://img-cdn.gateio.im/webp-social/moments-ae25cc7d31726e2e1477e6d112b7aa75.webp(