Giao thức tùy chọn Hegic: Hợp đồng không còn được sử dụng dẫn đến lỗ hổng trị giá 80.000 đô la

Bài viết này được dịch máy
Xem bản gốc

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ự.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận