المصدر: SharkTeam
في 10 يونيو 2024، هوجمت جامعة UwU Lend، وخسر المشروع حوالي عام 1930 عشرة آلاف دولار أمريكي.
1. تحليل معاملات الهجوم
المهاجم: 0x841dDf093f5188989fA1524e7B893de64B421f47
شن المهاجم إجمالي 3 معاملات هجومية:
معاملة الهجوم 1:
0x242a0fb4fde9de0dc2fd42e8db743cbc197ffa2bf6a036ba0bba303df296408b
معاملة الهجوم 2:
0xb3f067618ce54bc26a9 60ب 660cfc28f9ea0315e2e9a1a855ede1508eb4017376 p>
معاملة الهجوم 3:
0xca1bbf3b320662c89232006f1ec6624b56242850f07e0f1dadbe4f69ba0d6ac3
خذ معاملة الهجوم 1 كمثال للتحليل:
عقد الهجوم: 0x21c58d8f816578b1193aef4683e8c64405a4312e
العقد المستهدف: عقد خزانة UwU Lend، بما في ذلك:
uSUSDE: 0xf1293141fc6ab23b2a0143acc196e3429e0b67a6
uDAI :0xb95bd0793bcc5524af358ffaae3e38c3903c7626
uUSDT: 0x24959f75d7bda1884f1ec9861f644821ce233c7d
عملية الهجوم هي كما يلي:
1. قم بإقراض Flash رموزًا متعددة من منصات مختلفة، بما في ذلك WETH وWBTC وsUSDe وUSDe وDAI وFRAX وUSDC وGHO
عنوان استلام الرمز المميز هو 0x4fea76b66db8b548842349dc01c85278da3925da
< p style="text-align: left;">الرموز المميزة ومبالغ القروض السريعة هي كما يلي:
قرض فلاش 159,053.16 WETH و14,800 WBTC من AaveV3
p>
قرض سريع بقيمة 40,000 WETH من AaveV2
قرض سريع بقيمة 91,075.70 WETH و4,979.79 WBTC من Spark< /p>
قرض فلاش 301,738,880.01 sUSDe و236,934,023.17 USDe و100,786,052.15 DAI من Morpho
من Uniswap V3: قرض سريع FRAX-USDC بقيمة 60,000,000 FRAX و15,000,000 USDC
قرض سريع 4,627,557.47 GHO و38,413.34 WETH من Balancer
قرض سريع بقيمة 500,000,000 DAI من Maker
إجمالي حوالي 328,542.2 WETH، 19779.79 WBTC، 600786052.15 DAI، 301,738,880.01 sUSDe، 236,934,023.17 دولار أمريكي، 4,627,557 .47 GHO، 60,000,000 FRAX، 15,000,000 USDC
2. قم بتحويل رمز قرض الفلاش إلى العقد 0xf19d66e82ffe8e203b30df9e81359f8a201517ad (المختصر بـ 0xf19d) للتحضير للهجوم.
3. التحكم في سعر sUSDe (خفض السعر) عن طريق تبادل الرموز المميزة
(1)USDecrvUSD.exchange
تحويل 8,676,504.84 USDe إلى 8,730,453.49 crvUSD. تزداد كمية USDe في USDecrvUSD وينخفض السعر ارتفاع الأسعار
(2)USDeDAI.exchange
(3) FRAXUSDe.exchange
تبادل 14,477,791.69 دولارًا أمريكيًا إلى 46,309,490.86 FRAX، وتزداد كمية USDe في USDeDAI، وينخفض السعر، وتقل كمية FRAX، ويزداد السعر
(4) GHOUSDe .exchange
تحويل 4,925,427.20 USDe إلى 4,825,479.07 GHO، تزداد كمية USDe في USDeDAI وينخفض السعر، وتنخفض كمية GHO ويرتفع السعر
(5 ) USDeUSDC.exchange
تحويل 14,886,912.83 USDe إلى 14,711,447.94 USDC، يزداد مقدار USDe في USDeDAI، وينخفض السعر، ومبلغ انخفاض USDC، وزيادة السعر
بعد في حالة التبادل المذكور أعلاه، سينخفض سعر الدولار الأمريكي في صناديق الصناديق الخمسة. وفي نهاية المطاف، انخفض سعر sUSDe.
4. إنشاء مراكز إقراض بشكل مستمر، أي إيداع أصول أخرى (WETH وWBTC وDAI) في عقد LendingPool، ثم اقتراض sUSDe. ونظرًا لانخفاض سعر sUSDe، فإن مبلغ sUSDe الذي تم إقراضه كان أكبر بكثير مما كان عليه قبل انخفاض السعر.
5. كما هو الحال في الخطوة 3، ستؤدي العملية العكسية إلى زيادة سعر sUSDe.
عند سحب sUSDe، تتجاوز قيمة المركز المقترض في الخطوة 4 قيمة الضمان وتصل إلى معيار التصفية.
6. تصفية مراكز القروض على دفعات والحصول على مكافأة التصفية uWETH
7. قم بسداد القرض واسحب الأصول الأساسية WETH وWBTC وDAI وsUSDe.
8. قم بإيداع sUSDe في LendingPool مرة أخرى في هذا الوقت، يتم رفع سعر sUSDe، بحيث يمكن إقراض المزيد من الأصول الأخرى، بما في ذلك DAI وUSDT.
9. تبادل الرموز وسداد القرض السريع. وكان الربح النهائي 1,946.89 إيثريوم
2.تحليل الثغرات الأمنية
< p style="text-align: left;">من خلال التحليل أعلاه، وجد أن هناك عددًا كبيرًا من القروض السريعة والتلاعبات المتعددة بسعر sUSDe أثناء عملية الهجوم بأكملها، وعندما يتم رهن sUSDe تؤثر على مبلغ الأصول المقترضة عندما يتم إقراض sUSDe، مما سيؤثر على معدل الإقراض وبالتالي معامل التصفية (عامل الصحة).
يستغل المهاجم هذا لخفض سعر sUSDe من خلال القروض السريعة، ورهن أصول أخرى، وإقراض مبلغ كبير من sUSDe، ثم رفع سعر sUSDe. قم بتصفية أصول الرهن العقاري لتحقيق الربح، وقم بإقراض الرهن العقاري المتبقي من sUSDe إلى أصول أخرى، وأخيرًا قم بسداد القرض السريع، واكتمل الهجوم.
من الخطوة 3 أعلاه، وجدنا أن المهاجم كان يتحكم في USDe/rvUSD وUSDe/AI وFRAX/SDe وGHO/SDe وUSDe/SDC الخاص بشركة Curve Finance. يتم استخدام سعر USDe في مجمعات التداول الخمسة هذه للتحكم في سعر sUSDe. وظيفة قراءة السعر هي كما يلي:
< img src ="https://img.jinse.cn/7241044_image3.png" alt="20240612180741019image.png">
من بينها سعر sUSDe هو يتم حسابها من 11 سعرًا تم الحصول عليها، تتم قراءة أول 10 أسعار من CurveFinance، ويتم توفير السعر الأخير بواسطة UniswapV3.
يتكون السعر المقروء من CurveFinance من خمس معاملات: يتم توفير مجموعات USDe/rvUSD وUSDe/AI وFRAX/SDe وGHO/SDe وUSD/SDC وهي أيضًا مجموعات المعاملات الخمسة التي يتلاعب بها المهاجمون في المعاملات الهجومية.
السعر الذي تم إرجاعه هو السعر الذي قرأته uwuOracle، في مجمع تداول CurveFinance يتم حساب العقد بواسطة Price_Oracle(0) وget_p(0).
(1) السعر هو السعر الذي تقدمه Chainlink ولا يمكن التلاعب به؛
(2) معلمات تجمع المعاملات
يتلاعب المهاجم بالقيمة المرجعة لـ get_p(0) عن طريق التلاعب بعدد الرموز المميزة في تجمع المعاملات، وبالتالي التلاعب بالسعر .
3. توصيات أمنية
ردًا على هذا الهجوم، يجب اتباع ما يلي أثناء ملاحظات عملية التطوير:
(1) لمعالجة ثغرة التلاعب بالأسعار، يمكنك استخدام أوراكل للسعر خارج السلسلة، والذي يمكنه تجنب التلاعب بالأسعار.
(2) قبل بدء المشروع عبر الإنترنت، يجب إجراء تدقيق العقد الذكي بواسطة شركة تدقيق احترافية تابعة لجهة خارجية. ص>