Hợp đồng sdrETH
của dự án SumerMoney, một phiên bản phân nhánh của hợp đồng CEther
từ Hợp chất, gần đây đã bị tấn công. Vector tấn công không phải là mới; kẻ tấn công đã lợi dụng lỗ hổng reentrancy để thao túng tỷ giá hối đoái giữa sdrToken
được bao bọc và Token cơ bản.
Tổng quan
Địa chỉ của kẻ tấn công:
https://basescan.org/address/0xbb344544ad328b5492397e967fe81737855e7e77
Giao dịch tấn công: https://basescan.org/tx/0x619c44af9fedb8f5feea2dcae1da94b6d7e5e0e7f4f4a99352b6c4f5e43a4661
Hợp đồng dễ bị tổn thương ( TokensdrETH
): https://basescan.org/address/0x7b5969bb51fa3b002579d7ee41a454ac691716dc
Phân tích khai thác
Kẻ tấn công lần đầu tiên thực hiện một Khoản vay nhanh để vay số tiền lớn 150 WETH và 645.000 USDC từ Balancer Vault. Sau đó, anh ta cố gắng đẩy những tài sản này vào các hợp đồng sdrETH
và sdrUSDC
để Mint các token được gói tương ứng.
Với những tài sản này làm tài sản thế chấp, kẻ tấn công đã cố gắng vay tất cả các tài sản cơ bản có sẵn trên thị trường sdrETH
, với số tiền khoảng 150 ETH. Sau khi vay, kẻ tấn công ngay lập tức gọi hàm repayBorrowBehalf
, hoàn trả ETH đã vay cộng với " 1 wei ". Vì hàm repayBorrowBehalf
hoàn lại số tiền vượt quá cho người trả tiền bằng phương thức address.call
cấp thấp nên cuối cùng nó sẽ kích hoạt luồng tấn công quay lại. Lợi dụng lỗ hổng này, kẻ tấn công có thể thao túng tỷ giá hối đoái trong hàm dự phòng trước khi totalBorrows
được cập nhật.
Kẻ tấn công sau đó đã tiến hành vay tất cả tài sản còn lại trên thị trường sdrcbETH
và sdrUSDC
.