لا تزال هجمات إعادة الدخول تمثل تحديًا. وتركز أساليب الدفاع الحالية بشكل أساسي على مستوى الكود المصدري للبروتوكول ، والذي لا يسري إلا قبل أن يدخل العقد في حالة وقت التشغيل
تعد "حماية وقت التشغيل" تكملة مهمة لأمن DeFi. وهي تهدف إلى "حماية نتائج التنفيذ" والتأكد من أن تنفيذ البروتوكول يتوافق مع تصميمه المتوقع
لا يدعم تصميم EVM "حماية وقت التشغيل" ، لأن العقد الذكي لا يمكنه الوصول إلى معلومات السياق الكاملة لحالة وقت التشغيل
يستكشف Artela نموذج طبقة تنفيذ EVM + Extension ، ويعزز طبقة التنفيذ للقضاء على هجمات إعادة الدخول
تنفذ Artela امتدادات "حماية وقت التشغيل" على السلسلة من خلال Aspect Programming
نعرض خطوة بخطوة كيفية منع هجمات العودة على عقد Curve من خلال Aspect
لماذا لا تزال هجمات إعادة الدخول تمثل تحديًا على الرغم من ضوابط المخاطر الحالية
على الرغم من أن هجمات إعادة الدخول هي مشكلة معروفة وقد تم وضع العديد من ضوابط المخاطر ، إلا أن الحوادث الأمنية التي تنطوي على مثل هذه الهجمات استمرت في الحدوث على مدار العامين الماضيين:
Curve Finance Attack (يوليو 2023) - 60 مليون دولار تعرض Curve لهجوم عودة بسبب خلل في التجميع في لغة برمجة العقد Vyper.
هجوم بروتوكول المنشأ (تشرين الثاني (نوفمبر) 2022) - تعرّض مشروع الدولار الأصلي لمشروع Stablecoin بقيمة 7 ملايين دولار لهجوم عودة.
هجوم بروتوكول صفارات الإنذار (سبتمبر 2021) - 3.5 مليون دولار ، وتعرض تجمع AMM لهجوم عودة.
هجوم Cream Finance (أغسطس 2021) - 18.8 مليون دولار ، استغل المهاجمون نقطة ضعف في إعادة الدخول للاقتراض الثانوي.
في الوقت الحالي ، ينصب تركيز منع هجمات إعادة الدخول على مستوى الكود المصدري للعقود الذكية. وتشمل الإجراءات دمج ReentrancyGuard من OpenZeppelin وإجراء عمليات تدقيق أمنية على رموز منطق العقد لتجنب مخاطر الأمان المحددة مسبقًا.
يهدف هذا النهج ، المعروف باسم حل "الصندوق الأبيض" ، إلى تجنب الثغرات الأمنية على مستوى الكود المصدري لتقليل الأخطاء المنطقية. ومع ذلك ، فإن التحدي الرئيسي هو عدم القدرة على الدفاع ضد الأخطار الخفية غير المعروفة.
تعتبر "ترجمة" عقد من التعليمات البرمجية المصدر إلى وقت التشغيل الفعلي عملية صعبة. قد تجلب كل خطوة مشاكل غير متوقعة للمطورين ، وقد لا يغطي رمز مصدر العقد نفسه بالكامل جميع المواقف المحتملة. في حالة Curve ، حتى إذا كانت شفرة مصدر البروتوكول صحيحة ، فقد تظل هناك اختلافات بين التشغيل النهائي والتصميم المقصود للبروتوكول بسبب مشكلات المترجم.
لا يكفي الاعتماد على أمان البروتوكول في كود المصدر ومستوى الترجمة. حتى إذا بدا أن كود المصدر لا تشوبه شائبة ، فلا يزال من الممكن أن تظهر الثغرات الأمنية بشكل غير متوقع بسبب مشاكل المترجم.
نحن بحاجة إلى حماية وقت التشغيل
على عكس تدابير التحكم في المخاطر الحالية التي تتركز على مستوى كود مصدر البروتوكول وتسري قبل التنفيذ ، فإن حماية وقت التشغيل تتضمن مطوري البروتوكول كتابة قواعد وعمليات حماية وقت التشغيل للتعامل مع ظروف وقت التشغيل غير المتوقعة. هذا يسهل التقييم في الوقت الحقيقي والاستجابة لنتائج التنفيذ في وقت التشغيل.
تعد الحماية في وقت التشغيل أمرًا بالغ الأهمية في تعزيز أمان DeFi وهي إضافة مهمة لتدابير الأمان الحالية. من خلال حماية البروتوكول بطريقة "الصندوق الأسود" ، فإنه يعزز الأمن من خلال التأكد من أن نتيجة التشغيل النهائية متوافقة مع التصميم المقصود للبروتوكول ، دون التدخل المباشر في تنفيذ كود العقد.
تحديات تنفيذ حماية وقت التشغيل
لسوء الحظ ، لا يدعم تصميم EVM حماية وقت التشغيل على السلسلة لأن العقود الذكية لا يمكنها الوصول إلى سياق وقت التشغيل الكامل.
كيف تتغلب على هذا التحدي؟ نعتقد أن المتطلبات الأساسية التالية ضرورية:
وحدة مخصصة توفر الوصول إلى جميع المعلومات عبر العقود الذكية ، بما في ذلك سياق المعاملة بالكامل.
يتم الحصول على التفويض اللازم من العقد الذكي ، مما يمنح الوحدة الحق في إعادة المعاملات حسب الحاجة.
تأكد من أن وظيفة الوحدة سارية المفعول بعد تنفيذ العقد الذكي وقبل إرسال الحالة.
يواجه EVM حاليًا قيودًا في مواجهة التحديات المذكورة أعلاه ولا يمكنه استيعاب المزيد من الابتكارات. في ظل نموذج blockchain المعياري ، تحتاج طبقة التنفيذ إلى استكشاف الاختراق المتمثل في تجاوز EVM.
فكرة Artela هي امتداد أصلي لـ EVM + ، من خلال بناء طبقة الامتداد الأصلية لـ WASM من EVM لتحقيق تجاوز EVM.
مقدمة البرمجة
أطلقنا Aspect Programming ، وهو إطار عمل برمجة لـ Artela blockchain يدعم التوسع الأصلي على blockchain.
Aspect عبارة عن وحدة امتداد أصلية قابلة للبرمجة ، تُستخدم لدمج الوظائف المخصصة ديناميكيًا في blockchain في وقت التشغيل ، كمكمل معياري للعقود الذكية ، وتعزيز الوظائف على السلسلة.
تتمثل ميزة Aspect في أنه يمكنه الوصول إلى واجهة برمجة التطبيقات (API) على مستوى النظام لطبقة blockchain الأساسية وإضافة منطق الامتداد في كل نقطة انضمام في دورة حياة المعاملة. يمكن أن تربط العقود الذكية جوانب محددة لتشغيل وظائف موسعة. عندما تستدعي المعاملة عقدًا ذكيًا ، تتم معالجة المعاملة أيضًا من خلال الجانب المرتبط بالعقد.
كيف تنفذ Aspect Programming حماية وقت التشغيل
يمكن لـ Aspect تسجيل حالة التنفيذ لكل استدعاء دالة ومنع إعادة الدخول أثناء تنفيذ وظيفة رد الاتصال. عند حدوث مكالمة إعادة دخول أثناء تنفيذ وظيفة رد الاتصال ، تكتشف Aspect المعاملة وتتراجع عنها على الفور ، مما يمنع المهاجمين من استغلال نقاط ضعف إعادة الدخول. من خلال هذا النهج ، تقضي Aspect بشكل فعال على هجمات العودة ، مما يضمن أمان واستقرار العقود الذكية.
تنفذ Aspect الخصائص الرئيسية لحماية وقت التشغيل:
يمكن تشغيلها بعد تنفيذ العقد الذكي وقبل تقديم الحالة: يمكن ضبط وحدات Aspect للتفعيل بعد تنفيذ العقد الذكي ولكن قبل إرسال الحالة.
الوصول الكامل إلى سياق المعاملة: يمكن لـ Aspect الوصول إلى سياق المعاملة الكامل ، بما في ذلك معلومات المعاملة بالكامل (الطرق والمعلمات وما إلى ذلك) ، ومكدس الاستدعاءات (جميع استدعاءات العقود الداخلية أثناء التنفيذ) ، وتغييرات سياق الحالة ، وجميع الأحداث التي تم بدء المعاملات بها.
إمكانية استدعاء النظام: يمكن لـ Aspect إجراء مكالمات النظام وبدء عمليات استرجاع المعاملات عند الضرورة.
الإلزام والتفويض بالعقود الذكية: يمكن ربط العقود الذكية بـ Aspect ومنحها الإذن بالمشاركة في معالجة المعاملات.
تنفيذ جانب لحماية إعادة الدخول
في هذا الفصل ، نناقش كيفية تنفيذ حماية وقت تشغيل Aspect على السلسلة.
يمكن نشر جانب "نية حماية العقد" الفعلي في نقطة الانضمام لـ "preContractCall" و "postContractCall" لمنع هجمات إعادة الدخول.
preContractCall: تم تشغيله قبل تنفيذ المكالمة عبر العقد
postContractCall: يتم تشغيله بعد تنفيذ المكالمة عبر العقد
لحماية إعادة الدخول ، هدفنا هو منع إعادة الدخول إلى العقد حتى اكتمال المكالمة. باستخدام Aspect ، يمكننا تحقيق ذلك عن طريق إضافة منطق محدد في Pointcuts في دورة حياة المعاملة.
في نقطة الاختصار "preContractCall" ، تراقب Aspect مجموعة مكالمات العقد. إذا كان هناك أي مكالمات مكررة في مكدس المكالمات (مما يعني عودة غير متوقعة في مكالمتنا المغلقة) ، فإن الجانب سوف يستعيد المكالمة.
نشر عقد المنحنى ومنع هجمات إعادة الدخول
لقد كتبنا عقدًا وهميًا من Curve وقمنا بصياغة هجوم إعادة الدخول لإعادة إنتاج هذه العملية بطريقة أكثر قابلية للفهم. كود العقد كالتالي:
يمكن ملاحظة أن كلاً من إضافة \ _ السيولة وإزالة \ _ السيولة للعقد أعلاه محمي بواسطة نفس قفل قفل إعادة الدخول ، مما يعني أنه إذا كانت حماية إعادة الدخول تعمل بشكل طبيعي ، فلا يمكن إعادة إدخال الوظيفة المحمية عن طريق التغيير القفل (على سبيل المثال ، في إزالة \ _ إضافة مكالمات السيولة \ _ السيولة).
قم بتجميع العقد أعلاه مع برنامج التحويل البرمجي vyper 0.2.15 أو 0.2.16 أو 0.3.0 (عرفت هذه الإصدارات مشكلات حماية إعادة الدخول).
نقوم بعد ذلك بنشر عقد الضحية أعلاه ومهاجمته بالعقد التالي:
لمحاكاة هجوم فعلي ، تحاول طريقة الهجوم لهذا العقد إعادة إدخال إضافة \ _ سيولة من طريقة الإزالة \ _ السيولة من خلال وظيفتها الاحتياطية. في حالة حدوث إعادة الدخول بالفعل ، يمكن ملاحظة في الإيصال أنه تم تسجيل حدث AddL Liquidity قبل حدث RemoveL Liquidity.
لنستخدم الآن Aspect لحماية العقد تحت الهجوم. قبل القيام بما يلي ، يرجى إكمال الخطوات التالية:
نشر Aspect
اربط عقد الضحية مع شركة Aspect
إذا لم تكن على دراية بعمليات Aspect ، يمكنك مراجعة دليل المطور الخاص بنا أولاً.
بعد القيام بما سبق ، دعونا نحاول الآن استدعاء طريقة الهجوم مرة أخرى للتحقق مما إذا كانت العملية ستنجح.
من الصورة المتحركة (يمكنك عرض الرابط الأصلي في نهاية المقالة) ، يمكننا أن نرى أنه تم التراجع عن المعاملة المُعادة ، مما يعني أن Aspect الخاص بنا يحمي عقد الضحية بنجاح من هجمات إعادة الدخول.
ختاماً
يوضح الهجوم الأخير على Curve مرة أخرى أنه لا يوجد بروتوكول آمن تمامًا بنسبة 100٪. لا يكفي التركيز على الأمن في مصدر البروتوكول ومستويات الترجمة. حتى إذا بدا أن كود المصدر لا تشوبه شائبة ، فلا يزال من الممكن أن تظهر الثغرات الأمنية بشكل غير متوقع بسبب مشاكل المترجم.
لتعزيز أمان DeFi ، تصبح حماية وقت التشغيل أمرًا بالغ الأهمية. من خلال حماية البروتوكول بطريقة "الصندوق الأسود" ، والتأكد من أن تنفيذ البروتوكول يتماشى مع التصميم المقصود منه ، يمكن أن يمنع بشكل فعال هجمات إعادة الدخول في وقت التشغيل.
قمنا بتقسيم عقد المنحنى وقمنا بمحاكاة هجوم إعادة الدخول الأخير بشكل كامل ، وأعدنا إنتاج العملية برمتها بطريقة أكثر قابلية للفهم. باستخدام البرمجة الجانبية كنهج جديد لحماية وقت التشغيل على السلسلة ، نعرض خطوة بخطوة كيفية حماية عقود الضحايا مع الجوانب. هدفنا هو المساعدة في استئصال هجمات إعادة الدخول التي قد تعاني منها بروتوكولات DeFi مثل Curve ، وبالتالي تعزيز الأمن عبر مساحة DeFi بأكملها.
باستخدام Aspect Programming ، لا يمكن للمطورين تحقيق حماية وقت التشغيل على السلسلة في مساحة الأمان فحسب ، بل يمكنهم أيضًا تمكين حالات الاستخدام المبتكرة غير المسبوقة مثل النوايا و JIT والأتمتة على السلسلة. بالإضافة إلى ذلك ، فإن هذا الإطار العام المستند إلى Cosmos SDK لن يدعم فقط بلوكشين Artela ، ولكنه يدعم أيضًا سلاسل الكتل الأخرى لبناء امتدادات أصلية بناءً على طبقات التنفيذ الخاصة بها.
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تدرك الحماية وقت التشغيل حماية التحكم في المخاطر على سلسلة DeFi
المؤلف: مدونة Artela الصينية ، متوسطة # الخلاصة
لا تزال هجمات إعادة الدخول تمثل تحديًا. وتركز أساليب الدفاع الحالية بشكل أساسي على مستوى الكود المصدري للبروتوكول ، والذي لا يسري إلا قبل أن يدخل العقد في حالة وقت التشغيل
تعد "حماية وقت التشغيل" تكملة مهمة لأمن DeFi. وهي تهدف إلى "حماية نتائج التنفيذ" والتأكد من أن تنفيذ البروتوكول يتوافق مع تصميمه المتوقع
لا يدعم تصميم EVM "حماية وقت التشغيل" ، لأن العقد الذكي لا يمكنه الوصول إلى معلومات السياق الكاملة لحالة وقت التشغيل
يستكشف Artela نموذج طبقة تنفيذ EVM + Extension ، ويعزز طبقة التنفيذ للقضاء على هجمات إعادة الدخول
تنفذ Artela امتدادات "حماية وقت التشغيل" على السلسلة من خلال Aspect Programming
نعرض خطوة بخطوة كيفية منع هجمات العودة على عقد Curve من خلال Aspect
لماذا لا تزال هجمات إعادة الدخول تمثل تحديًا على الرغم من ضوابط المخاطر الحالية
على الرغم من أن هجمات إعادة الدخول هي مشكلة معروفة وقد تم وضع العديد من ضوابط المخاطر ، إلا أن الحوادث الأمنية التي تنطوي على مثل هذه الهجمات استمرت في الحدوث على مدار العامين الماضيين:
Curve Finance Attack (يوليو 2023) - 60 مليون دولار تعرض Curve لهجوم عودة بسبب خلل في التجميع في لغة برمجة العقد Vyper.
هجوم بروتوكول المنشأ (تشرين الثاني (نوفمبر) 2022) - تعرّض مشروع الدولار الأصلي لمشروع Stablecoin بقيمة 7 ملايين دولار لهجوم عودة.
هجوم بروتوكول صفارات الإنذار (سبتمبر 2021) - 3.5 مليون دولار ، وتعرض تجمع AMM لهجوم عودة.
هجوم Cream Finance (أغسطس 2021) - 18.8 مليون دولار ، استغل المهاجمون نقطة ضعف في إعادة الدخول للاقتراض الثانوي.
في الوقت الحالي ، ينصب تركيز منع هجمات إعادة الدخول على مستوى الكود المصدري للعقود الذكية. وتشمل الإجراءات دمج ReentrancyGuard من OpenZeppelin وإجراء عمليات تدقيق أمنية على رموز منطق العقد لتجنب مخاطر الأمان المحددة مسبقًا.
يهدف هذا النهج ، المعروف باسم حل "الصندوق الأبيض" ، إلى تجنب الثغرات الأمنية على مستوى الكود المصدري لتقليل الأخطاء المنطقية. ومع ذلك ، فإن التحدي الرئيسي هو عدم القدرة على الدفاع ضد الأخطار الخفية غير المعروفة.
تعتبر "ترجمة" عقد من التعليمات البرمجية المصدر إلى وقت التشغيل الفعلي عملية صعبة. قد تجلب كل خطوة مشاكل غير متوقعة للمطورين ، وقد لا يغطي رمز مصدر العقد نفسه بالكامل جميع المواقف المحتملة. في حالة Curve ، حتى إذا كانت شفرة مصدر البروتوكول صحيحة ، فقد تظل هناك اختلافات بين التشغيل النهائي والتصميم المقصود للبروتوكول بسبب مشكلات المترجم.
لا يكفي الاعتماد على أمان البروتوكول في كود المصدر ومستوى الترجمة. حتى إذا بدا أن كود المصدر لا تشوبه شائبة ، فلا يزال من الممكن أن تظهر الثغرات الأمنية بشكل غير متوقع بسبب مشاكل المترجم.
نحن بحاجة إلى حماية وقت التشغيل
على عكس تدابير التحكم في المخاطر الحالية التي تتركز على مستوى كود مصدر البروتوكول وتسري قبل التنفيذ ، فإن حماية وقت التشغيل تتضمن مطوري البروتوكول كتابة قواعد وعمليات حماية وقت التشغيل للتعامل مع ظروف وقت التشغيل غير المتوقعة. هذا يسهل التقييم في الوقت الحقيقي والاستجابة لنتائج التنفيذ في وقت التشغيل.
تعد الحماية في وقت التشغيل أمرًا بالغ الأهمية في تعزيز أمان DeFi وهي إضافة مهمة لتدابير الأمان الحالية. من خلال حماية البروتوكول بطريقة "الصندوق الأسود" ، فإنه يعزز الأمن من خلال التأكد من أن نتيجة التشغيل النهائية متوافقة مع التصميم المقصود للبروتوكول ، دون التدخل المباشر في تنفيذ كود العقد.
تحديات تنفيذ حماية وقت التشغيل
لسوء الحظ ، لا يدعم تصميم EVM حماية وقت التشغيل على السلسلة لأن العقود الذكية لا يمكنها الوصول إلى سياق وقت التشغيل الكامل.
كيف تتغلب على هذا التحدي؟ نعتقد أن المتطلبات الأساسية التالية ضرورية:
وحدة مخصصة توفر الوصول إلى جميع المعلومات عبر العقود الذكية ، بما في ذلك سياق المعاملة بالكامل.
يتم الحصول على التفويض اللازم من العقد الذكي ، مما يمنح الوحدة الحق في إعادة المعاملات حسب الحاجة.
تأكد من أن وظيفة الوحدة سارية المفعول بعد تنفيذ العقد الذكي وقبل إرسال الحالة.
يواجه EVM حاليًا قيودًا في مواجهة التحديات المذكورة أعلاه ولا يمكنه استيعاب المزيد من الابتكارات. في ظل نموذج blockchain المعياري ، تحتاج طبقة التنفيذ إلى استكشاف الاختراق المتمثل في تجاوز EVM.
فكرة Artela هي امتداد أصلي لـ EVM + ، من خلال بناء طبقة الامتداد الأصلية لـ WASM من EVM لتحقيق تجاوز EVM.
مقدمة البرمجة
أطلقنا Aspect Programming ، وهو إطار عمل برمجة لـ Artela blockchain يدعم التوسع الأصلي على blockchain.
Aspect عبارة عن وحدة امتداد أصلية قابلة للبرمجة ، تُستخدم لدمج الوظائف المخصصة ديناميكيًا في blockchain في وقت التشغيل ، كمكمل معياري للعقود الذكية ، وتعزيز الوظائف على السلسلة.
تتمثل ميزة Aspect في أنه يمكنه الوصول إلى واجهة برمجة التطبيقات (API) على مستوى النظام لطبقة blockchain الأساسية وإضافة منطق الامتداد في كل نقطة انضمام في دورة حياة المعاملة. يمكن أن تربط العقود الذكية جوانب محددة لتشغيل وظائف موسعة. عندما تستدعي المعاملة عقدًا ذكيًا ، تتم معالجة المعاملة أيضًا من خلال الجانب المرتبط بالعقد.
كيف تنفذ Aspect Programming حماية وقت التشغيل
يمكن لـ Aspect تسجيل حالة التنفيذ لكل استدعاء دالة ومنع إعادة الدخول أثناء تنفيذ وظيفة رد الاتصال. عند حدوث مكالمة إعادة دخول أثناء تنفيذ وظيفة رد الاتصال ، تكتشف Aspect المعاملة وتتراجع عنها على الفور ، مما يمنع المهاجمين من استغلال نقاط ضعف إعادة الدخول. من خلال هذا النهج ، تقضي Aspect بشكل فعال على هجمات العودة ، مما يضمن أمان واستقرار العقود الذكية.
تنفذ Aspect الخصائص الرئيسية لحماية وقت التشغيل:
يمكن تشغيلها بعد تنفيذ العقد الذكي وقبل تقديم الحالة: يمكن ضبط وحدات Aspect للتفعيل بعد تنفيذ العقد الذكي ولكن قبل إرسال الحالة.
الوصول الكامل إلى سياق المعاملة: يمكن لـ Aspect الوصول إلى سياق المعاملة الكامل ، بما في ذلك معلومات المعاملة بالكامل (الطرق والمعلمات وما إلى ذلك) ، ومكدس الاستدعاءات (جميع استدعاءات العقود الداخلية أثناء التنفيذ) ، وتغييرات سياق الحالة ، وجميع الأحداث التي تم بدء المعاملات بها.
إمكانية استدعاء النظام: يمكن لـ Aspect إجراء مكالمات النظام وبدء عمليات استرجاع المعاملات عند الضرورة.
الإلزام والتفويض بالعقود الذكية: يمكن ربط العقود الذكية بـ Aspect ومنحها الإذن بالمشاركة في معالجة المعاملات.
تنفيذ جانب لحماية إعادة الدخول
في هذا الفصل ، نناقش كيفية تنفيذ حماية وقت تشغيل Aspect على السلسلة.
يمكن نشر جانب "نية حماية العقد" الفعلي في نقطة الانضمام لـ "preContractCall" و "postContractCall" لمنع هجمات إعادة الدخول.
preContractCall: تم تشغيله قبل تنفيذ المكالمة عبر العقد
postContractCall: يتم تشغيله بعد تنفيذ المكالمة عبر العقد
لحماية إعادة الدخول ، هدفنا هو منع إعادة الدخول إلى العقد حتى اكتمال المكالمة. باستخدام Aspect ، يمكننا تحقيق ذلك عن طريق إضافة منطق محدد في Pointcuts في دورة حياة المعاملة.
في نقطة الاختصار "preContractCall" ، تراقب Aspect مجموعة مكالمات العقد. إذا كان هناك أي مكالمات مكررة في مكدس المكالمات (مما يعني عودة غير متوقعة في مكالمتنا المغلقة) ، فإن الجانب سوف يستعيد المكالمة.
نشر عقد المنحنى ومنع هجمات إعادة الدخول
لقد كتبنا عقدًا وهميًا من Curve وقمنا بصياغة هجوم إعادة الدخول لإعادة إنتاج هذه العملية بطريقة أكثر قابلية للفهم. كود العقد كالتالي:
يمكن ملاحظة أن كلاً من إضافة \ _ السيولة وإزالة \ _ السيولة للعقد أعلاه محمي بواسطة نفس قفل قفل إعادة الدخول ، مما يعني أنه إذا كانت حماية إعادة الدخول تعمل بشكل طبيعي ، فلا يمكن إعادة إدخال الوظيفة المحمية عن طريق التغيير القفل (على سبيل المثال ، في إزالة \ _ إضافة مكالمات السيولة \ _ السيولة).
قم بتجميع العقد أعلاه مع برنامج التحويل البرمجي vyper 0.2.15 أو 0.2.16 أو 0.3.0 (عرفت هذه الإصدارات مشكلات حماية إعادة الدخول).
نقوم بعد ذلك بنشر عقد الضحية أعلاه ومهاجمته بالعقد التالي:
لمحاكاة هجوم فعلي ، تحاول طريقة الهجوم لهذا العقد إعادة إدخال إضافة \ _ سيولة من طريقة الإزالة \ _ السيولة من خلال وظيفتها الاحتياطية. في حالة حدوث إعادة الدخول بالفعل ، يمكن ملاحظة في الإيصال أنه تم تسجيل حدث AddL Liquidity قبل حدث RemoveL Liquidity.
لنستخدم الآن Aspect لحماية العقد تحت الهجوم. قبل القيام بما يلي ، يرجى إكمال الخطوات التالية:
نشر Aspect
اربط عقد الضحية مع شركة Aspect
إذا لم تكن على دراية بعمليات Aspect ، يمكنك مراجعة دليل المطور الخاص بنا أولاً.
بعد القيام بما سبق ، دعونا نحاول الآن استدعاء طريقة الهجوم مرة أخرى للتحقق مما إذا كانت العملية ستنجح.
من الصورة المتحركة (يمكنك عرض الرابط الأصلي في نهاية المقالة) ، يمكننا أن نرى أنه تم التراجع عن المعاملة المُعادة ، مما يعني أن Aspect الخاص بنا يحمي عقد الضحية بنجاح من هجمات إعادة الدخول.
ختاماً
يوضح الهجوم الأخير على Curve مرة أخرى أنه لا يوجد بروتوكول آمن تمامًا بنسبة 100٪. لا يكفي التركيز على الأمن في مصدر البروتوكول ومستويات الترجمة. حتى إذا بدا أن كود المصدر لا تشوبه شائبة ، فلا يزال من الممكن أن تظهر الثغرات الأمنية بشكل غير متوقع بسبب مشاكل المترجم.
لتعزيز أمان DeFi ، تصبح حماية وقت التشغيل أمرًا بالغ الأهمية. من خلال حماية البروتوكول بطريقة "الصندوق الأسود" ، والتأكد من أن تنفيذ البروتوكول يتماشى مع التصميم المقصود منه ، يمكن أن يمنع بشكل فعال هجمات إعادة الدخول في وقت التشغيل.
قمنا بتقسيم عقد المنحنى وقمنا بمحاكاة هجوم إعادة الدخول الأخير بشكل كامل ، وأعدنا إنتاج العملية برمتها بطريقة أكثر قابلية للفهم. باستخدام البرمجة الجانبية كنهج جديد لحماية وقت التشغيل على السلسلة ، نعرض خطوة بخطوة كيفية حماية عقود الضحايا مع الجوانب. هدفنا هو المساعدة في استئصال هجمات إعادة الدخول التي قد تعاني منها بروتوكولات DeFi مثل Curve ، وبالتالي تعزيز الأمن عبر مساحة DeFi بأكملها.
باستخدام Aspect Programming ، لا يمكن للمطورين تحقيق حماية وقت التشغيل على السلسلة في مساحة الأمان فحسب ، بل يمكنهم أيضًا تمكين حالات الاستخدام المبتكرة غير المسبوقة مثل النوايا و JIT والأتمتة على السلسلة. بالإضافة إلى ذلك ، فإن هذا الإطار العام المستند إلى Cosmos SDK لن يدعم فقط بلوكشين Artela ، ولكنه يدعم أيضًا سلاسل الكتل الأخرى لبناء امتدادات أصلية بناءً على طبقات التنفيذ الخاصة بها.