المصدر: تكنولوجيا Shenzhen Lingshi
مقدمة أساسية
في 5 مارس 2024، اكتشفنا معاملة غير طبيعية في سلسلة arbiscan: https://arbiscan.io/tx/0xe80a16678b5008d5be1484ec6e9e77dc6307632030553405863ffb38c1f94266
بعد التحليل، وجدنا أنه كان هجومًا على WOOFi، مما تسبب في خسارة إجمالية تبلغ حوالي 9 ملايين دولار أمريكي.
WOOFi هو تطبيق لامركزي شامل (DApp) تم إنشاؤه بواسطة شبكة WOO. تهدف WOOFI إلى تحسين تجربة المستخدمين مع التمويل اللامركزي (DeFi) من خلال توفير انزلاق منخفض للغاية، ورسوم صرف تنافسية، وميزات مفيدة أخرى.
يمكن لمستخدمي WOOFi استرداد الأصول الرقمية الشهيرة وإتاحة الفرصة لهم لكسب الدخل عن طريق التوقيع المساحي وتوفير السيولة للشبكة. إحدى عروض القيمة الرئيسية التي أنشأتها منصة WOOFi لمستخدمي DeFi هي السيولة العميقة.
تعرض عقد المبادلة في WOOFi للهجوم هذه المرة. عنوان العقد هو: https://arbiscan.io/address/0xeff23b4be1091b53205e35f3afcd9c7182bf3062#code
strong>
تحليل الهجوم والحوادث
استخدم المهاجم flashLoan من Uniswap وTraderJoe الأموال الأولية تم الحصول على مبلغ للهجوم يبلغ إجماليه 10504796 USDC.e و2721172 WOO.
ثم ، قام المهاجم برهن USDC.e المقترض في Slio Finance (تم رهن إجمالي 7,000,000 USDC.e) وأقرض 5,092,663 WOO.
متابعة ، استخدم المهاجم ما تبقى من USDC.e لاستبداله بـ WOO من خلال وظيفة المبادلة الخاصة بـ WOOFi، وبالتالي زيادة سعر WOO.
تمرير أدت ثلاث عمليات مبادلة إلى رفع سعر WOO من 56884100 إلى 60400479، مما خلق الظروف لهجمات لاحقة.
يحدث الهجوم الحقيقي عندما يقوم المهاجم بتبادل WOO مقابل USDC.e،
كما ترون، بعد هذا المبادلة، تغير سعر WOO إلى 7، وهو 0.00000007 دولار أمريكي. وبالمقارنة مع السعر السابق، فقد انخفض بمقدار 8.62 مليون مرة.
من خلال النظر إلى رمز العقد، وجدنا أن هناك خللًا في معالجة البيانات في عقد WOOFi عند تحويل BaseToken إلى QuoteToken.
نحن راجع طريقة حساب سعر BaseToken عند بيع BaseToken للحصول على QuoteToken
newPrice = (1 - 2 * k * oracle.price * baseAmount) * oracle.price< /p>
يمكن للمهاجم التحكم في oracle.price وbaseAmount لأن قيمة k لا تتغير. يمكن للمهاجم التعامل مع oracle.price، وهو سعر BaseToken، من خلال مقايضات متعددة، ويمكنه أيضًا التعامل مع baseAmount. يمكن أن نرى من هذه الصيغة أن newPrice يجب أن يكون أقل من oracle.price. لذلك، يمكن للمهاجم التحكم في مجموعة oracle.price وbaseAmount للتعامل مع newPrice إلى مستوى منخفض للغاية.
أخيرًا، استخدم المهاجم مبلغًا صغيرًا من USDC.e لتبادل مبلغ كبير من WOO، وإرجاع أصل القرض والسحب النقدي.
بعد يومين، تواصل موظفو WOOFi الرسميون مع المهاجم وذكروا أنه يمكنهم تقديم 10% كمكافأة Whitehat. ومع ذلك، حتى وقت النشر، لم يعد المهاجم الأموال المسروقة.
ثم قام المسؤول بإصلاح هذه المشكلة، يمكنك أن ترى أن الإصلاح الرسمي هو إلغاء معامل 2x. https://github.com/woonetwork/WooPoolV2/commit/f5fe28acc77cf3801ac379db9bf99bb61b73ba17
الملخص
سبب هذه الثغرة الأمنية هو وجود ثغرة في الحساب بالنسبة للنموذج الاقتصادي، يمكن للمهاجم التحكم في سعر كمية البيع والشراء، مما يتسبب في تقلص سعر الرمز المميز بشكل كبير، مما يؤدي في النهاية إلى قيام المهاجم باستخدام القليل جدًا من USDC.e لتفريغ رموز WOO الخاصة بالمشروع. يوصى بأن يقوم طرف المشروع بإجراء تحقق متعدد الأطراف عند تصميم النموذج الاقتصادي ومنطق تشغيل الكود، ومحاولة اختيار شركات تدقيق متعددة لإجراء التدقيق المتبادل قبل بدء العقد عبر الإنترنت. ص>