اكتشف TonBit التابع لـ BitsLab مرة أخرى ثغرة رئيسية في الآلة الافتراضية TON وتلقى شكرًا من TON الرسمي

robot
إنشاء الملخص قيد التقدم

المؤلف: TonBit

مقدمة:

اكتشفت TonBit التابعة لـ BitsLab مرة أخرى ثغرة رئيسية في آلة TON الافتراضية وتلقت شكرًا من TON الرسمي: لم يتم التحقق من المؤشر الفارغ في معالجة معلمات الرسالة بواسطة تعليمات INMSGPARAM، مما قد يؤدي إلى تعطل آلة TON الافتراضية.

رابط تفاصيل إصلاح الثغرات الرسمي لـ TON وشكر TonBit:

مؤخراً، اكتشفت شركة TonBit التابعة لـ BitsLab ثغرة أمنية خطيرة في أحدث كود مصدر TVM (فرع master / TON v2025.04) - حيث أن تعليمات INMSGPARAM لم تقم بالتحقق من مؤشرات الرسائل، مما قد يؤدي إلى تعطل آلة TON الافتراضية. هذه الثغرة مخفية أيضاً في عملية الاستدعاء العميقة لـ TVM، حيث يمكن للمهاجمين من خلال بناء معلمات رسائل خاصة أن يتسببوا في استدعاء dereference لمؤشر فارغ أثناء التنفيذ، مما يؤدي إلى انقطاع التنفيذ، ويؤثر بشكل خطير على قابلية استخدام واستقرار تنفيذ العقود. المحتوى التالي يحتفظ بالتفاصيل التقنية، ليكون مرجعاً للمطورين للقيام بتحليل متعمق ووقاية.

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

الشفرة المتأثرة (الموجودة في crypto/vm/tonops.cpp) هي كما يلي:

السبب الجذري:

هذا السطر من الشيفرة

المرجع ر = الحصول على \ _param(st ، inmsgparams \ _idx).as \ _tuple() ؛

لم يتم التحقق مما إذا كانت المتغير t تساوي nullptr. إذا تم تكوين فتحة 0 في مسجل c7 كعنصر 17 ليس من نوع Tuple، فإن as_tuple() ستعيد مؤشرًا فارغًا. عندما يتم تمرير هذا المؤشر الفارغ t إلى tuple_index، سيؤدي ذلك إلى فك مرجع مؤشر فارغ، مما يتسبب في تعطل آلة افتراضية. يمكن إعادة إنتاج هذه الخطأ الجسيم بشكل مستقر في النسخة العالمية 11 (Global Version 11).

رمز POC:

لتسهيل الاختبار المحلي (لأن global_version عادةً ما يتم تكوينه بواسطة السلسلة)، قمنا بتعديل تهيئة الآلة الافتراضية في دالة run_vm_code، حيث تم فرض global_version ليكون 11:

نسخ كود PoC إلى ملف crypto/test/vm.cpp.

قم بتعديل run_vm_code بالطريقة المذكورة أعلاه، واضبط global_version على 11.

قم بتجميع وتشغيل ملف test-vm القابل للتنفيذ.

انهيار:

ستنهار الآلة الافتراضية بسبب الإشارة إلى مؤشر فارغ:

بشكل عام، تلتزم TonBit التابعة لشركة BitsLab دائمًا بمبدأ "التعمق في الأمان والكشف عن المسؤولية"، وتواصل البحث وإصلاح الثغرات الرئيسية في الكود الأساسي لآلة TON الافتراضية. من مخاطر النقل غير الذاتي لتعليمات RUNVM، إلى مشكلة dereference المؤشر الفارغ في تعليمات INMSGPARAM، قدمت TonBit بمهارة تقنية وسرعة استجابة عالية تقريرًا إلى Ton Core وساعدت في الإصلاح في أقرب وقت ممكن، مما ضمنت بشكل فعال أمان الأصول على السلسلة، وعززت أيضًا استقرار وموثوقية TVM. في المستقبل، ستواصل TonBit التعاون الوثيق مع Ton Core والمجتمع لبناء خط دفاع أمني أكثر صلابة في Web3.

حول TonBit

تعتبر TonBit العلامة التجارية الفرعية الأساسية لـ BitsLab، وهي خبيرة أمان ومبنية مبكراً في نظام TON البيئي. باعتبارها المزود الرئيسي لضمان الأمان في سلسلة كتل TON، تركز TonBit على التدقيق الشامل للأمان، بما في ذلك تدقيق لغات Tact و FunC، لضمان أن المشاريع القائمة على TON تتمتع بالسلامة والمرونة. حتى الآن، قامت TonBit بتدقيق العديد من المشاريع المعروفة بما في ذلك Catizen و Algebra و UTonic، واكتشفت العديد من الثغرات الحرجة، مما يظهر قدراتها الممتازة في مجال أمان سلسلة الكتل. بالإضافة إلى ذلك، نظمت TonBit بنجاح مسابقة TON CTF، مما جذب العديد من المشاركين وحصل على اهتمام واسع، مما عزز مكانتها كخبير أمان في نظام TON البيئي. في المستقبل، ستواصل TonBit تقديم الحماية لأمان سلسلة الكتل، وتعزيز التطور المستمر للتكنولوجيا والنظام البيئي.

شاهد النسخة الأصلية
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.
  • أعجبني
  • تعليق
  • مشاركة
تعليق
0/400
لا توجد تعليقات
  • تثبيت