ما هو هجوم إعادة الدخول؟
هجوم إعادة الدخول هو عندما يرسل عقد التحكم إلى عقد آخر أثناء مكالمة ويقفز الشيفرة الخارجية مرة أخرى إلى العقدة الأولى قبل أن يقوم بتحديث سجلاته. هذه الحيلة الزمنية تسمح للمهاجم بتكرار إجراءات حساسة مثل السحوبات مرة ثانية وأخرى. تخيّل أن تطلب استرداد المال، ثم تعود إلى العداد قبل أن يغلق المحاسب الخزنة.
“فقط الشيفرة القديمة يمكن أن تتعرض لهجوم إعادة الدخول.” ليس صحيحًا. أي عقدة تقرر إجراء مكالمة خارجية قبل تثبيت حالتها يمكن أن تكون معرضة للخطر إذا كانت المنطقية مهملة.
كيف يعمل هجوم إعادة الدخول
قصة سريعة. عادةً ما يحتوي عقد ذكي على دالة سحب ترسل الأموال إلى المستدعي. إذا أرسل الأموال أولاً وأزال الرصيد لاحقاً، يمكن للمهاجم أن يتسلل إلى رد استدعاء ويطلب المزيد قبل أن يتم تعيين الرصيد إلى صفر.
- البداية: يودع المهاجم بعض الأموال ليبدو شرعيًا.
- الاتصال: يفعّل المهاجم السحب على العقد المستهدف.
- إعادة الدخول: يرسل الهدف الأموال، مما يشغّل دالة الاسترجاع للمهاجم.
- التكرار: تستدعي هذه الاسترجاع السحب مرة أخرى قبل تحديث الرصيد.
- الاستنزاف: يستمر الحلقة حتى ينفد المال أو الغاز من العقد. نعم، هذه هي الحيلة.
خطأ ترتيب واحد بسيط، مشكلة كبيرة.
لماذا يهم هجوم إعادة الدخول
تهتم بذلك لأن أخطاء التوقيت تقود أموالاً حقيقية، وبسرعة. بالإضافة إلى أنه واحد من هذه الاستغلالات الكلاسيكية التي يجب أن يتعرف عليها أي مطور ومستخدم فضولي عند الإطلاع.
- الفائدة: معرفة النمط يساعدك في رصد الشيفرات الخطرة وحماية الأموال.
- وجهة النظر: يزدهر ذلك في الشفافية العامة حيث كل شيء في blockchain ظاهر وقابل للاستدعاء.
- الأهمية: ستراه في DeFi، الجسور، الخزائن، حتى مدفوعات الحوكمة لـ DAOs.
اتّبع الفحصات ثم التأثيرات ثم التفاعلات. حدث الأرصدة أولاً، ثم قم بإجراء الاتصالات الخارجية. أضف حماية إعادة الدخول بسيطة لسلامة إضافية.
الخصائص الأساسية لهجوم إعادة الدخول
إليك ما يجعله يعمل:
- التكرار: الشيفرة الخارجية تستدعي العقد نفسه قبل أن ينتهي.
- التسلسل: يظهِر العيب عندما يحصل إرسال الأموال أو الاتصال قبل تحديث الحالة.
- التقاطع: يمكنه الرجوع عبر عدة عقود، وليس وظيفة واحدة فقط.
- الأصول: يعمل مع ETH، الرموز، وحتى الاعتمادات المحاسبية إذا كان الترميز سيئاً.
الإصدارات
نكهات مختلفة، نفس الصداع للكود المهمل:
- وحيد: إعادة الدخول إلى نفس الدالة مراراً وتكراراً.
- عبر: إعادة الدخول من خلال دالة مختلفة داخل نفس العقد.
- متعدد: إعادة الدخول عبر عقدين أو أكثر في حلقة.
- ReadOnly: التأثير على الرؤية أو أسعار العوامل الذكية لخداع الكتابة لاحقاً.
إصلاح هجوم إعادة الدخول ليس مجرد مسألة دالة واحدة. راجع كل المكالمات الخارجية، أضف اختبارات لمسارات مكالمة غريبة، وجدول عمليات تدقيق منتظمة audits.
مثال
استغلال The DAO في 2016 استخدم حلقة إعادة الدخول في السحب قبل مسح الأرصدة، مما استنزف treasury ضخمة في دقائق.
معلومة ممتعة
تعليق المجتمع الشائع Checks then effects then interactions جاء من أدلة أمان مبكرة وبقي لأنه قصير، سهل التذكر، وفعال.
خلاصة
نسخة مختصرة يمكنك الاحتفاظ بها في جيبك: إذا كان خارج الشيفرة يمكنها الاتصال بك قبل إنهاء دفترك المحاسبي الخاص، افترض أنها ستفعل ذلك وربما تمنحها مالاً مجانياً. هذا هو هجوم Reentrancy Attack.