تحليل المبدأ لحدث هجوم BNO

في 18 يوليو 2023 ، بتوقيت بكين ، عانت شركة Ocean BNO من هجوم قرض سريع ، وحقق المهاجم ربحًا بنحو 500 ألف دولار أمريكي.

! [20230718161919783image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-38970f9230-dd1a6f-7649e1)

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

** 1. تحليل الأحداث **

عنوان المهاجم:

0xa6566574edc60d7b2adbacedb71d5142cf2677fb

عقد الهجوم:

0xd138b9a58d3e5f4be1cd5ec90b66310e241c13cd

العقد المهاجم:

0xdCA503449899d5649D32175a255A8835A03E4006

هجوم المعاملات:

0x33fed54de490797b99b2fc7a159e43af57e9e6bdefc2c2d052dc814cfe0096b9

عملية الهجوم:

(1) اقترض المهاجم (0xa6566574) 286449 عملة BNO من خلال قرض فلاش pancakeSwap.

! [20230718161449018image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-f469426182-dd1a6f-7649e1)

(2) ثم قم باستدعاء وظيفة ال stockNft للعقد المهاجم (0xdCA50344) لتعهد اثنين من nft.

! [20230718161457306image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-04edd0e58c-dd1a6f-7649e1)

(3) ثم اتصل بوظيفة التعهد للعقد المهاجم (0xdCA50344) لتعهد عملات 277856 BNO.

! [20230718161633397image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-869690e6f1-dd1a6f-7649e1)

(4) استدعاء وظيفة سحب الطوارئ من العقد المهاجم (0xdCA50344) لاستخراج جميع BNO

! [20230718161641122image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-f71a2770dd-dd1a6f-7649e1)

(5) ثم قم باستدعاء وظيفة unstakeNft للعقد المهاجم (0xdCA50344) ، واسترجع الرقمين المتعهد بهما واحصل على رموز BNO الإضافية.

! [20230718161732948image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-029563c095-dd1a6f-7649e1)

(6) كرر العملية المذكورة أعلاه للحصول باستمرار على رموز BNO إضافية

! [20230718161752651image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-97713b8e2d-dd1a6f-7649e1)

(7) بعد سداد القرض السريع ، استبدل جميع رموز BNO بـ 50.5W BUSD واترك السوق مع الربح.

! [20230718161800166image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-32ec4d3c8e-dd1a6f-7649e1)

** ثانيًا ، تحليل الضعف **

السبب الجذري لهذا الهجوم هو: هناك مشكلة في آلية حساب المكافأة ومنطق التفاعل لوظيفة السحب الطارئ في العقد المهاجم (0xdCA50344) ، مما يتسبب في حصول المستخدم على رمز مكافأة إضافي بعد سحب المبلغ الأساسي.

! [20230718161812689image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-0a81429476-dd1a6f-7649e1)

! [20230718161820027image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-924ee76fca-dd1a6f-7649e1)

يوفر العقد وظيفة EmergencyWithdraw لسحب الرموز في حالات الطوارئ ، ويمسح إجمالي الرهن العقاري والمكافأة للديون للمهاجم ، ولكنه لا يمسح متغير nftAddition الخاص بالمهاجم ، ويتم أيضًا حساب متغير nftAddition من خلال متغير allstake.

! [20230718161834850image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-5a2de1b17c-dd1a6f-7649e1)

في وظيفة unstakeNft ، سيستمر احتساب المكافأة الحالية للمستخدم ، وإذا لم تتم إعادة تعيين متغير nftAddition إلى الصفر ، فستظل الدالة انتظارًا تعيد قيمة إضافية لمكافأة BNO ، مما يتسبب في حصول المهاجم على رموز BNO إضافية.

! [20230718161842539image.png] (https://img-cdn.gateio.im/resized-social/moments-40baef27dd-a4c8cc20c9-dd1a6f-7649e1)

** ثالثًا ، التوصيات الأمنية **

ردًا على هذا الهجوم ، يجب اتباع الاحتياطات التالية أثناء عملية التطوير:

(1) عند حساب المكافآت ، تحقق مما إذا كان المستخدم قد سحب رأس المال.

(2) قبل بدء المشروع عبر الإنترنت ، من الضروري طلب المساعدة الفنية من فريق تدقيق محترف تابع لجهة خارجية.

شاهد النسخة الأصلية
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • أعجبني
  • تعليق
  • مشاركة
تعليق
0/400
لا توجد تعليقات
  • تثبيت