Tiêu đề gốc: "Phân tích lỗ hổng hợp đồng bị đánh cắp 26,44 triệu USD của giao thức Truebit"
Nguồn gốc văn bản: ExVul Security
Vào ngày 8 tháng 1 năm 2026, giao thức Truebit Protocol đã bị tin tặc tấn công, gây mất 8.535,36 ETH (khoảng 26,44 triệu USD). Vào sáng hôm sau, nhóm Truebit Protocol chính thức đăng bài xác nhận sự việc. Nhóm an ninh ExVul đã tiến hành phân tích chi tiết lỗ hổng trong vụ tấn công này, kết quả phân tích như sau:
Quy trình tấn công
Địa chỉ của người tấn công:
0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50
Mã băm giao dịch tấn công:
0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
Người tấn công hoàn tất cuộc tấn công bằng cách thực hiện giao dịch gọi lặp lại 4 vòng theo chuỗi getPurchasePrice→0xa0296215→0xc471b10b. Dưới đây là phân tích lấy ví dụ từ vòng lặp đầu tiên.
1. Người tấn công trước tiên gọi hàm getPurchasePrice(240442509453545333947284131), trả về 0.

2. Người tấn công gọi hàm 0xa0296215(c6e3ae8e2cbab1298abaa3) với msg.value bằng 0. Cuối cùng, họ đã thành công trong việc đúc 240442509453545333947284131 token TRU.

3. Người tấn công gọi hàm 0xc471b10b(c6e3ae8e2cbab1298abaa3). Cuối cùng, 240442509453545333947284131 đồng TRU bị tiêu hủy, thu được 5105,06 đồng ETH.
Phân tích logic tấn công
Thông qua việc hiểu được quy trình tấn công trên, có thể dễ dàng nhận thấy rằng hàm getPurchasePrice và logic của hàm 0xa0296215 tồn tại vấn đề. Dưới đây sẽ bắt đầu phân tích sâu hơn (vì hợp đồng chưa được công khai mã nguồn, nên tất cả các đoạn mã dưới đây đều là mã được phân tích ngược lại).


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

Quan sát logic trong hàm 0x1446, vì kết quả cuối cùng là v13 == 0, do đó chắc chắn có vấn đề trong logic tính toán phía trên. Cần lưu ý rằng chức năng 0x18ef giống hệt với _SafeMul, do đó vấn đề nằm ở việc sử dụng phép cộng nguyên sinh v12 + v9 (phiên bản hợp đồng là ^0.6.10, do đó không có kiểm tra tràn số).
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 người tấn công là thông qua việc nhập vào một giá trị _amountIn rất lớn, khiến v12 + v9 tràn thành một giá trị rất nhỏ, cuối cùng khiến (v12 + v9) / v6 == 0.
Tổng kết
Nguyên nhân gốc rễ của sự kiện bị tấn công lần này của giao thức Truebit nằm ở chỗ logic tính toán giá mua token của nó có một lỗ hổng tràn số nguyên nghiêm trọng. Do hợp đồng thông minh sử dụng phiên bản Solidity ^0.6.10 và không thực hiện bất kỳ kiểm tra an toàn nào cho các phép toán số học quan trọng, cuối cùng đã gây ra tổn thất lớn là 8.535,36 ETH. Hiện tại, phiên bản mới của Solidity đã tự bản thân nó giảm bớt được lỗ hổng tràn số. Sự kiện tấn công này có thể là hacker đã sử dụng AI để tự động quét một số giao thức DeFi cũ đã triển khai trước đó, phát hiện ra lỗ hổng (bao gồm cả các vụ tấn công Balancer và yETH trước đây). Chúng tôi cho rằng các sự kiện tấn công sử dụng AI nhằm khai thác các giao thức DeFi cũ sẽ ngày càng gia tăng trong thời gian gần đây, vì vậy chúng tôi khuyên các dự án nên thực hiện kiểm toán an toàn lại mã hợp đồng, nếu phát hiện lỗ hổng, cần nhanh chóng nâng cấp hợp đồng hoặc chuyển tài sản, đồng thời thực hiện giám sát trên chuỗi, kịp thời phát hiện các bất thường để giảm thiểu thiệt hại xuống mức thấp nhất có thể.
Bài viết này là bài viết do độc giả gửi về, không đại diện cho quan điểm của BlockBeats.
Nhấp để biết thêm về các vị trí tuyển dụng của BlockBeats
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm đăng ký Telegram:https://t.me/theblockbeats
Nhóm trao đổi Telegram:https://t.me/BlockBeats_App
Tài khoản chính thức của Twitter:https://twitter.com/BlockBeatsAsia


