شعار زيفيرنت

قائمة مراجعة تدقيق العقود الذكية لعام 2021 بواسطة QuillAudits | DeFi

التاريخ:

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

أهمية التدقيق الذكي لأمن العقود

إن ظهور التمويل اللامركزي أمر لا مفر منه. ينمو سوق DeFi بمعدل أسي بشكل لا يصدق.

ومع ذلك ، فقد أثبت هذا العام بوضوح أنه لا غنى عن التفكير في أفضل الممارسات الأمنية أثناء تطوير العقد الذكي أو بناء تطبيق لامركزي كامل مع وجود الكثير على المحك.

الأهم من ذلك ، لقد حان الوقت لفهم ذلك تدقيقات العقود الذكية لا يمكن إهمالها بعد الآن.

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

إذا تركت دون مراجعة ، فقد تؤدي عقود DeFi إلى انتكاسات تشمل خسارة الأموال والتلاعب بالنظام. في بعض الأحيان ، قد يؤدي ذلك أيضًا إلى إغلاق الشركة.

لذلك ، يصبح من الضروري التحقق من جودة تدقيق الفريق لعقد DeFi الخاص بك والتعرف على عملية التدقيق الخاصة بهم.

الثغرات الأمنية الخبيثة في العقود الذكية التي يمكن أن تقضي على الملايين

  1. المكالمات الخارجية - على الرغم من أن المكالمات الخارجية لها أهميتها الخاصة ، إلا أنها تنطوي على مخاطرة كبيرة حيث يمكنها تقنيًا تحويل التحكم في التنفيذ إلى أي جهة فاعلة ضارة.

خسر بروتوكول dForce المالي اللامركزي حوالي 25 مليون دولار في أبريل 2020. ووقع الهجوم عندما LendFi ، تطبيق الإقراض الخاص بـ dForce ، تم استغلاله بسبب مكالمة خارجية التي أدت إلى هجوم عودة.

ملحوظة: من الأهمية بمكان التأكد من عدم حدوث أي تغييرات في الحالة بعد إجراء مكالمة خارجية. اقرأ المزيد عن المكالمات الخارجية وجانبها الشرير هنا.

2. هجوم العودة (DAO Fiasco)

هاك داو في يونيو 17، 2016كان هذا هو الاختراق حيث تمكن المهاجم من سرقة 3.6 مليون ETH في الساعات القليلة الأولى من الهجوم عن طريق أخذ عينات من إعادة الدخول العقد مرارا وتكرارا.

3. التلاعب أوراكل السعر

شهد عام 2020 بعض هجمات التلاعب بالأسعار الضخمة. بروتوكولات DeFi المشهورة مثل bZx hack، Harvest، Cheese Bank hack واجهت خسائر فادحة بسبب التلاعب في أوراكل السعر.

بينما خسر bZx 350,000 ألف دولار في الهجوم الأول (12 فبراير 2020)، فقد حولها 650,000 ألف دولار في الهجوم الثاني (18 فبراير 2020). من ناحية أخرى، تمويل الحصاد خسرت ما يقرب من 24 مليون دولار بسبب هجوم تلاعب أوراكل باستخدام قروض فلاش.

مزيد من المعلومات حول القرض السريع وهجمات التلاعب بأوراكل هنا.

4. ملكية العقد المنتشر

فقدت محفظة Parity Multisig 150,000 ETH، والذي كان حوالي 30 مليون دولار أمريكي في ذلك الوقت.

5. اعتماد الطابع الزمني

ملحوظة: إذا كان بإمكان وظيفة العقد تحمل انحراف مدته 15 ثانية في الوقت المناسب ، فمن الآمن استخدام block.timestamp

6. ضعف حقن التخزين في عقود NEO الذكية (التي تسمح لأي شخص بتغيير إجمالي حد التوريد الخاص بالرمز عن طريق نقل الرموز المميزة الخاصة به إلى عنوان غير محدد.)

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

نقاط التفتيش الإلزامية يجب أن يمر العقد

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

1. رؤية الوظائف الصحيحة: -

يمكن أن تحتوي الوظائف في الصلابة على أربعة محددات للرؤية: publicexternalinternal or private، مع public كونها الافتراضي. يمكن أن تكون متغيرات الحالة publicinternal or private، مع internal كونها الافتراضي. يعد التحديد الواضح لوضوح رؤية الوظائف ومتغيرات الحالة من أفضل الممارسات الأمنية.

يمكن أن تكون المحددات الغائبة خطيرة ، خاصة في حالة الوظائف حيث يكون الوضع الافتراضي هو الوصول العام. إذا كانت هذه الوظيفة لها منطق حاسم ، فيمكن عندئذ تشغيلها من أي عنوان خارجي لإساءة استخدام العقد. استغل الاختراق الأول لمحفظة Parity multisign محددات رؤية الوظائف المفقودة مما أدى إلى قيام المهاجم بسرقة إيثر بقيمة 31 مليون دولار.

2. تخزين البيانات: -

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

3. منع الفائض والتدفق: -

الفائض هو عندما يزداد رقم فوق قيمته القصوى. يمكن للصلابة التعامل مع أرقام تصل إلى 256 بت (حتى ²⁵⁶-1) ، لذا فإن الزيادة بمقدار 1 ستؤدي إلى 0.

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

يمكن منع تجاوز التدفق والتجاوز باستخدام مكتبة SafeMath لإجراء عمليات حسابية في العقود الذكية.

4. المكالمات الخارجية - كل مكالمة خارجية تشكل مخاطرة: -

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

5. تحقق من إعادة الدخول وتأكد من الحالة الملتزمة قبل المكالمة الخارجية.

فاجأ هجوم Reentrancy ، الذي ربما يكون أشهر ثغرة في Ethereum ، الجميع عند اكتشافه لأول مرة. تم الكشف عنها لأول مرة خلال عملية سرقة بملايين الدولارات أدت إلى شوكة صلبة لـ Ethereum. يحدث Reentrancy عندما يُسمح لمكالمات العقد الخارجية بإجراء مكالمات جديدة لعقد الاستدعاء قبل اكتمال التنفيذ الأولي. بالنسبة للوظيفة ، هذا يعني أن حالة العقد قد تتغير في منتصف تنفيذها نتيجة استدعاء عقد غير موثوق به أو استخدام وظيفة منخفضة المستوى بعنوان خارجي.

خسارة: يقدر بنحو 3.5 مليون ETH (حوالي 50 مليون دولار أمريكي في ذلك الوقت)

6. لا تفوض المكالمة إلى رمز غير موثوق به.

• delegatecall تُستخدم الوظيفة لاستدعاء الوظائف من العقود الأخرى كما لو كانت تنتمي إلى عقد المتصل. وبالتالي يجوز للمتصل تغيير حالة عنوان المتصل. قد يكون هذا غير آمن.

7. حفظ الغاز في العقود الذكية.

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

8. اعتماد الطابع الزمني

إذا كان بإمكان وظيفة العقد تحمل انحراف مدته 15 ثانية في الوقت المناسب ، فهي آمنة للاستخدام block.timestamp.

9. تحذيرات المترجم

جميع تحذيرات المترجم مشكلة خطيرة أحيانًا يتجاهل المطور التحذيرات وينشر العقد دون اعتبارها تهديدًا كبيرًا لعقده الذكي ، نوصي باتخاذ الإجراءات اللازمة لإزالة جميع التحذيرات.

10. ملكية العقد المنتشر

من المهم جدًا توفير الملكية لعقد في وقت النشر أو تقييد استدعاءات الوظائف ، وإلا فقد يستدعي المهاجم هذه الوظيفة أو ينقل وظيفة الملكية أمامك أو إذا طُلب منك منح ملكية العقد لاحقًا ، فمن أشهر الأخطاء هذا النوع لؤلؤة المحار لأن ملكية العقد الذكي كانت مفتوحة للمهاجم نقل الملكية لنفسه وقادر على سك العملات المعدنية بقيمة 300,000 ألف دولار.

11. مكالمات أوراكل

لا يمكن لـ Blockchains الوصول إلى البيانات خارج شبكتهم. أوراكل عبارة عن موجز بيانات يتم توفيره بواسطة خدمة تابعة لجهة خارجية مصممة للاستخدام في العقود الذكية على blockchain.

Oracles هي خدمات تابعة لجهات خارجية وليست جزءًا من آلية إجماع blockchain. التحدي الرئيسي مع أوراكل هو أن الناس بحاجة إلى الوثوق بمصادر المعلومات هذه.

12. تأمين البراغمات لإصدار مترجم معين:

صلابة براغما ^ 0.4.4 ؛ هذه صلابة براغما سيئة 0.4.4 ؛ هذا جيد

13. أدوات الأمن

بعد الاختبار اليدوي واختبار الوحدة ، يخضع عقدك الذكي لاختبارات الأتمتة التي يتم إجراؤها باستخدام العديد من أدوات الأمان مفتوحة المصدر.

التصور:

مطور سوليديتي المرئي ,SURYA , سولجراف, مختبرات Evm, مصحح أخطاء الرسم البياني Ethereum

التحليل الثابت والديناميكي:

انزلق, ميثريل, أوينتي, تأمين, SmartCheck

تغطية الاختبار:

تغطية الصلابة

لينتيرس والمنسِّقات:

تعمل Linters على تحسين جودة الكود.

سولتشيك, الصلحنت, الشريطية الوحيدة, أجمل البرنامج المساعد صلابة

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

بعض تقارير المراجعة الحديثة التي قمنا بتدقيقها هي:

تقرير تدقيق UnionTronتقرير تدقيق Centralexتقرير تدقيق ChocoSwap

نرحب بالتعليقات على الإجراءات حتى نتمكن من الاستمرار في التكرار والتحسين.

شكرا للقراءة. أيضا ، تحقق من مشاركات المدونة السابقة.

حول QuillAudits
QuillAudits عبارة عن منصة ذكية آمنة لتدقيق العقود تم تصميمها بواسطة QuillHash
التقنيات.
إنها منصة تدقيق تقوم بتحليل العقود الذكية والتحقق منها بدقة للتحقق من الثغرات الأمنية من خلال المراجعة اليدوية الفعالة باستخدام أدوات التحليل الثابتة والديناميكية ، وأجهزة تحليل الغاز وكذلك أجهزة المحاكاة. علاوة على ذلك ، تتضمن عملية التدقيق أيضًا اختبارًا شاملاً للوحدة بالإضافة إلى التحليل الهيكلي.
نقوم بإجراء كل من عمليات تدقيق العقود الذكية واختبارات الاختراق للعثور على الإمكانات
الثغرات الأمنية التي قد تضر بسلامة النظام الأساسي.
لمزيد من المناقشة والاستفسارات حول نفس الموضوع ، انضم إلى المناقشة في
مجموعة Telegram من QuillHash -
https://t.me/quillhash

لتكون على اطلاع دائم بعملنا ، انضم إلى مجتمعنا: -

تیلیجرام |  تويتر | فيسبوك | لينكدين:

المصدر: https://blog.quillhash.com/2021/01/18/smart-contract-audit-checklist-for-2021-by-quillaudits-defi/

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة

الدردشة معنا

أهلاً! كيف يمكنني مساعدك؟