تحليل مخاطر أمان عقود NFT: مراجعة الأحداث في النصف الأول من عام 2022 ونقاط التدقيق

تحليل أمان عقود NFT: مراجعة الأحداث في النصف الأول من عام 2022 ومناقشة الأسئلة الشائعة

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

تحليل أحداث أمان NFT في النصف الأول من السنة: ما هي الحالات النموذجية التي يجب أن نكون حذرين منها؟

تحليل الحوادث الأمنية النموذجية

حدث TreasureDAO

في 3 مارس، تعرضت منصة TreasureDAO للهجوم، وتم سرقة أكثر من 100 NFT. كانت المشكلة في دالة buyItem في عقد TreasureMarketplaceBuyer. لم تقم هذه الدالة بالتحقق من نوع الرمز المميز عند حساب السعر الإجمالي، بل قامت بضرب الكمية في سعر الوحدة مباشرة. وهذا أدى إلى إمكانية المهاجمين استدعاء دالة buyItem في عقد TreasureMarketplace لشراء الرموز المميزة في حالة كان دفع ERC-20 يساوي 0.

السبب الجذري هو الفوضى المنطقية الناتجة عن الاستخدام المختلط لرموز ERC-1155 و ERC-721. رموز ERC-721 نفسها لا تحتوي على مفهوم الكمية، ولكن العقد يستخدم الكمية لحساب سعر الشراء، ولم يتم فصل المنطق في تنفيذ التحويل النهائي.

حدث توزيع APE Coin

في 17 مارس، حصل هاكر على أكثر من 60,000 قطعة من APE Coin من خلال الاقتراض الفوري. تكمن المشكلة في عقد AirdropGrapesToken. يستخدم العقد alpha.balanceOf() و beta.balanceOf() لتحديد ملكية المتصل لـ BAYC/MAYC NFT، لكن هذه الطريقة لا يمكنها سوى الحصول على الحالة اللحظية لملكية المستخدم لـ NFT، ويمكن التلاعب بهذه الحالة من خلال الاقتراض الفوري. استغل المهاجم هذه الثغرة، حيث اقترض BAYC NFT عن طريق الاقتراض الفوري وحصل على الإغاثة ذات الصلة.

فعالية Revest Finance

في 27 مارس، تعرض مشروع Revest Finance لهجوم، مما أدى إلى خسارة حوالي 120,000 دولار أمريكي. كانت هذه هجمة إعادة دخول نموذجية على ERC-1155. كانت المشكلة في عقد Revest. عندما يقوم المستخدم بإضافة أصول FNFT من خلال depositAdditionalToFNFT()، يحتاج العقد أولاً إلى تدمير FNFT القديم قبل أن يقوم بصك FNFT الجديد. ومع ذلك، خلال عملية الصك، لم يتحقق min() من ما إذا كان FNFT المطلوب صكه موجودًا بالفعل، كما أن المتغير الحالة fnftId تم زيادته بعد وظيفة _mint(). بينما يوجد في _min() استدعاء خارجي مخفي لـ ERC-1155 وهو _doSafeTransferAcceptanceCheck()، مما أدى إلى ثغرة إعادة الدخول.

حدث استغلال NBA

في 21 أبريل، تعرض مشروع NBA لهجوم. كانت المشكلة في آلية التحقق من التوقيع لعقد The_Association_Sales. هناك خطران رئيسيان: انتحال التوقيع وإعادة استخدام التوقيع. إعادة استخدام التوقيع تحدث لأن العقد لم يخزن التوقيعات المستخدمة، مما أدى إلى إمكانية المهاجمين استخدام نفس التوقيع عدة مرات. بينما انتحال التوقيع يحدث لأن معلمة info في vData memory لم يتم التحقق منها من خلال msg.sender عند تمرير المعلمات، مما يجعل التوقيع قابلًا للاستخدام من قبل الآخرين.

حدث أكوتار

في 23 أبريل، تم قفل 11539ETH (حوالي 34 مليون دولار أمريكي) بسبب ثغرة في عقد مزاد AkuAuction لمشروع NFT Akutar. يحتوي العقد على ثغرتين منطقيتين:

  1. تستخدم دالة رد الأموال processRefunds دالة call لإجراء رد الأموال، وتعتبر نتيجة رد الأموال شرطاً للتأكيد. يمكن للمهاجم أن يقوم بإعادة تعيين في fallback بشكل خبيث، مما يؤدي إلى عدم إمكانية إجراء عملية رد الأموال في العقد بأكمله.
  2. لم تأخذ شرطا التحقق في دالة الاسترداد في الاعتبار إمكانية قيام المستخدم بالمزايدة على عدة NFT، مما أدى إلى عدم إمكانية تنفيذ عمليات الاسترداد لاحقًا من قبل المشروع.

حدث XCarnival

في 24 يونيو، تعرض بروتوكول إقراض NFT XCarnival لهجوم، حيث حقق القراصنة ربحًا قدره 3087 إيثريوم (حوالي 3.8 مليون دولار). كانت المشكلة في دالة pledgeAndBorrow في عقد XNFT. لم تتحقق هذه الدالة من عنوان xToken الذي أدخله المهاجم أثناء الرهن NFT فيما إذا كان مدرجًا في القائمة البيضاء للمشروع، ولم تتحقق أيضًا من حالة سجل الرهن أثناء الإقراض، مما أدى إلى قدرة المهاجم على استخدام سجلات الرهن غير الصالحة بشكل متكرر للإقراض.

تحليل أحداث أمان NFT في النصف الأول من العام: ما هي الحالات النموذجية التي يجب أن نكون حذرين منها؟

الأسئلة الشائعة حول تدقيق عقود NFT

  1. انتحال التوقيع وإعادة استخدامه:

    • بيانات التوقيع تفتقر إلى التحقق من التنفيذ المتكرر، مثل عدم وجود nonce المستخدم، مما يؤدي إلى إمكانية إعادة استخدام بيانات التوقيع لصك NFT.
    • فحص التوقيع غير معقول، مثل عدم التحقق من حالة التوقيع لصفر العنوان، مما يسمح لأي مستخدم بصك العملات من خلال الفحص.
  2. ثغرة منطقية:

    • يمكن لمدير العقد صك العملة بطرق خاصة دون قيود على الكمية الإجمالية، مما يؤدي إلى تجاوز الكمية الفعلية لـ NFT التوقعات.
    • في مزادات NFT، يمكن للفائز استخدام هجمات اعتماد ترتيب المعاملات لتعديل سعر المزايدة، والحصول على NFT بسعر منخفض.
  3. هجوم إعادة الدخول على ERC721/ERC1155:

    • عند استخدام ميزة إشعار التحويل (دالة onERC721Received)، قد يؤدي إرسال عقد NFT لاستدعاء عقد الهدف إلى هجوم إعادة الإدخال.
  4. نطاق التفويض واسع للغاية:

    • يتطلب الأمر الحصول على تفويض _operatorApprovals عند الرهن أو المزاد، بدلاً من تفويض رموز فردية، مما يزيد من خطر سرقة NFT.
  5. التحكم في الأسعار:

    • يعتمد سعر NFT على كمية الرموز المميزة التي يحتفظ بها عقد معين، ويمكن للمهاجمين استغلال القرض الفوري لرفع سعر الرموز، مما يؤدي إلى تصفية غير طبيعية لـ NFT المرهونة.

نظرًا لتكرار أحداث الأمان لعقود NFT ، وغالبًا ما تتوافق الثغرات المكتشفة أثناء عملية التدقيق مع الهجمات الفعلية ، فإن السعي للحصول على شركة أمان محترفة لإجراء تدقيق شامل لعقود NFT أصبح أمرًا بالغ الأهمية.

تحليل أحداث الأمان في NFT للنصف الأول من العام: ما هي الحالات النموذجية التي تستحق انتباهنا؟

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • إعادة النشر
  • مشاركة
تعليق
0/400
BrokeBeansvip
· 08-13 15:21
عقد حدثت فيه مشكلة مرة أخرى، من سيجرؤ على الشراء؟
شاهد النسخة الأصليةرد0
CryptoNomicsvip
· 08-13 15:20
*sigh* تطبيق تحليل سلسلة ماركوف، هذه الاختراقات تظهر علاقة 73.4% مع تدقيق العقود الضعيف. إحصائياً لا مفر منه.
شاهد النسخة الأصليةرد0
blockBoyvip
· 08-13 15:19
تس تس كل يوم هناك ثغرة
شاهد النسخة الأصليةرد0
ILCollectorvip
· 08-13 15:17
آه، لقد تبخرت عشرات الملايين من الدولارات هكذا، أشعر بالحزن من أجل الأخ الذي قطع خسارته.
شاهد النسخة الأصليةرد0
SorryRugPulledvip
· 08-13 15:17
مرة أخرى تم خداعي بواسطة dc
شاهد النسخة الأصليةرد0
GweiTooHighvip
· 08-13 15:14
تمت سرقة العقد مرة أخرى ولا نهاية لها
شاهد النسخة الأصليةرد0
  • تثبيت