دليل أمني
قائمة تحقق أمن Web3: 15 خطوة لحماية عقدك الذكي
قائمة تحقق شاملة وقابلة للتنفيذ تغطي كل شيء من التحكم في الوصول إلى المراقبة — مصممة لاكتشاف الثغرات قبل أن يفعلها المهاجمون.
قائمة تحقق أمنية قبل النشر
أكمل هذه الفحوص الخمسة عشر قبل نشر أي عقد ذكي على الشبكة الرئيسية.
نفّذ التحكم في الوصول حسب الدور
استخدم AccessControl أو Ownable2Step من OpenZeppelin بدل فحوص العناوين الخام. عرّف أدوارًا منفصلة لوظائف المسؤول والمشغّل والإيقاف. لا تستخدم tx.origin للتفويض أبدًا.
احمِ من إعادة الدخول
طبّق نمط checks-effects-interactions على كل الاستدعاءات الخارجية. استخدم ReentrancyGuard للدوال التي تنقل ETH أو تتفاعل مع عقود غير موثوقة. اختبر بعقود رد نداء خبيثة عمدًا.
تحقق من كل المدخلات الخارجية
افحص عناوين الصفر وقيم الفيض والمصفوفات الفارغة والمعاملات خارج النطاق عند مداخل الدوال. لا تفترض أن المستدعي سيقدّم مدخلات معقولة — افرض القيود على السلسلة.
عالج الحساب الصحيح بأمان
لدى Solidity 0.8+ فحوص فيض مدمجة، لكن كتل unchecked تتجاوزها. دقّق كل كتلة unchecked لمخاطر الفيض/النقص. راقب القسمة على صفر وفقدان الدقة في حساب النقطة الثابتة.
أمّن اعتمادات الأوراكل
استخدم أسعارًا متوسطة مرجّحة بالزمن (TWAP) أو مصادر أوراكل متعددة لمقاومة التلاعب بقروض فلاش. أضف فحوص التقادم وعتبات استجابة دنيا ومنطق احتياطي عند فشل الأوراكل.
ثبّت إصدار المترجم وتحقق منه
ثبّت إصدار Solidity بـ pragma محدد (مثل 0.8.20) بدل البراغمات العائمة (^0.8.0). تأكد من أن كل عقود المشروع تُترجم بالإصدار نفسه لتفادي فروق سلوك دقيقة.
قلّل سطح الترقية
إن استخدمت وكلاء قابلين للترقية، قيّد سلطة الترقية بأقفال زمنية وحوكمة متعددة التوقيع. امنع تصادم تخطيط التخزين. فكّر هل الترقية لازمة حقًا — العقود غير القابلة للتغيير أبسط للاستدلال.
نفّذ آليات إيقاف طارئ
أضف قابلية الإيقاف للعمليات الحرجة. صمّم آلية الإيقاف بحيث لا تُساء استخدامها للرقابة لكنها توقف العمليات أثناء استغلال نشط. اختبر أن الإيقاف يحجب كل المسارات الحرجة فعلًا.
احمِ من السبق (front-running)
استخدم مخططات commit-reveal أو مجمعات خاصة (Flashbots Protect) أو مهلاً للعمليات الحساسة للوقت. قلّل القيمة القابلة للاستخراج في المعاملات المعلقة.
دقّق أنماط الموافقة على الرموز
تجنّب الموافقات اللانهائية حيث أمكن. نفّذ EIP-2612 permit للموافقات دون غاز. افحص حالات سباق الموافقة واستخدم decreaseAllowance بدل approve(0) ثم approve(newAmount).
اختبر بمحاكاة تفرع واقعية
شغّل اختبارات التكامل على تفرعات الشبكة الرئيسية لالتقاط مشكلات بأرصدة رموز حقيقية وحالات مجمع وقيم أوراكل. يدعم Hardhat وFoundry الاختبار على التفرع — استخدمه لمحاكاة ظروف النشر الحقيقية.
راجع مقايضات تحسين الغاز مقابل السلامة
قد يُدخل الكود المحسَّن للغاز ثغرات دقيقة. لا تتخطَّ فحوص السلامة لتوفير الغاز. وثّق أي كتل unchecked أو استخدام تجميع بمبررات سلامة صريحة.
تحقق من مصدر العقد في مستكشف الكتل
انشر المصدر وتحقق منه على Etherscan أو المستكشف المعني فور النشر. يتيح ذلك التدقيق العام ويبني الثقة. تأكد من أن المصدر المتحقَّق يطابق البايت كود المنشور تمامًا.
أعد المراقبة والتنبيه
انشر المراقبة على السلسلة قبل الإطلاق لا بعده. راقب أنماط التحويل غير المعتادة وتصعيد الامتياز ومقترحات الحوكمة وتغيير المعاملات. طبقة مراقبة FinGuard على مدار الساعة تلتقط الاستغلالات النشطة في الزمن الحقيقي.
احصل على تدقيق أمني مستقل
المراجعة الداخلية ضرورية لكنها غير كافية. استعن بمدقق مستقل سيحاول استغلال عقدك في بيئة صندوق رملي. اشترط دليل استغلال للنتائج، لا قوائم مخاطر نظرية فحسب.
ثغرات شائعة يجب مراقبتها
هذه الفئات تفسّر غالبية استغلالات DeFi في 2024–2025.
هجمات إعادة الدخول
أكثر ثغرات العقود الذكية كلاسيكية. يعيد المهاجم دخول دالة قبل اكتمال الاستدعاء الأول، فيفرّغ الأموال باستدعاءات متكررة. فقدت حادثة The DAO عام 2016 60 مليون دولار بهذا النمط.
التلاعب بالأوراكل
يستخدم المهاجمون قروض فلاش للتلاعب مؤقتًا بتغذيات الأسعار على السلسلة، ثم يستغلون بروتوكولات تعتمد أسعار اللحظة. هذا المتجه الرائد في DeFi منذ 2020.
ثغرات التحكم في الوصول
فحوص صلاحيات ناقصة أو خاطئة على الدوال المميزة — تسمح لأي كان باستدعاء عمليات المسؤول أو تحديث المعاملات أو سحب الأموال. غالبًا بسبب تغطية معدِّلات غير مكتملة.
استغلال قروض الفلاش
اقتراض مبالغ كبيرة ذريًا للتلاعب بأصوات الحوكمة أو نسب المجمع أو آليات التسعير في معاملة واحدة. الدفاع يتطلّب قيمًا مرجّحة بالزمن وتأكيدًا متعدد الكتل.
أخطاء منطق قواعد العمل
تنفيذ غير صحيح لمعدلات الإقراض أو حساب المكافآت أو عتبات التصفية. هذه الأخطاء خاصة بكل بروتوكول ولذلك لا تكفي الأدوات الآلية وحدها — الاستدلال البشري يلتقط عيوب التصميم.
متطلبات الاختبار
الحد الأدنى لمعيار الاختبار قبل انتقال أي عقد ذكي إلى الشبكة الرئيسية.
اختبارات الوحدة (تغطية 90%+)
يجب أن يكون لكل دالة عامة وخارجية حالات إيجابية وسلبية. استهدف تغطية فروع لا تقل عن 90%. استخدم forge coverage من Foundry أو إضافات تغطية Hardhat للقياس.
اختبارات التكامل على تفرعات الشبكة الرئيسية
اختبر تدفق النشر الكامل على حالة شبكة رئيسية متفرعة. تحقق من أن التفاعل مع مجمعات DEX وبروتوكولات الإقراض والأوراكل يسلك كما يُتوقَّع ببيانات حقيقية على السلسلة.
اختبار التشويش مع ثوابت الخصائص
عرّف ثوابت (مثل ألا يتجاوز العرض الكلي السقف، وألا يصبح رصيد المستخدم سالبًا) ودع أداة التشويش تولّد آلاف المدخلات العشوائية. Foundry وEchidna من الأدوات الرائدة.
تحقق شكلي للمسارات الحرجة
للعقود عالية القيمة التي تدير TVL كبيرًا، استخدم أدوات التحقق الشكلي (Certora، Solidity SMTChecker) لإثبات رياضي بأن الخصائص الحرجة تصمد تحت كل المدخلات الممكنة.
أسئلة شائعة
كم يستغرق إكمال قائمة التحقق هذه؟
لمشروع منظم جيدًا بتغطية اختبار قائمة، توقّع 2–5 أيام للعمل المنهجي عبر البنود الخمسة عشر. للمشاريع من الصفر، خصّص 1–2 أسبوع لتنفيذ تحكم وصول سليم وبنية اختبار وإعداد مراقبة.
هل تغني الأدوات الآلية عن مراجعة أمنية يدوية؟
تلتقط الأدوات الآلية (محللات ساكنة، وأدوات تشويش، وتحقق شكلي) أنماط الثغرات المعروفة بكفاءة لكنها تفوّت أخطاء منطق العمل ومشكلات التصميم الاقتصادي ومتجهات الهجوم الجديدة. أفضل مقاربة تجمع الأدوات للتغطية الواسعة مع مراجعة خبراء للعمق — وهو بالضبط عمل خط أنابيب FinGuard من 7 طبقات.
ما أهم بند واحد في هذه القائمة؟
إن استطعت فعل شيء واحد فاحصل على تدقيق أمني مستقل (البند 15). سيدرك مدقق متمرس معظم البنود الأخرى أثناء مراجعته. لكن الاعتماد على التدقيق وحده دون تنفيذ البنود الأخرى يعني أنك تصنع عملًا ومخاطر غير ضرورية.
أأكمل القائمة قبل التدقيق أم بعده؟
قبله. إكمال القائمة يعني أن مدققك يقضي الوقت في إيجاد مشكلات عميقة غير بديهية بدل تعليم مشكلات نظافة أساسية. هذا يعطيك قيمة أكبر مقابل كل دولار يُنفق على التدقيق. فكّر فيه كترتيب المنزل قبل وصول المفتش.
جاهز لتدقيق احترافي؟
أكمل قائمتك، ثم دع محرك الذكاء الاصطناعي من 7 طبقات لدى FinGuard يتحقق من عملك باستغلالات صندوق رملي حقيقية.