https://medium.com/@numencyberlabs/bsc-chain-cross-chain-bridge-hacking-analysis-24338f9a80
وصف موجز للهجوم
استغل المخترق (العنوان: 0x489a8756c18c0b8b24ec2a2b9ff3d4d447f79bec) ثغرة أمنية في IAVL TREE ، رمز المكتبة الأساسي لآلية التحقق من صحة رسالة الجسر عبر السلسلة ، لتزوير رسالة سحب ضارة ، مما أدى إلى إرسال الجسر عبر السلاسل إلى إرسال معاملتين منفصلتين إلى مخترق ، تبلغ قيمة كل منها مليون BNB ، ويبلغ إجمالي قيمتها حوالي 600 مليون دولار أمريكي.
سمحت الاستجابة في الوقت المناسب من CoinSec في كبح الهجوم لهم بحفظ معظم الأصول ، ونتيجة لذلك فقدوا ما يقرب من 100 مليون دولار فقط. ومع ذلك ، لا يزال هذا يعتبر مبلغًا كبيرًا في نظر الجمهور و BNBChain.
عنوان المعاملة:
https://bscscan.com/tx/0xebf83628ba893d35b496121fb8201666b8e09f3cbadf0e269162baa72efe3b8b
تحليل منهجية استغلال نقاط الضعف
وقع الهجوم على سلسلة BSC حيث يوفر Binance Bridge قيمة سيولة إلى BSC. من تحليلنا ، قررنا أن العنصر الرئيسي وراء الهجوم هو مكتبةشجرة IAVL على BSC L1 ، والذي تم تنفيذه في الأصل بواسطة COMOS واستخدامه بواسطة BSC Chain. يُعرف هذا النوع من الاستغلال بالهجوم عبر السلاسل.
تُستخدم شجرة IAVL للتحقق من شرعية الرسائل المرسلة إلى جسر Binance Cross-chain.
عادةً ما ترفض شجرة IAVL تلقائيًا الرسائل التي تم تزويرها بواسطة المتسللين. ومع ذلك ، اكتشف المهاجم هذه المرة ثغرة أمنية في عملية التحقق من IAVL ، مما سمح له بخداع شجرة IAVL لقبول الرسائل التعسفية. سمح ذلك للمتسلل باستخراج 2M BNB من جسر السلسلة المتقاطعة من خلال إنشاء الرسالة وتزييفها بعناية.
شجرة IAVL ، كما يوحي اسمها ، هي شجرة بحث ثنائية ذاتية التوازن سميت على اسم مخترعيها ، جورجي أديلسون-فيلسكي وإيفجيني لانديس. كان الغرض من هيكل البيانات الخاص به هو توفير تخزين مستمر لأزواج القيمة الرئيسية ، مثل أرصدة الحساب المخزنة) بحيث يمكن أن تكون تجزئة جذر Merkle الحاسمة على الكمبيوتر.
دعا المتسلل وظيفة handlePackage في عقد جسر سلسلة متقاطعة BSC ثم دعا العقد المجمع مسبقًا للتحقق من شرعية MerkleProof.
ما هو ما قبل التجميع؟
تؤدي الترجمة المسبقة نوعًا ما دورًا مشابهًا لمكالمة النظام في نظام التشغيل. عندما يقبل نظام التشغيل رقم syscall (الرقم مشابه لـ 0x65) ، سيتم تنفيذ استدعاء النظام المقابل. عادة ، يتم إنشاء عنوان العقد عند نشر العقد ، ثم يتم كتابته مباشرة 0x65 ميتة. عندما عثر BSC L1 على هذا العنوان ، فإنه يذهب مباشرة لاستدعاء عملية MerkleProof ، أي لاستدعاء IAVLTree.
الهجوم باختصار
من خلال نشر العقد ، دعا المتسلل وظيفة handlePackage لعقد جسر عبر سلسلة سلسلة BSC
(https://bscscan.com/address/0x0000000000000000000000000000000000002000#code#L1082 )
لتزييف بيانات الإثبات ، التي اجتازت المجموع الاختباري لشجرة IAVL وبالتالي نقل الجسر عبر السلسلة 2M BNB إلى المتسلل.
أخيرا،
قدم Samczsun بعض التكهنات حول طبيعة هذه الثغرة الأمنية ، لكن من غير المؤكد ما إذا كانت جميع التفاصيل دقيقة. نحن حاليًا في خضم تحليل الهجوم أيضًا ، وسنواصل نشر المزيد من المعلومات في المستقبل عندما يتم الكشف عن مزيد من التفاصيل. نحن نشجعك على البقاء على اتصال ومتابعتنا لتحليل متابعة للهجوم.