Vào ngày 12 tháng 7 năm 2024, Dough Finance đã trải qua một vụ khai thác dẫn đến khoản lỗ ước tính là 1,8 triệu USD. Một lỗi thiết kế trong hợp đồng ConnectorDeleverageParaswap đã cho phép kẻ tấn công kích hoạt DoughDsa để rút tài sản thế chấp từ AAVE và chuyển nó cho kẻ tấn công.
Tổng quan
Kẻ tấn công:
https://etherscan.io/address/0x67104175fc5fabbdb5a1876c3914e04b94c71741
Hợp đồng dễ bị tổn thương:
https://etherscan.io/address/0x9f54e8eAa9658316Bb8006E03FFF1cb191AafBE6
Tấn công giao dịch:
https://etherscan.io/tx/0x92cdcc732eebf47200ea56123716e337f6ef7d5ad714a2295794fdc6031ebb2e
Phân tích khai thác
Sau giao dịch, kẻ tấn công đã kiểm tra số dư nợ của Vault trong AAVE và vay nhanh USDC từ Balancer để hoàn trả Vault .
Sau đó, giao dịch được gọi là ConnectorDeleverageParaswap để kích hoạt yêu cầu flashloan với các hành động cụ thể trong swapData.
Trình kết nối đã khởi tạo flashloan từ nhóm và xử lý phản hồi trong hàm execOperation .
Tìm hiểu sâu hơn về hàm execOperation trong hợp đồng ConnectorDeleverage :
Hàm phân tích cú pháp đầu vào từ hợp đồng nhóm, chứa swapData từ hợp đồng tấn công. Hàm deloopAllColternal lặp qua tất cả các tải trọng của kẻ tấn công và gọi chúng. Có nguy cơ cao là hợp đồng hủy đòn bẩy nhóm và trình kết nối tin cậy lẫn nhau và không xác minh thông tin đầu vào của người dùng trước khi thực hiện lệnh gọi.
Làm theo hướng dẫn tiếp theo:
Có hai lệnh gọi tùy ý từ vòng lặp này: vault.executeAction và weth.transferFrom . Trong hành động đầu tiên, vault:
Hợp đồng vault tuân theo hướng dẫn của ConnectorDeleverageParaswap , gọi AAVE và rút 596 WETH (số dư đặt cọc được sử dụng làm tài sản thế chấp).
Trong hướng dẫn tiếp theo, ConnectorDeleverageParaswap tuân theo swapData để chuyển tất cả số dư vault sang hợp đồng tấn công. Với số tiền này, kẻ tấn công có thể hoán đổi sang USDC, hoàn trả khoản vay nhanh và có được tài sản dự án đáng kể.
Lỗ hổng chính nằm ở việc hợp đồng ConnectorDeleverageParaswap không thể xác thực đầu vào của người dùng trước khi thực hiện các lệnh gọi tùy ý trong hàm deloopAllCollatals . Sự giám sát này cho phép kẻ tấn công thao túng kho tiền, khiến nó rút tất cả tài sản thế chấp và chuyển nó vào hợp đồng của kẻ tấn công.
Với tư cách là nhà phát triển, điều cần thiết là phải tuân thủ nguyên tắc "không bao giờ tin tưởng vào bất kỳ thông tin đầu vào nào", ngay cả từ các đối tác và hợp đồng hỗ trợ. Đặc biệt với các lệnh gọi tùy ý, thông tin đầu vào của người dùng có thể thao túng hợp đồng của bạn, rút tiền hoặc thậm chí hủy hợp đồng.
Ngoài ra, chúng tôi đặc biệt khuyến khích tiến hành kiểm tra bảo mật toàn diện cho tất cả các dự án, cho dù chúng liên quan đến hợp đồng thông minh, chương trình phụ trợ, ví hay Các ứng dụng phi tập trung (DAPPS) (Các ứng dụng phi tập trung (DAPPS)).