Vào ngày 23 tháng 2 năm 2025, giao thức Hegic Options đã bị khai thác, dẫn đến mất khoảng 80.000 USD.
Hegic là một giao thức giao dịch quyền chọn phi tập trung được xây dựng trên Ethereum, cho phép người dùng giao dịch quyền chọn mua và quyền chọn bán cho các tài sản tiền điện tử như ETH và wBTC theo cách không cần tin cậy, phi Custodial. Nó hoạt động theo mô hình peer-to-pool, nơi các nhà cung cấp thanh khoản gửi tài sản vào các pool tài trợ cho các hợp đồng quyền chọn. Người dùng có thể mua quyền chọn với các giá thực hiện và thời hạn tùy chỉnh, trong khi các nhà cung cấp thanh khoản kiếm được phí và phần thưởng cho những đóng góp của họ.
Tuy nhiên, hợp đồng bị khai thác là khá cũ và có thể chưa được sử dụng trong sản xuất. Nó bị khai thác vì có một số quỹ bên trong hợp đồng - một số lượng tương đối lớn.
Thông tin chính
Kẻ tấn công: https://etherscan.io/address/0x4B53608fF0cE42cDF9Cf01D7d024C2c9ea1aA2e8
Hợp đồng dễ bị tấn công: https://etherscan.io/address/0x7094E706E75E13D1E0ea237f71A7C4511e9d270B#code
Giao dịch tấn công 1: https://etherscan.io/tx/0x260d5eb9151c565efda80466de2e7eee9c6bd4973d54ff68c8e045a26f62ea73
Giao dịch tấn công 2: https://etherscan.io/tx/0x444854ee7e7570f146b64aa8a557ede82f326232e793873f0bbd04275fa7e54c
Phân tích lỗ hổng
Nhìn vào giao dịch tấn công, chúng ta có thể thấy rằng hàm withdrawWithoutHedge
được gọi lặp đi lặp lại bên trong các giao dịch độc hại.
Có vẻ như kẻ tấn công chỉ cần gọi hàm withdrawWithoutHedge
bên trong một vòng lặp for để rút cạn hợp đồng. Làm thế nào mà điều này lại có thể xảy ra? Có bất kỳ hạn chế nào đối với hàm withdrawWithoutHedge
không? Hãy cùng xem xét mã nguồn của hàm withdrawWithoutHedge
.
Hàm withdrawWithoutHedge
là một hàm bên ngoài gọi đến hàm _withdraw
. Bên trong hàm _withdraw
, chúng ta có thể thấy rằng số tiền amount
sẽ được chuyển là được tính từ t.share
của "tranche" hiện tại. Tuy nhiên, t.share
không được cập nhật sau khi rút tiền. Từ mã, chúng ta có thể thấy rằng dòng thực hiện kiểm tra trạng thái cho tranche hiện tại (require(t.state == TrancheState.Open)
) cũng đã bị bình luận.
Hợp đồng dễ bị tấn công là hợp đồng Hegic WBTC Puts Pool, đây là một hợp đồng khá cũ được triển khai vào ngày 04 tháng 1 năm 2022. Tuy nhiên, hợp đồng này gần như không có hoạt động nào kể từ đó.
Bài học kinh nghiệm
Vụ khai thác này cho thấy tại sao các giao thức phải theo dõi và quản lý quỹ một cách cẩn thận trong các hợp đồng cũ hoặc không còn được sử dụng. Ngoài ra, việc rà soát và kiểm toán mã nghiêm ngặt nên là bắt buộc trước khi triển khai bất kỳ hợp đồng nào vào môi trường sản xuất để ngăn ngừa các lỗ hổng tương tự.