Vào ngày 10 tháng 6 năm 2024, UwU Lend bị tấn công và dự án thiệt hại khoảng 19,3 triệu USD.
SharkTeam đã tiến hành phân tích kỹ thuật về sự cố này ngay lập tức và tóm tắt các biện pháp phòng ngừa an ninh. Chúng tôi hy vọng rằng các dự án tiếp theo có thể học hỏi từ điều này và cùng nhau xây dựng tuyến phòng thủ an ninh cho ngành công nghiệp blockchain.
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:
0xb3f067618ce54bc26a960b660cfc28f9ea0315e2e9a1a855ede1508eb4017376
Giao dịch tấn công 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 kho bạc UwU Lend, 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
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
Token và số lượng flash loan như sau:
Khoản vay nhanh 159.053,16 WETH và 14.800 WBTC từ AaveV3
Khoản vay nhanh 40.000 WETH từ AaveV2
Khoản vay nhanh 91.075,70 WETH và 4.979,79 WBTC từ Spark
Khoản vay nhanh 301.738.880,01 sUSDe, 236.934.023,17 USDe và 100.786.052,15 DAI từ Morpho
Khoản vay flash 60.000.000 FRAX và 15.000.000 USDC từ Uniswap V3: FRAX-USDC
Khoản vay nhanh 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,0 00 USDC
2. Chuyển flash loan Token vào hợp đồng 0xf19d66e82ffe8e203b30df9e81359f8a201517ad (viết tắt là 0xf19d) để chuẩn bị tấn công.
3. Kiểm soát giá sUSDe (hạ giá) bằng cách trao đổi token
(1)USDecvUSD.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.
(2) USDeDAI.exchange
Đổi 46.452.158,05 USDe thành 14.389.460,59 DAI Số lượng USDe tính bằng 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 Số lượng USDe tính bằng USDeDAI tăng và 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, lượng USDe tính bằng USDeDAI tăng, giá giảm, lượng GHO giảm và giá tăng
(5) USDeUSDC.exchange
Chuyển đổi 14.886.912,83 USDe thành 14.711.447,94 USDC Số lượng USDe trong USDeDAI tăng và giá giảm.
Sau đợt trao đổi trên, giá USDe trong 5 nhóm quỹ đã 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.
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 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
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
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 suốt quá trình tấn công. Khi sUSDe được thế chấp, nó sẽ ảnh hưởng đến số lượng tài sản cho vay khi sUSDe được cho vay; nó 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).
Những 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 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 và thế chấp số sUSDe còn lại để cho vay hết các tài sản khác, 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 đã thao túng giá sUSDe bằng cách kiểm soát giá USDe trong 5 nhóm giao dịch của Curve Finance: USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe và USDe/SDC. Chức năng đọc giá như sau:
Trong số đó, giá sUSDe được tính từ 11 giá, 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 được cung cấp bởi năm nhóm giao dịch: USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe và USD/SDC, đây cũng là năm nhóm giao dịch bị kẻ tấn công thao túng trong giao dịch tấn công.
Giá đọc từ CurveFinance được cung cấp bởi năm nhóm giao dịch: USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe và USD/SDC, đây cũng là năm nhóm giao dịch bị kẻ tấn công thao túng trong giao dịch tấn công.
Giá trả lại được tính từ giá được đọc bởi uwuOracle, price_oracle(0) và get_p(0) trong hợp đồng nhóm giao dịch CurveFinance.
(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á.
Để đối phó với cuộc tấn công này, cần tuân thủ các biện pháp phòng ngừa sau trong quá trình phát triển:
(1) Để giải quyết lỗ hổng của thao túng giá, có thể sử dụng dự báo giá ngoài chuỗi để tránh thao túng giá.
(2) Trước khi dự án đi vào hoạt động trực tuyến, 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.
(1) Để giải quyết lỗ hổng của thao túng giá, có thể sử dụng dự báo giá ngoài chuỗi để tránh thao túng giá.
(2) Trước khi dự án đi vào hoạt động trực tuyến, 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.
Tầm nhìn của SharkTeam là bảo vệ thế giới Web3. Nhóm bao gồm các chuyên gia bảo mật giàu kinh nghiệm và các nhà nghiên cứu cấp cao từ khắp nơi trên thế giới, những người thành thạo lý thuyết cơ bản về blockchain và hợp đồng thông minh. Nó cung cấp các dịch vụ bao gồm nhận dạng và ngăn chặn rủi ro, kiểm toán hợp đồng thông minh, KYT/AML, phân tích trên chuỗi, v.v. và đã tạo ra nền tảng chặn và nhận dạng rủi ro thông minh trên chuỗi ChainAegis, có thể chống lại Mối đe dọa liên tục nâng cao một cách hiệu quả (Nâng cao). Mối đe dọa dai dẳng) trong thế giới Web3, APT). Nó đã thiết lập mối quan hệ hợp tác lâu dài với những người chơi chủ chốt trong các lĩnh vực khác nhau của hệ sinh thái Web3, như Polkadot, Moonbeam, Polygon, Sui, OKX, imToken, Collab.Land, TinTinLand, v.v.
Nguồn: https://www.sharkteam.org
Twitter: https://twitter.com/sharkteamorg
Điện tín: https://t.me/sharkteamorg
Bất hòa: https://discord.gg/jGH9xXCjDZ
Tất cả bình luận