Decoupling Reentrancy Protection from Smart Contract Implementation Logic
تقدم هذه الورقة Sentinel، وهو إطار عمل جديد قائم على الوكيل (proxy-based framework) يعمل على فصل الحماية من هجمات إعادة الدخول (reentrancy protection) عن منطق العقد الذكي لتحقيق تغطية بنسبة 100% ضد هجمات إعادة الدخول الرئيسية، بما في ذلك المتغيرات القائمة على القراءة فقط (read-only variants)، وذلك عبر اعتراض الاستدعاءات عند طبقة الوكيل باستخدام نظام أمني ثنائي الوضع.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تخيل عالم البلوكشين كأنه بنك صاخب وعالي المخاطر، حيث يمكن للجميع كتابة قواعدهم الخاصة لكيفية تحرك الأموال. تُسمى هذه القواعد العقود الذكية (Smart Contracts). ورغم أنها قوية، إلا أن لديها نقطة ضعف شهيرة تُعرف بـ إعادة الدخول (Reentrancy).
المشكلة: عملية "الدفتر المزدوج" للسرقة
لفهم المشكلة، تخيل موظف بنك (العقد الذكي) من المفترض أن يقوم بما يلي:
- التحقق من رصيدك.
- إعطاؤك أموالك.
- ثم تحديث السجل لإظهار أن رصيدك أصبح صفراً.
في العالم الطبيعي، هذا آمن. ولكن في عالم البلوكشين، "الموظف" هو روبوت يمكن مقاطعته. يمكن للصوص الأذكياء (المهاجم) استدعاء الموظف لسحب المال، وقبل أن ينهي الموظف الخطوة رقم 3 (تحديث السجل)، يقوم روبوت اللص باستدعاء الموظف مرة أخرى لسحب المزيد من المال.
ولأن السجل لم يتم تحديثه بعد، لا يزال الموظف يعتقد أن لدى اللص المبلغ الكامل. يمكن للصوص تكرار هذه الحلقة عشرات المرات في ثانية واحدة، مما يؤدي إلى إفراغ خزنة البنك قبل أن يدرك الموظف ما حدث. هذا هو هجوم إعادة الدخول (Reentrancy Attack).
الحلول القديمة: علامة "الرجاء عدم الإزعاج"
حاول المطورون سابقاً حل هذه المشكلة بوضع علامة "الرجاء عدم الإزعاج" (قفل) على مكتب الموظف.
- العيب: كانت هذه العلامات غالباً ما تلتصق بمكاتب محددة (وظائف معينة). إذا وجد اللص باباً خلفياً (وظيفة مختلفة) لا توجد عليه علامة، فبإمكانه الدخول من خلاله.
- القصور: إذا كان للبنك عدة فروع (عقود متعددة) تتواصل مع بعضها البعض، فإن وضع علامة على فرع واحد لا يمنع اللص من التنقل بين الفروع لإرباك النظام.
- النقطة العمياء: كانت هذه العلامات تعيق أيضاً طلبات "النظر فقط" المشروعة (مثل التحقق من الرصيد دون إنفاقه)، مما يجعل البنك بطيئاً وغير فعال.
الحل الجديد: سنتينل (الحارس الذكي)
يقترح مؤلفو هذه الورقة، شاشانك جوشي وويتشيك غولاب، نظاماً جديداً يسمى سنتينل (Sentinel). بدلاً من محاولة إصلاح مكتب الموظف، قاموا ببناء حارس ذكي (Doorman) (وكيل/Proxy) يقف عند مدخل البنك.
إليك كيف يعمل "سنتينل"، باستخدام تشبيهات بسيطة:
1. الحارس يعترض الجميع
بغض النظر عمن يحاول دخول البنك أو ماذا يريد أن يفعل، يجب أن يمر عبر حارس "سنتينل" أولاً. الحارس لا يهتم بالقواعد المعقدة داخل البنك؛ هو فقط يركز على الأمن. وهذا يعني أن القواعد الداخلية للبنك (منطق العمل) لا تحتاج إلى إعادة كتابة لتكون آمنة.
2. وضعان للتشغيل
يمتلك الحارس زيين مختلفين، أو "وضعين"، اعتماداً على مدى خطورة الموقف:
الوضع المُحسّن (حارس المكتب الواحد):
إذا كان البنك صغيراً ولديه فرع واحد فقط، يستخدم الحارس قفلاً بسيطاً وسريعاً على الباب. إنه رخيص وسريع. إذا حاول شخص التسلل للداخل بينما الباب مغلق، يتم طرده فوراً. هذا ممتاز للحالات البسيطة ذات العقد الواحد.وضع الأمن العالي (شبكة الأمن العالمية):
إذا كان البنك جزءاً من شبكة ضخمة من الفروع، يتصل الحارس بـ مركز أمني مركزي (يُسمى LockRegistry).- تخيل الحارس وهو يتصل بالمركز المركزي: "هل الفرع (أ) مشغول حالياً؟"
- إذا قال المركز "نعم"، يقوم الحارس بمنع الدخول.
- هذا يمنع اللصوص من التنقل بين الفروع المختلفة لخداع النظام. إنه ينسق الأمن عبر الشبكة بأكملها، وليس مجرد غرفة واحدة.
3. استثناء "النظر فقط"
أمر محير في البلوكشين هو أن الناس يريدون أحياناً فقط النظر إلى الرصيد دون الإنفاق (ما يسمى staticcall).
- الأقفال القديمة كانت تعيق هؤلاء "الناظرين"، مما يسبب تأخيرات.
- "سنتينل" ذكي بما يكفي لاكتشاف ما إذا كان الشخص "ينظر" فقط. إذا كان الأمر كذلك، يسمح الحارس له بإلقاء نظرة عبر النافذة دون قفل الباب، لكنه يظل يراقب عن كثب للتأكد من أنه لن يحاول التسلل من الباب الخلفي أثناء النظر.
لماذا هذا مهم؟
اختبر المؤلفون "سنتينل" ضد 70 عقداً ذكياً مختلفاً كانت معروفة بأنها عرضة لهذه الهجمات.
- النتيجة: أوقف "سنتينل" 100% من الهجمات، بما في ذلك الهجمات المعقدة التي تحدث بين العقود المختلفة أو تلك التي تتضمن حيل "النظر فقط".
- المقارنة: الأدوات القياسية القديمة (مثل حارس OpenZeppelin) أوقفت حوالي 73% فقط من الهجمات. لقد فشلت في مواجهة عمليات السطو المعقدة التي تتم بين العقود.
- التكلفة: يتطلب "الحارس" القليل من الطاقة الإضافية (الغاز/Gas) للتشغيل، لكن المؤلفين يقولون إن هذا ثمن زهيد مقابل منع سرقات بملايين الدولارات.
الخلاصة
تقدم هذه الورقة طريقة لفصل الأمن الخاص بالعقد الذكي عن منطق العمل الخاص به. من خلال وضع "حارس" ذكي ومتكيف أمام العقد، يمكنهم منع اللصوص من استغلال فجوات التوقيت في النظام، بغض النظر عن مدى تعقيد القواعد الداخلية للعقد. إنه تحول من محاولة إصلاح كل ثقب في الجدار إلى بناء بوابة لا يمكن اختراقها.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.