تم اكتشاف ثغرة أساسية في نواة TON VM في TonBit التابعة لشركة BitsLab: تفصيل أسباب الثغرة وتدابير التخفيف

تحليل مفصل لتفاصيل التقنية والأسباب الجوهرية وطرق الهجوم المحتملة على الثغرات الأساسية الموجودة في TON الآلة الافتراضية، بالإضافة إلى عرض الحل الفعال الذي قدمه فريق TonBit.

في الآونة الأخيرة، تم إجراء ترقية أمان كبيرة لنظام الآلة الافتراضية في شبكة TON. نجح فريق TonBit الأمني التابع لشركة BitsLab في اكتشاف ومساعدة وإصلاح ثغرة أساسية قد تؤدي إلى استنزاف موارد الآلة الافتراضية في TON. يستغل هذا الثغرة آلية التكرار في معالجة التضمين المتداخل، ويمكن استغلالها بواسطة عقود خبيثة مما يؤدي إلى تعطل النظام وعدم استقرار الشبكة.

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

في هذا التقرير الأمني المفصل أدناه، سنقوم بتحليل أسباب هذا الثغرة بتفصيل وتفاصيل التقنية والحلول. يصف التقرير بالتفصيل كيفية استغلال الثغرة لبناء سلسلة تكرارية لاستنزاف الموارد باستخدام العمق المضمن Continuation، بالإضافة إلى كيفية استنزاف العقود الخبيثة لمساحة الذاكرة الرئيسية من خلال توسيع الكومة. في الوقت نفسه، سنقدم أيضًا كيف ساعد فريق TonBit في حل هذه المشكلة بشكل كامل من خلال إزالة العيوب التصميمية في سلسلة التكرار واستخدام آلية التكرار التعاونية بدلاً منها. هذا الإصلاح ليس فقط يعزز بشكل كبير من استقرار شبكة TON، ولكنه يوفر أيضًا مرجعًا مهمًا لأمان البنية الأساسية لصناعة البلوكشين.

دراسة الحالة: ثغرة DoS في TON VM والتدابير ذات الصلة للتخفيف

مقدمة

يصف هذا التقرير ثغرة في خدمة TONالآلة الافتراضية (DOS) وتدابير التخفيف المتخذة لحل هذه المشكلة. يُعزى هذا الخلل إلى الطريقة التي تعالج بها الآلة الافتراضية الجدول الزمني Continuation أثناء تنفيذ العقود. يُسمح بهذا الخلل للعقود الخبيثة بتمرير Continuation وتضمينه بطريقة معينة في العمق، مما يؤدي إلى تشغيل التكرار العميق أثناء التقييم وإلى استنفاد مساحة الكومة الرئيسية للمضيف وتوقف الآلة الافتراضية عن العمل. للتخفيف من هذه المشكلة، تم تعديل معالجة Continuation وتدفق التحكم في الآلة الافتراضية. الآن، لم تعد الآلة الافتراضية تُجري استدعاء أطراف التسلسل من خلال سلسلة Continuation، بل تتفاعل بنشاط مع السلسلة. يضمن هذا النهج استخدام مساحة الكومة الرئيسية بشكل ثابت فقط، مما يمنع تجاوز الكومة.

ملخص

وفقًا للوثائق الرسمية، TON VM هو الآلة الافتراضية القائمة على الكومة، التي تعتمد نمط تمرير الاستمرارية (CPS، Continuation-Passing Style) كآلية تحكمها، وتستخدم في تدفقات العمل الداخلية والعقود الذكية. تكون سجلات تدفق التحكم متاحة للعقود الذكية، مما يوفر المرونة.

Continuation في TVM يمكن تقسيمها في نظرية ثلاث فئات:

OrdCont(أي vmc_std)، يحتوي على قطعة TON ASM التي تحتاج إلى تنفيذها، وهو كائن من المستوى الأول في TVM. يمكن إنشاء العقود بشكل صريح في وقت التشغيل وتمريرها لتحقيق أي تدفق تحكم.

الاستمرارية غير العادية (أستمراريات غير عادية) ، التي تحتوي عادةً على OrdCont كمكون ، والتي يتم إنشاؤها باستخدام بادئة تكرار صريحة وعمليات ضمنية خاصة ، وتستخدم للتعامل مع آلية تدفق التحكم المقابلة.

ArgContExt إضافي، يقوم بتغليف Continuation أخرى لحفظ بيانات التحكم.

أثناء تنفيذ العقد، تدخل الآلة الافتراضية الحلقة الرئيسية وتقوم بفك تشفير حرف واحد من قطعة العقد وتعيين العملية المناسبة إلى المعالج المناسب. يعود المعالج العادي فورًا بعد تنفيذ العملية المناسبة.

في الإرتباط النسبي ، ستستخدم تعليمة التكرار استمرارية المقدمة كمكون لإنشاء استمرارية غير عادية والقفز إلى استمرارية غير عادية في السياق المناسب. تنفيذ المنطق في استمرارية غير عادية نفسها عند القفز وتقفز إلى مكون معين وفقًا لشرط معين. على سبيل المثال ، يمكننا توضيح هذه العملية في الشكل 1 عند استخدام تعليمة WHILE (باستثناء الخروج المحتمل).

الشكل 1: منطق استمرار غير عادي

السبب الجذري

في الإصدارات الظاهرة للآلة الافتراضية، تؤدي هذه القفزات إلى استدعاء الذيل الديناميكي المتتالي، مما يتطلب من الستاك الرئيسي الحفاظ على إطار الستاك في كل قفزة (انظر الشكل 2).

على سبيل المثال ، باستخدام WhileCont كنموذج ، يتم حذف الأجزاء الأخرى للحفاظ على البساطة.

الشكل 2: الانتقال المتكرر ثلاث مرات للتعمق في التضمين فخ

من الناحية المثالية ، لن يشكل هذا مشكلة ، حيث يتم تمثيل المكون عادة على أنه OrdCont ، الذي يحفظ قفزه ببساطة السياق الحالي ثم يوجه الآلة الافتراضية لتنفيذ الجزء الذي يحمله ، والتنفيذ قبل أجزاء العقد المتبقية ، ولا يقدم المزيد من العودية. ومع ذلك ، فإن الاستمراريات غير التافهة مصممة نظريا للسماح بالوصول إلى مكوناتها عبر سجل cc (c0) في TVM (أي فرع المجموعة \ _c0 أعلاه). ونتيجة لذلك، يمكن للعقود إساءة استخدام هذه الميزة لتنفيذ تكرار العمق (الموضح لاحقا). من الواضح والأسهل بكثير التخلص من العودية مباشرة أثناء القفز إلى استمرار غير طبيعي بدلا من تغيير تنفيذ هذه الميزة العامة.

من خلال استخدام الاستمرارية غير العادية المحصلة مرارًا وتكرارًا لبناء استمرارية غير عادية من الدرجة العليا، يمكن إنشاء تداخل من العمق عند التكرار. هذه التداخلات من العمق قد تنفد من الذاكرة التخزينية المتاحة للنظام الرئيسي أثناء التقييم، مما يؤدي إلى إصدار إشارة SIGSEGV من جانب نظام التشغيل وإيقاف عملية الآلة الظاهرية.

تقدم الشكل 3 تحقق مفهوم التضمين الاختباري (PoC).

الشكل 3: عملية الإدراج

خلال كل تكرار، تم توسيع الجسم بشكل متزايد بمعرف WhileCont {chkcond = true}. من خلال تنفيذ cc المولودة والمحفوظة من التكرار السابق، سيتم الحصول على مكدس الاستدعاءات الشبيه بهذا:

يمكن ملاحظة أن مساحة الكومة تعتمد خطيًا على مستوى التداخل (أي عدد مرات التكرار)، مما يشير إلى إمكانية نفاد مساحة الكومة.

حول الاستخدام في البيئة العملية

في سلسلة كتلية فعلية، يجعل تقييد رسوم الوقود بناء العقود الخبيثة أمرًا صعبًا للغاية. نظرًا لتعقيدية تضمين العملية الخطية (تصميم TVM يمنع بشكل فعال البناء الأرخص من خلال الإشارة الذاتية)، فإن تطوير عقود خبيثة عملية صالحة عمليًا ليست سهلة. على وجه التحديد، ستولد تضمينة لطبقة واحدة سلسلة استدعاء، تستهلك ثلاثة إطارات للمكدس الأساسي في ملف ثنائي أثناء التصحيح (320 بايت)، بينما تستهلك اثنان في ملف ثنائي عند النشر (256 بايت، حيث يتم تضمين اثنين الأخيرين داخل استدعاء واحد). بالنسبة للعقدة التحقق التي تعمل على نظام التشغيل POSIX الحديث، يبلغ حجم الكومة الافتراضي 8 ميغابايت، وهذا يكفي لدعم أكثر من 30،000 طبقة تضمين في ملف ثنائي عند النشر. على الرغم من أنه من الممكن لا يزال بناء عقد يمكن أن يستنزف مساحة الكومة، إلا أن هذا أصعب بكثير من المثال في القسم السابق.

تخفيف الإجراءات

تم تعديل هذا التصحيح لسلوك القفز في حالة تضمين Continuation. يمكننا رؤية تغيير في توقيع القفز Continuation.

على سبيل المثال، يتم حذف الأجزاء الأخرى لبساطة الفكرة حتى يتم الوصول إلى النقطة المحددة

لا تستدعي VmState::jump بعد الآن للانتقال إلى الاستمرار التالي، وهذا يعني تنفيذ القفز المتكرر عبر كل استمرار وانتظار انتشار قيمة العودة إلى الوراء. الآن، يقوم القفز بالاستمرار بفحص استمرار المستوى التالي فقط، ثم يعيد التحكم إلى الآلة الافتراضية.

تتعاون الآلة الافتراضية عن طريق تكرار تحليل كل مستوى من التواصل حتى يتم العثور على NullRef، مما يشير إلى أن تحليل السلسلة قد اكتمل (مثل التنفيذ في OrdCont أو ExuQuitCont). خلال هذه العملية التكرارية، يتم تخصيص قفزة تواصل واحدة فقط على الكومة الرئيسية، مما يضمن استخدام الكومة بشكل ثابت.

الاستنتاج

بالنسبة للخدمات التي تتطلب توفرًا عاليًا، قد يكون الاستخدام المتكرر محتملًا لناقل الهجوم. عند التعامل مع المنطق المحدد بواسطة المستخدم، قد يكون من الصعب فرض إنهاء التكرار. تُظهر هذه الثغرة في خدمة الإنكار المرتبطة بالهجمات حالة حدوث سوء استخدام غير متوقع للوظائف العادية في ظروف محدودة للموارد (أو ظروف محدودة أخرى). إذا كانت التكرارات تعتمد على إدخال المستخدم، فقد يحدث مشكلة مماثلة وهذا أمر شائع جدًا في البرمجة الإجرائية للآلة الافتراضية.

تحليل مفصل للثغرات الأساسية الموجودة في الأجهزة الافتراضية TON DOS وتفاصيل تقنية وأسبابها الجذرية وطرق الهجوم المحتملة ، وفي الوقت نفسه يظهر الحل الفعال المقدم من فريق TonBit. من خلال ضبط آلية الانتقال العودية للأجهزة الافتراضية إلى معالجة التكرار ، نجح TonBit في تقديم حل لإصلاح الثغرات ، وساعد في إصلاح هذه الثغرة الأساسية التي قد تؤدي إلى شلل الشبكة ، وقدم ضمانًا أكثر استقرارًا لبيئة الأمان لنظام TON. هذه الحادثة تظهر ليس فقط تجميع TonBit العميق في مجال أمان التكنولوجيا الأساسية لسلسلة الكتل ، ولكن أيضًا دوره المهم كمزود رسمي لضمان الأمان (SAP) لـ TON.

كشريك أمان للبنية الأساسية TON ، تعمل TonBit دائمًا على حماية استقرار شبكة الكتلة وأمان أصول المستخدمين. من اكتشاف الثغرات إلى تصميم الحلول ، استنادًا إلى قوتها التقنية وفهمها العميق لتطور الكتلة ، قام TonBit بوضع أسس قوية لتطوير شبكة TON على المدى الطويل. في الوقت نفسه ، يستمر فريق TonBit في العمل في مجالات هامة مثل الهندسة الأمنية للشبكة وحماية بيانات المستخدم وتعزيز أمان تطبيقات الكتلة. في المستقبل ، ستستمر TonBit في دفع تقدم التكنولوجيا الأمنية من خلال الابتكار ، وتوفير الدعم والضمان المستمر لتطوير البيئة البيئية TON وصناعة الكتلة بأكملها. أثبت اكتشاف الثغرات والمساعدة في عمليات الإصلاح اعترافًا مرتفعًا من قبل TON الرسمية ، وهو يعزز مكانة TonBit في مجال الأمان للكتلة ويظهر التزامها القوي بتعزيز البيئة اللامركزية.

TonBit الموقع الرسمي:

الحساب الرسمي لـ TonBit على تويتر:

تلغرام:

لينكد إن:

مدونة: #blogs

Telegram طلب التدقيق الرجاء الاتصال: @starchou

شاهد النسخة الأصلية
المحتوى هو للمرجعية فقط، وليس دعوة أو عرضًا. لا يتم تقديم أي مشورة استثمارية أو ضريبية أو قانونية. للمزيد من الإفصاحات حول المخاطر، يُرجى الاطلاع على إخلاء المسؤولية.
  • أعجبني
  • تعليق
  • مشاركة
تعليق
0/400
لا توجد تعليقات
  • تثبيت