Phân tích lỗ hổng hợp đồng Truebit Protocol bị đánh cắp 26.44 triệu USD
- Quan điểm cốt lõi: Truebit Protocol bị tấn công do lỗ hổng tràn số nguyên.
- Yếu tố then chốt:
- Thiệt hại khoảng 26.44 triệu USD ETH.
- Lỗ hổng bắt nguồn từ khiếm khuyết logic tính toán trong phiên bản Solidity cũ.
- Kẻ tấn công kích hoạt lỗi tràn bằng cách nhập giá trị cực lớn.
- Tác động thị trường: Cảnh báo các giao thức DeFi cũ cần kiểm toán bảo mật khẩn cấp.
- Chú thích tính kịp thời: Tác động ngắn hạn.
Ngày 8 tháng 1 năm 2026, giao thức Truebit Protocol đã bị tấn công bởi hacker, thiệt hại 8,535.36 ETH (khoảng 26.44 triệu USD). Chính thức Truebit Protocol đã xác nhận sự việc vào sáng sớm ngày hôm sau. Nhóm bảo mật ExVul đã thực hiện phân tích chi tiết về lỗ hổng trong sự kiện tấn công này, kết quả phân tích như sau:
Quy trình tấn công
Địa chỉ kẻ tấn công:
0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50
Hash giao dịch tấn công:
0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
Kẻ tấn công hoàn thành cuộc tấn công thông qua các giao dịch gọi lặp lại 4 vòng getPurchasePrice→0xa0296215→0xc471b10b. Phân tích lấy vòng lặp đầu tiên làm ví dụ.
1. Kẻ tấn công trước tiên gọi hàm getPurchasePrice(240442509453545333947284131), trả về 0.

2. Kẻ tấn công gọi hàm 0xa0296215(c6e3ae8e2cbab1298abaa3), đồng thời msg.value là 0. Cuối cùng đúc thành công 240442509453545333947284131 đồng TRU.

3. Kẻ tấn công gọi hàm 0xc471b10b(c6e3ae8e2cbab1298abaa3). Cuối cùng đốt 240442509453545333947284131 đồng TRU, thu được 5105.06 đồng ETH.
Phân tích logic tấn công
Bằng cách tìm hiểu quy trình tấn công trên, có thể thấy rõ ràng logic của hàm getPurchasePrice và hàm 0xa0296215 có vấn đề. Dưới đây bắt đầu phân tích sâu (do hợp đồng chưa được mở nguồn, mã dưới đây đều là mã đã được dịch ngược).


Bằng cách so sánh điểm chung của hai hàm, chúng ta có thể thấy hàm 0x1446 được sử dụng để lấy số lượng ETH cần thiết để mua một số lượng TRU chỉ định. Rõ ràng logic của hàm 0x1446 có vấn đề, dẫn đến tính toán ETH sai. Dưới đây phân tích chi tiết logic trong hàm 0x1446.

Quan sát logic trong hàm 0x1446, vì kết quả tính toán cuối cùng v13 == 0, nên chắc chắn logic tính toán ở phần trên đã xảy ra vấn đề. Cần biết rằng chức năng 0x18ef giống với _SafeMul, do đó vấn đề nằm ở việc sử dụng phép cộng gốc v12 + v9 (phiên bản hợp đồng là ^0.6.10, do đó không có kiểm tra tràn).
v12 và v9, lần lượt biểu thị:

Thông qua phân tích trên, ý tưởng tấn công của kẻ tấn công là thông qua việc nhập _amountIn cực lớn, làm cho v12 + v9 tràn thành một giá trị rất nhỏ, cuối cùng làm cho (v12 + v9) / v6 == 0.
Tổng kết
Nguyên nhân gốc rễ của sự kiện tấn công lần này vào Truebit Protocol nằm ở logic tính toán giá mua token của nó có lỗ hổng tràn số nguyên nghiêm trọng. Do hợp đồng sử dụng phiên bản Solidity ^0.6.10 và không thực hiện kiểm tra an toàn cho các phép tính số học quan trọng, cuối cùng gây ra thiệt hại lớn 8,535.36 ETH. Hiện tại, phiên bản mới của Solidity bản thân đã giảm nhẹ lỗ hổng tràn. Sự kiện tấn công này có lẽ là do hacker sử dụng AI để tự động quét các lỗ hổng được phát hiện trong một số giao thức DeFi cũ đã được triển khai (bao gồm các cuộc tấn công vào Balancer và yETH trước đó). Chúng tôi cho rằng các sự kiện tấn công như vậy sử dụng AI để tấn công một số giao thức DeFi cũ sẽ ngày càng nhiều trong thời gian gần đây, do đó khuyến nghị các dự án có thể thực hiện kiểm tra bảo mật mới cho mã hợp đồng. Nếu phát hiện lỗ hổng, cần nâng cấp hợp đồng hoặc chuyển tài sản càng sớm càng tốt, đồng thời thực hiện giám sát trên chuỗi, phát hiện kịp thời các bất thường, giảm thiểu thiệt hại xuống mức thấp nhất.


