Nguồn: SharkTeam
Ngày 10 tháng 6 năm 2024, UwU Lend bị tấn công và dự án bị mất khoảng năm 1930 Mười nghìn đô la Mỹ.
1. Phân tích giao dịch tấn công
Kẻ tấn công: 0x841dDf093f5188989fA1524e7B893de64B421f47
Kẻ tấn công đã thực hiện tổng cộng 3 giao dịch tấn công:
Giao dịch tấn công 1:
0x242a0fb4fde9de0dc2fd42e8db743cbc197ffa2bf6a036ba0bba303df296408b
Giao dịch tấn công 2:
0xb3f067618ce54bc26a960b 66 0cfc28f9ea0315e2e9a1a855ede1508eb4017376 p>
Tấn công giao dịch 3:
0xca1bbf3b320662c89232006f1ec6624b56242850f07e0f1dadbe4f69ba0d6ac3
Lấy giao dịch tấn công 1 làm ví dụ để phân tích:
Hợp đồng tấn công: 0x21c58d8f816578b1193aef4683e8c64405a4312e
Hợp đồng mục tiêu: Hợp đồng ngân quỹ cho vay UwU, bao gồm:
uSUSDE: 0xf1293141fc6ab23b2a0143acc196e3429e0b67a6
uDAI :0xb95bd0793bcc5524af358ffaae3e38c3903c7626
uUSDT: 0x24959f75d7bda1884f1ec9861f644821ce233c7d
Quá trình tấn công như sau:
1. Cho vay nhanh nhiều token từ các nền tảng khác nhau, bao gồm WETH, WBTC, sUSDe, USDe, DAI, FRAX, USDC, GHO
Địa chỉ nhận mã thông báo là 0x4fea76b66db8b548842349dc01c85278da3925da
< p style="text-align: left;">Mã thông báo và số lượng của khoản vay flash như sau:
Khoản vay flash 159.053,16 WETH và 14.800 WBTC từ AaveV3
p>
Khoản vay flash 40.000 WETH từ AaveV2
Khoản vay flash 91.075,70 WETH và 4.979,79 WBTC từ Spark< /p>
Khoản vay nhanh 301.738.880,01 sUSDe, 236.934.023,17 USDe và 100.786.052,15 DAI từ Morpho
Từ Uniswap V3: Khoản vay flash FRAX-USDC 60.000.000 FRAX và 15.000.000 USDC
Khoản vay flash 4.627.557,47 GHO và 38.413,34 WETH từ Balancer
Khoản vay nhanh 500.000.000 DAI từ Maker
Tổng cộng khoảng 328.542,2 WETH, 19779,79 WBTC, 600786052,15 DAI, 301.738.880,01 sUSDe, 236.934.023,17 USDe, 4 ,627,557 .47 GHO, 60.000.000 FRAX, 15.000.000 USDC
2. Chuyển token flash loan sang hợp đồng 0xf19d66e82ffe8e203b30df9e81359f8a201517ad (viết tắt là 0xf19d) để chuẩn bị cho cuộc tấn công.
3. Kiểm soát giá sUSDe (hạ giá) bằng cách trao đổi token
(1)USDecrvUSD.exchange
Chuyển đổi 8.676.504,84 USDe thành 8.730.453,49 crvUSD Số lượng USDe tính bằng USDecrvUSD tăng và giá giảm. tăng giá
(2)USDeDAI.exchange
Đổi 46.452.158,05 USDe thành 14.389.460,59 DAI. Số lượng USDe trong USDeDAI tăng, giá giảm, số lượng DAI giảm và giá tăng
(3) FRAXUSDe.exchange
Đổi 14.477.791,69 USDe thành 46.309.490,86 FRAX và số lượng USDe trong USDeDAI tăng lên, giá giảm, số lượng FRAX giảm và giá tăng
(4) GHOUSDe .exchange
Đổi 4.925.427,20 USDe thành 4.825.479,07 GHO, số lượng USDe trong USDeDAI tăng và giá giảm, số lượng GHO giảm và giá tăng
(5 ) USDeUSDC.exchange
Đổi 14.886.912,83 USDe thành 14.711.447,94 USDC, lượng USDe trong USDeDAI tăng, giá giảm, lượng USDC Giảm, giá tăng
Sau trao đổi trên, giá USDe trong 5 nhóm quỹ sẽ giảm. Cuối cùng, giá của sUSDe giảm mạnh.
4. Liên tục tạo các vị thế cho vay, nghĩa là gửi các tài sản khác (WETH, WBTC và DAI) vào hợp đồng LendingPool, sau đó vay sUSDe. Do giá sUSDe giảm mạnh nên lượng sUSDe cho vay lớn hơn rất nhiều so với trước khi giá giảm mạnh.
5. Tương tự như bước 3, thao tác ngược lại sẽ làm tăng giá sUSDe.
Khi sUSDe được kéo lên, giá trị của vị thế vay ở bước 4 vượt quá giá trị tài sản thế chấp và đạt tiêu chuẩn thanh lý.
6. Thanh lý các vị thế cho vay theo đợt và nhận phần thưởng thanh lý uWETH
7. Hoàn trả khoản vay và rút các tài sản cơ bản WETH, WBTC, DAI và sUSDe.
8. Gửi lại sUSDe vào LendingPool Tại thời điểm này, giá sUSDe tăng lên, do đó có thể cho vay thêm nhiều tài sản khác, bao gồm DAI và USDT.
9. Trao đổi token và hoàn trả khoản vay nhanh. Lợi nhuận cuối cùng là 1.946,89 ETH
2. Phân tích lỗ hổng bảo mật
< p style="text-align: left;">Qua phân tích ở trên, người ta thấy rằng có một số lượng lớn các khoản vay nhanh và nhiều hành vi thao túng giá của sUSDe trong toàn bộ quá trình tấn công. Khi sUSDe được thế chấp, nó sẽ xảy ra. ảnh hưởng đến số lượng tài sản đi vay; khi sUSDe được cho vay sẽ ảnh hưởng đến lãi suất cho vay và do đó ảnh hưởng đến hệ số thanh lý (yếu tố sức khỏe).
Kẻ tấn công lợi dụng điều này để hạ giá sUSDe thông qua các khoản vay nhanh, thế chấp các tài sản khác, cho vay một lượng lớn sUSDe, sau đó tăng giá sUSDe. Thanh lý tài sản thế chấp để kiếm lợi nhuận, cho các tài sản khác vay số tiền thế chấp còn lại, và cuối cùng hoàn trả khoản vay nhanh, và cuộc tấn công hoàn tất.
Từ bước 3 ở trên, chúng tôi phát hiện ra rằng kẻ tấn công đã kiểm soát USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe và USDe/SDC của Curve Finance. Giá USDe trong năm nhóm giao dịch này được sử dụng để kiểm soát giá của sUSDe. Chức năng đọc giá như sau:
< img src ="https://img.jinse.cn/7241044_image3.png" alt="20240612180741019image.png">
Trong số đó, giá sUSDe là được tính từ 11 mức giá Trong số thu được, 10 giá đầu tiên được đọc từ CurveFinance và giá cuối cùng được cung cấp bởi UniswapV3.
Giá đọc từ CurveFinance bao gồm năm giao dịch: USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe và USD/SDC Pools được cung cấp và cũng là 5 nhóm giao dịch bị kẻ tấn công thao túng trong các giao dịch tấn công.
Giá trả về là giá được đọc bởi uwuOracle, trong nhóm giao dịch CurveFinance hợp đồng Được tính bằng price_oracle(0) và get_p(0).
(1) Giá là giá do Chainlink cung cấp và không thể bị thao túng;
(2) Thông số nhóm giao dịch
Kẻ tấn công thao túng giá trị trả về của get_p(0) bằng cách thao túng số lượng mã thông báo trong nhóm giao dịch, từ đó thao túng giá .
3. Khuyến nghị bảo mật
Để đối phó với cuộc tấn công này, cần tuân thủ những điều sau trong quá trình thực hiện quá trình phát triển Lưu ý:
(1) Để giải quyết lỗ hổng thao túng giá, bạn có thể sử dụng dự đoán giá ngoài chuỗi, điều này có thể tránh thao túng giá.
(2) Trước khi dự án lên mạng, việc kiểm tra hợp đồng thông minh cần được thực hiện bởi một công ty kiểm toán chuyên nghiệp bên thứ ba.