Nguồn: Công nghệ Lingshi Thâm Quyến
Nền tảng
Các cuộc tấn công trên chuỗi chống lại DualPools đã được phát hiện:
https://bscscan.com/tx/0x90f374ca33fbd5aaa0d01f5fcf5dee4c7af49a98dc56b47459d8b7ad52ef1e93
DualPools (https://dualpools.com)  ; là dựa trên VenusProtocol (https://venus.io/) Modified, đây là một dự án DeFi cung cấp Hoán đổi, Cho vay, Vay và các dịch vụ khác.
Chế độ hoạt động như sau:
p >
DualPools là một nền tảng cho vay phi tập trung. Người dùng gửi Tài sản cơ bản (tài sản cơ bản) thông qua deposti và nhận được dToken tương ứng; ngược lại, khi rút Tài sản cơ bản thông qua Redeem, tài sản tương ứng sẽ bị phá hủy .dToken.
Trong số đó, tỷ lệ trao đổi giữa tài sản cơ bản của tài sản cơ bản và dToken được kiểm soát bởi ExchangeRate (chỉ số thanh khoản). Nói một cách đơn giản, ExchangeRate là giá trị của dToken.
exchangeRate = (totalCash + TotalBorrows - TotalReserves) / TotalSupply
Phân tích tấn công
Nói một cách đơn giản, cuộc tấn công được chia thành hai phần:
1. Hacker đã sử dụng nhóm giao dịch mới của DualPools để không đủ thanh khoản (thanh khoản là 0 ), Tăng đáng kể giá của dLINK và vay tài sản cơ bản của các nhóm giao dịch khác (WBNB, BTCB, ETH, ADA, BUSD).
2. Sử dụng bài toán cắt ngắn chính xác để lấy lại toàn bộ LINK đã đầu tư ở giai đoạn đầu.
Phân tích chi tiết bước 1
Kẻ tấn công đã vay tiền thông qua DODO Private Pool và PancakeSwapV3, đồng thời lấy được BNB và BUSD làm quỹ tấn công ban đầu, như hiển thị bên dưới :
Sau đó, BNB và BUSD được thế chấp thông qua VenusProtocol và 11.500 LINK được cho vay để thực hiện các cuộc tấn công chống lại DualPools.
Đầu tiên, kẻ tấn công đã lấy được 2 đơn vị dLINK tối thiểu thông qua nhóm giao dịch dLINK-LINKmint, sau đó chuyển 11499999999999999999999998 đơn vị LINK vào nhóm giao dịch.
Vì nhóm giao dịch chưa được khởi tạo nên không có thanh khoản. Và ExchangeRate được tính như sau:
exchangeRate = (totalCash + TotalBorrows - TotalReserves) / TotalSupply
Tại thời điểm này, TotalCash là số dư của LINK trong nhóm giao dịch, là 114999999999999999999998+2=11500000000000000000000. TotalBorrows và TotalReserves đều bằng 0 và TotalSupply là 2 (vì hacker đã thu được 2 đơn vị dLINK tối thiểu thông qua đúc tiền). Do đó, ExchangeRate tại thời điểm này là 57500000000000000000000 (tăng giá trị của dLINK lên 575 lần). Vì kẻ tấn công sở hữu 2 dLINK và giá trị của chúng đủ cao nên hacker đã vay 50 BNB, 0,17 BTCB, 3,99 ETH, 6378 ADA và 911 BUSD từ các nhóm khác.
Phân tích chi tiết bước 2
< p style="text-align:left;">Kẻ tấn công đã đổi 2 đơn vị dLINK tối thiểu từ lần đúc trước đó thành 1149999999999999999999898 đơn vị LINK thông qua chuộc lại. Bởi vì, ExchangeRate đã bị kẻ tấn công thao túng đến 57500000000000000000000. Do đó, dLINK cần thiết để trao đổi 114999999999999999999898 đơn vị LINK tối thiểu là 11499999999999999999898 / 575000000000000000000000 = 1,99999999999999999 Tức là tối thiểu 1,999999 đơn vị d LINK, nhưng do việc cắt bớt độ chính xác của dữ liệu nên chỉ cần 1 đơn vị dLINK tối thiểu.
Tại thời điểm này, kẻ tấn công đã lấy đi 1149999999999999999999898 đơn vị LINK mà hắn đã đầu tư trước đó. Sau đó, số tiền đã vay từ VenusProtocol, PancakeSwapV3 và DODO Private Pool sẽ được trả lại để hoàn thành cuộc tấn công.
Tóm tắt
Kẻ tấn công lợi dụng tính thanh khoản kém của nhóm giao dịch mới DualPools để thao túng Tỷ giá hối đoái của tài sản cơ bản, khiến giá của dToken tương ứng với tài sản cơ bản bị bóp méo, do đó dToken rất nhỏ có thể được sử dụng làm tài sản thế chấp để cho vay một lượng lớn tài sản cơ bản khác. Sau đó, vấn đề cắt bớt phân chia hợp đồng thông minh được sử dụng để lấy lại tài sản đã đầu tư trong cuộc tấn công trước đó. Tại thời điểm này, cuộc tấn công vào dự án DeFi DualPools đã hoàn tất.