
Ra mắt đã bị tấn công, Radiant Protocol thiệt hại 4,5 triệu USD
Tuyển chọn TechFlowTuyển chọn TechFlow

Ra mắt đã bị tấn công, Radiant Protocol thiệt hại 4,5 triệu USD
Lý do là trên thị trường USDC mới, kẻ tấn công đã khai thác và khuếch đại vấn đề làm tròn toán học trong hàm "burn", cho phép rút thêm USDC ngoài ý muốn.
Tác giả: Daniel Tan
Vào ngày 3 tháng 1 năm 2024 theo giờ Bắc Kinh, giao thức Radiant trên Arbitrum đã bị tấn công bằng flash loan. Hacker đã thực hiện tổng cộng 3 cuộc tấn công vào giao thức #Radiant, khiến thiệt hại lên tới 1902 ETH (tương đương 4,5 triệu USD). Nguyên nhân gốc rễ là khai thác và lợi dụng lỗi làm tròn toán học trong hàm "burn" trên thị trường $USDC mới, cho phép hacker rút thêm tiền $USDC.
MetaTrust Labs đã tiến hành nghiên cứu và phân tích sâu về vụ tấn công này, làm rõ cách thức mà hacker đã lợi dụng lỗ hổng để phát động cuộc tấn công.
Giao thức cho vay Radiant Protocol
Radiant là một giao thức cho vay phi tập trung, không lưu ký, hoạt động trên nhiều chuỗi bao gồm Arbitrum, BNBChain và Ethereum.

Sau khi xảy ra vụ tấn công, giá trị tài sản bị khóa (TVL) của giao thức Radiant vẫn còn 313 triệu USD, vì đội ngũ dự án đã nhanh chóng tạm dừng giao thức ngay sau khi bị tấn công, ngăn chặn tổn thất thêm.

Thời gian diễn ra sự việc

Các giao dịch
0xc5c4bbddec70edb58efba60c1f27bce6515a45ffcab4236026a5eeb3e877fc6d
0x2af556386c023f7ebe7c662fd5d1c6cc5ed7fba4723cbd75e00faaa98cd14243
0x1ce7e9a9e3b6dd3293c9067221ac3260858ce119ecb7ca860eac28b2474c7c9b
Tài sản bị mất
Ba giao dịch tấn công đã gây ra tổng thiệt hại hơn 1902 ETH, tương đương hơn 4,5 triệu USD. Tại thời điểm viết bài, 1902 $ETH vẫn đang nằm trong ví của hacker (0x826d5f4d8084980366f975e10db6c4cf1f9dde6d).
Hacker
0x826d5f4d8084980366f975e10db6c4cf1f9dde6d
Hợp đồng tấn công
0x39519c027b503f40867548fb0c890b11728faa8f
Hợp đồng bị tấn công
Radiant: Lending Pool:
0xf4b1486dd74d07706052a33d31d7c0aafd0659e1
rUSDCn:
0x3a2d44e354f2d88ef6da7a5a4646fd70182a7f55
Điều gì xảy ra trước khi bị tấn công
Chỉ 15 giây trước khi bị tấn công, nhóm phát triển vừa tạo ra một thị trường USDC mới trên Arbitrum, và hacker là người đầu tiên tương tác với thị trường USDC mới này.

Các bước tấn công
Xét ví dụ ở giao dịch tấn công đầu tiên: 0x1ce7e9a9e3b6dd3293c9067221ac3260858ce119ecb7ca860eac28b2474c7c9b.
1. Mượn 3 triệu USD USDC từ AAVE thông qua chức năng flash loan;
2. Gửi 2 triệu $USDC vào Radiant Pool, lúc này liquidityIndex là 1e27;

3. Thực hiện khoản flash loan 2 triệu USD trên Radiant Lending Pool, làm tăng liquidityIndex lên 1.8e36.
4. Lặp lại bước 3 tổng cộng 151 lần, đẩy liquidityIndex lên đến 2.7e38, tức là gấp 270 tỷ lần so với giá trị ban đầu.

5. Vay 90.6 $ETH từ Radiant Pool, trị giá khoảng 215K USD – đây chính là lợi nhuận từ cuộc tấn công;
6. Tạo hợp đồng mới (0xd8b591);
7. Cấp quyền chi tiêu USDC không giới hạn cho hợp đồng mới, chuyển 543K $USDC vào hợp đồng mới và sử dụng hợp đồng này để thực hiện các bước tiếp theo;
8. Nạp 543K $USDC vào Radiant Pool, đúc được 2 wei token, do amountScaled = 2, cụ thể: 543600000002 * 1e27 / 271800000000999999999999998631966035920 = 2;


9. Rút 407K $USDC từ Radiant Pool, nhưng chỉ thiêu hủy 1 wei token, vì amountScaled = 1: 407700000000 * 1e27 / 271800000000999999999999998631966035920 = 1.5, và do lỗi làm tròn số học. Lưu ý rằng amountScaled là biến kiểu uint256, nên giá trị 1.5 sẽ bị làm tròn xuống thành 1.


10. Gửi thêm 271K $USDC vào Radiant Pool, đúc được lượng token với amountScaled = 1, vì: 271800000001 * 1e27 / 271800000000999999999999998631966035920 = 1.
11. Rút 407K $USDC từ Radiant Pool, chỉ thiêu hủy 1 đơn vị amountScaled.
12. Lặp lại bước 10 và 11 tối đa 18 lần, rút hết toàn bộ số $USDC mà hacker đã gửi vào thị trường mới trước đó.
13. Đổi 2 $WETH lấy 4.73K $USDC, sau đó đổi 3.23K $USDC lấy 1.36 $WETH.
14. Trả khoản flash loan từ AAVE với số vốn gốc 3 triệu USD USDC và phí 15 nghìn USD USDC.
15. Thu về lợi nhuận 90 ETH.
Nguyên nhân gốc rễ
Nguyên nhân gốc rễ nằm ở chỗ hacker là người đầu tiên tương tác với thị trường USDC bản địa mới được tạo, lợi dụng chức năng flash loan của Radiant để khuếch đại liquidityIndex, đồng thời khai thác lỗi làm tròn toán học nhằm đánh cắp tài sản từ pool cho vay.
Mã code then chốt


Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News












