
SharkTeam: Phân tích sự cố tấn công Hedgey Finance
Tuyển chọn TechFlowTuyển chọn TechFlow

SharkTeam: Phân tích sự cố tấn công Hedgey Finance
Nguyên nhân gốc rễ của sự việc lần này là do dự án có lỗ hổng phê duyệt token trong logic triển khai hợp đồng thông minh.
Tác giả: SharkTeam
Vào ngày 19 tháng 4 năm 2024, Hedgey Finance đã bị tấn công bởi nhiều giao dịch, thiệt hại hơn 2 triệu USD.
SharkTeam đã tiến hành phân tích kỹ thuật ngay lập tức về sự việc này và tổng hợp các biện pháp phòng ngừa an ninh, hy vọng các dự án sau này có thể rút ra bài học, cùng xây dựng hàng rào an toàn cho ngành công nghiệp blockchain.
Một, Phân tích giao dịch tấn công
Hedgey Finance đã bị nhiều kẻ tấn công thực hiện nhiều cuộc tấn công, lợi dụng lỗ hổng phê duyệt token để đánh cắp lượng lớn token trong hợp đồng ClaimCampaigns.
Lấy một giao dịch có giá trị lớn nhất làm ví dụ, với số tiền liên quan khoảng 1,3 triệu USD:
Giao dịch tấn công: 0x2606d459a50ca4920722a111745c2eeced1d8a01ff25ee762e22d5d4b1595739
Kẻ tấn công: 0xded2b1a426e1b7d415a40bcad44e98f47181dda2
Hợp đồng tấn công: 0xc793113f1548b97e37c409f39244ee44241bf2b3
Hợp đồng mục tiêu: 0xbc452fdc8f851d7c5b72e1fe74dfb63bb793d511 (ClaimCampaigns)
Giao dịch này trực tiếp chuyển đi 1.303.910,12 USDC từ hợp đồng ClaimCampaigns. Chi tiết giao dịch như sau:

Giao dịch thực sự phát động cuộc tấn công là
0xa17fdb804728f226fcd10e78eae5247abd984e0f03301312315b89cae25aa517 (gọi tắt là 0xa17f)
Quá trình tấn công như sau:

1. Vay chớp nhoáng 1,305 triệu USDC từ Balancer.
2. Gọi hàm createLockedCampaign trong hợp đồng ClaimCampaigns. Trong hàm này, hợp đồng tấn công sẽ gửi 1,305 triệu USDC vào hợp đồng ClaimCampaigns, sau đó hợp đồng ClaimCampaigns sẽ cấp quyền sử dụng 1,305 triệu USDC này cho hợp đồng tấn công.
3. Gọi hàm cancelCampaign trong hợp đồng ClaimCampaigns. Trong hàm này, hợp đồng tấn công rút lại 1,305 triệu USDC đã gửi vào, nhưng phần USDC được cấp quyền cho hợp đồng tấn công trong hàm createLockedCampaign thì không bị hủy bỏ.
4. Hợp đồng tấn công hoàn trả khoản vay chớp nhoáng cho Balancer.
Trong giao dịch này, sau khi hợp đồng tấn công rút 1,305 triệu USDC đã lưu trữ trong hợp đồng ClaimCampaigns, phần 1,305 triệu USDC mà hợp đồng ClaimCampaigns đã cấp quyền cho hợp đồng tấn công vẫn chưa bị hủy, do đó hợp đồng tấn công có thể trực tiếp gọi hàm transferFrom của USDC để chuyển thêm 1,305 triệu USDC từ hợp đồng ClaimCampaigns. Đây cũng chính là chức năng mà giao dịch 0xa17fdb804728f226fcd10e78eae5247abd984e0f03301312315b89cae25aa517 thực hiện.
Thông qua hai giao dịch trên, kẻ tấn công đã đánh cắp 1,305 triệu USDC từ hợp đồng ClaimCampaigns.
Ngoài USDC, kẻ tấn công còn lợi dụng lỗ hổng này để đánh cắp lượng lớn token NOBL từ hợp đồng ClaimCampaigns, cộng cả USDC thì tổng giá trị vượt quá 2 triệu USD.
Hai, Phân tích lỗ hổng
Nguyên nhân cốt lõi của sự việc lần này là do logic triển khai hợp đồng thông minh của dự án tồn tại lỗ hổng phê duyệt token, khiến kẻ tấn công có thể chuyển đi nhiều lần token mà hợp đồng mục tiêu đã cấp quyền cho msg.sender.
Hàm createLockedCamaign của hợp đồng thông minh ClaimCampaigns sẽ nhận token từ msg.sender gửi vào hợp đồng mục tiêu, đồng thời cấp quyền sử dụng những token này cho msg.sender.

Hàm cancelCampaign sẽ rút lại token đã gửi vào, nhưng lại không hủy bỏ việc phê duyệt token.

Kẻ tấn công lợi dụng lỗ hổng này, trực tiếp gọi hàm transferFrom của token để chuyển đi lần nữa số token đã được cấp quyền từ hợp đồng mục tiêu.
Ba, Đề xuất bảo mật
Đối với sự kiện tấn công lần này, chúng ta cần tuân thủ những điểm chú ý sau đây trong quá trình phát triển:
(1) Trong quá trình thiết kế và phát triển dự án, cần duy trì tính toàn vẹn và nghiêm ngặt của logic, đặc biệt là trong quá trình chuyển tài sản, phải đảm bảo đồng bộ số lượng phê duyệt token khi chuyển token, tránh tình trạng token đã bị chuyển đi nhưng việc phê duyệt vẫn chưa bị hủy.
(2) Trước khi ra mắt dự án, cần nhờ công ty kiểm toán chuyên nghiệp bên thứ ba kiểm tra hợp đồng thông minh.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News










