إعادة إدخال الثغرة الأمنية مرة أخرى؟ تحليل الهجوم على ستارز أرينا

خلفية

وفقا للتحذير الأمني لنظام Slow MistEye ، في 7 أكتوبر 2023 ، تعرضت Stars Arena ، البروتوكول الاجتماعي Avalanche on-chain ، للهجوم ، مما أدى إلى خسارة حوالي 2.9 مليون دولار. قام فريق أمان Slow Mist بتحليل الهجوم لفترة وجيزة وشارك النتائج أدناه.

معلومات ذات صلة

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

عقد الهجوم:

تجارة الهجوم:

قلب الهجوم

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

تحليل المعاملات

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

! [إعادة الدخول مرة أخرى؟] تحليل الهجوم على ستارز أرينا] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-98a298d9bb-dd1a6f-69ad2a.webp)

يقوم المهاجم أولا بإنشاء عقد هجوم (0x7f283 و 0xdd9af) ، ويستدعي الطريقة 0xe9ccf3a3 ل Stars Arena: عقد الأسهم من خلال عقد الهجوم ، ثم يقوم بإيداع 1 رمز AVAX.

! [إعادة الدخول مرة أخرى؟] تحليل هجوم ستارز أرينا] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-fccaa140dd-dd1a6f-69ad2a.webp)

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

! [إعادة الدخول مرة أخرى؟] تحليل هجوم ستارز أرينا] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-9279aef172-dd1a6f-69ad2a.webp)

باتباع منطق الاستدعاء للسطر 92 من طريقة 0x2058 ، يمكن العثور على أن طريقة 0x1a9b هي دالة حسابية ، والنتيجة المحسوبة هي قيمة مشابهة للسعر ، وقيمة إرجاعها هي v24 / 0xde0b6b3a7640000 المحسوبة حديثا أو _initialPrice.

تحتوي الأسطر 109 و 110 و 116 التالية من 0x307c و 0x30ef على استدعاء إلى مكالمة منخفضة المستوى ، ولا تزال مكالمة 0x30ef مكالمة خارجية إلى g1 ، أي عنوان عقد هجوم 0xdd9af الوارد. لا تحتوي الدالة على قيد قفل الوافد ، وبعد تنفيذ الاستدعاء الخارجي ، ستنفذ هذه الطريقة فقط الحكم اللاحق إذا لتحديث معلمات field0.length و field0. ليس هناك شك في أن إعادة الدخول تحدث هنا.

! [إعادة الدخول مرة أخرى؟] تحليل هجوم ستارز أرينا] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-3c9611d0bb-dd1a6f-69ad2a.webp)

لنلق نظرة على البيانات التي ينشئها المهاجم في مكالمة إعادة الدخول.

! [إعادة الدخول مرة أخرى؟] تحليل الهجوم على ستارز أرينا] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-ce911c42e9-dd1a6f-69ad2a.webp)

يستدعي الإدخال الخارجي طريقة 0x5632b2e4 ويمر في أربع معلمات أنشأها المهاجم ، والتي تحول 153005ce00 إلى 9100000000000 برقم عشري.

كما ذكر أعلاه ، يتم تنفيذ الاستدعاء الخارجي إلى طريقة 0x5632b2e4 قبل الحكم if (g0 == \ _getMyShares [address (g1)] [msg.sender]). في هذا الوقت، قيمة الحقل0.lengt هي 0 ولا يتم تحديثها. بهذه الطريقة ، يتجاوز المهاجم الحكم في طريقة 0x5632b2e4 ويعدل حالة المعلمات الأربعة التالية من msg.sender ، أي 0xdd9af عقد الهجوم ، ليتم إنشاؤه عند إجراء المكالمة الخارجية.

! [إعادة الدخول مرة أخرى؟] تحليل هجوم ستارز أرينا] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-53695512db-dd1a6f-69ad2a.webp)

بعد القيام بذلك ، اتصل المهاجم ب sellShares لبيع حصته ، وحصل على 266,102.97278 AVAX.

! [إعادة الدخول مرة أخرى؟] تحليل الهجوم على ستارز أرينا] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-54e5a2f231-dd1a6f-69ad2a.webp)

بالتعمق في وظيفة sellShares ، تستدعي الوظيفة في البداية طريقة 0x1a9b ، والتي كانت تسمى في طريقة 0x2058 السابقة ، وهي وظيفة تتعامل مع شراء أو تبادل نوع من الرموز المميزة. يمكننا أن نرى أن الطريقة 0x2329 في الطريقة 0x1a9b بتحديث المالك _9f[g0] ، وتم تعديل هذه المعلمة إلى 9100000000000 التي أنشأها المهاجم عند الدخول.

! [إعادة الدخول مرة أخرى؟] تحليل هجوم ستارز أرينا] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-60823d09ab-dd1a6f-69ad2a.webp)

بالعودة إلى طريقة 0x1a9b ، أعد الحساب بناء على القيمة التي تم إنشاؤها مسبقا بشكل ضار (انظر الملاحظة لمعرفة المبلغ المحسوب).

! [إعادة الدخول مرة أخرى؟] تحليل الهجوم على ستارز أرينا] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-764b869b64-dd1a6f-69ad2a.webp)

بعد الحساب أعلاه ، تغير السعر المقابل للسهم المحسوب حديثا ، والنتيجة هي 274,333.061476814e18. بعد فرض سلسلة من الرسوم ، يستخدم المهاجم تركيبات ضارة للتلاعب بالسعر دون تعديل السهم وبيع السهم وتحقيق ربح بنجاح.

ملخص

في قلب هذا الهجوم يوجد تحديث تبعية حساب السعر الناجم عن هجوم إعادة الدخول ، مما يؤدي إلى تلاعب مماثل في الأسعار الخبيثة. يقترح فريق أمان Slow Mist أن يحاول فريق المشروع التدقيق من قبل شركات أمان متعددة قبل نشر العقد. في الوقت نفسه ، عند الترميز ، يجب أن يفي بمواصفات ترميز Checks-Effects-Interaction قدر الإمكان ، ويضيف قفلا مضادا لإعادة الدخول.

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • تعليق
  • مشاركة
تعليق
0/400
لا توجد تعليقات
  • تثبيت