Vào ngày 8 tháng 1 năm 2026, giao thức tính toán ngoại tuyến phi tập trung Truebit Protocol đã bị tấn công. Bằng cách khai thác lỗ hổng trong hợp đồng thông minh, kẻ tấn công đã thu được lợi nhuận 8.535 ETH (khoảng 26,44 triệu USD ). Sau đây là phân tích chi tiết về sự cố này của nhóm bảo mật SlowMist .
Mục lục
Giao thức Truebit
Giao thức Truebit là một thị trường tính toán phi tập trung ngoài chuỗi được thiết kế để chuyển các tác vụ tính toán phức tạp ra khỏi mạng chính blockchain và thực hiện chúng ngoài chuỗi, đồng thời đảm bảo tính chính xác của kết quả thông qua các cơ chế khuyến khích kinh tế.
Giao thức này giới thiệu một token gốc, TRU , áp dụng mô hình cung ứng linh hoạt theo thuật toán. Giá TRU theo thời gian thực được xác định động bởi một hàm tỷ lệ giữa lượng dự trữ ETH được nắm giữ trong hợp đồng và nguồn cung TRU đang lưu hành. Việc tạo và đốt TRU được quản lý hoàn toàn tự động bởi các hợp đồng thông minh trên chuỗi:
- Đúc TRU: Người dùng gửi ETH vào hợp đồng Mua và đúc TRU theo giá thuật toán.
- Đốt TRU: Người dùng đốt TRU mà họ đang nắm giữ và rút ETH từ hợp đồng theo giá do thuật toán định giá.
Phân tích cách thức tấn công
Thông tin cuộc tấn công:
- Địa chỉ tấn công: 0x6C8EC8f14bE7C01672d31CFa5f2CEfeAB2562b50
- Hợp đồng tấn công: 0x764C64b2A09b09Acb100B80d8c505Aa6a0302EF2
- Giao dịch tấn công: 0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
Các bước thực hiện tấn công như sau:
B1: Gọi hàm getPurchasePrice() để truy vấn lượng ETH
Kẻ tấn công đầu tiên gọi hàm getPurchasePrice() của hợp đồng
Mua để truy vấn số lượng ETH cần thiết để tạo ra
240.442.509.453.545.333.947.284.131 token TRU. Vì giá trị này được tạo ra một cách cẩn thận, nên đã xảy ra lỗi tràn số nguyên trong quá trình tính toán giá, khiến hàm trả về 0 .

B2: Kích hoạt chức năng tạo token
Sau đó, kẻ tấn công đã kích hoạt chức năng tạo token của hợp đồng Mua (0xa0296215), truyền vào số lượng token như trên. Vì giá ETH yêu cầu được tính là 0, nên kẻ tấn công không phải trả ETH và đã tạo thành công 240.442.509.453.545.333.947.284.131 token TRU.

B3: Thực hiện đốt token TRU để đổi ETH
Kẻ tấn công ngay lập tức gọi hàm 0xc471b10b (hàm đốt) của hợp đồng Mua, đốt tất cả các token TRU mới được tạo và rút 5.105,069 ETH từ quỹ dự trữ của hợp đồng.

B4: Quay lại B1 để lặp lại chu trình
Kẻ tấn công liên tục thực hiện chu trình “đúc → đốt” như trên. Khi tổng nguồn cung TRU (S) tăng lên, việc đúc tiếp theo chỉ cần một lượng ETH nhỏ, nhưng giá trị của các token được đúc vẫn vượt xa chi phí đã trả, tạo ra một cơ hội kinh doanh chênh lệch giá đáng kể. Kẻ tấn công tiếp tục quá trình này cho đến khi lượng ETH dự trữ của hợp đồng bị cạn kiệt hoàn toàn.
Phân tích cơ chế tấn công
Công thức tính giá
Thông qua việc phân tích ngược hợp đồng mua bán, chúng tôi đã xác định được chức năng tính toán giá cốt lõi:

Chức năng này được sử dụng để tính toán lượng ETH cần thiết để tạo ra một số lượng token nhất định. Công thức như sau:
Giá = (100 * A² * R + 200 * A * R * S) / ((100 — T) * S²)
Trong đó:
- A (AmountIn): Số lượng token mà người dùng dự định tạo ra.
- R (Dự trữ): Lượng ETH dự trữ hiện tại mà hợp đồng đang nắm giữ.
- S (Cung): Tổng lượng cung hiện tại của token.
- T (THETA): Một tham số hợp đồng, cố định ở mức 75
Lỗ hổng bảo mật
Hợp đồng được biên dịch bằng Solidity ^0.6.10 . Trong các phiên bản trước Solidity 0.8.0 , các toán tử số học (+, -, *) không bao gồm kiểm tra tràn số tích hợp. Khi một phép tính vượt quá giá trị tối đa của uint256 (²²⁵⁶ − 1), hiện tượng tràn số ngầm xảy ra, khiến kết quả bị quay vòng về một giá trị nhỏ gần bằng không.
Trong phần quan trọng của mã tính toán giá:

Mặc dù các phép nhân được bảo vệ bằng thư viện SafeMath , nhưng phép cộng ở tử số (v12 + v9) lại sử dụng trực tiếp toán tử + gốc mà không có cơ chế bảo vệ tràn số. Việc thiếu xác thực này chính là lỗ hổng cốt lõi bị khai thác trong cuộc tấn công này.
Phân tích định lượng cuộc tấn công
Lấy giao dịch tạo tiền đầu tiên của kẻ tấn công làm ví dụ:

Quy trình tính toán:

Xác định tình trạng tràn:

Vì kết quả của v12 + v9 vượt quá giá trị tối đa của uint256, nên đã xảy ra hiện tượng tràn số và quay vòng. Sau khi tràn số, tử số trở thành một giá trị cực nhỏ, và sau phép chia số nguyên, giá trị cuối cùng được tính toán
là Price = 0
Tác động của cuộc tấn công
Bằng cách thiết kế cẩn thận tham số AmountIn, kẻ tấn công đã đảm bảo rằng:
- Tất cả các phép nhân đều vượt qua kiểm tra SafeMath (không có thao tác hoàn tác nào được kích hoạt);
- Phép cộng bị tràn, khiến tử số quay vòng về một giá trị cực nhỏ;
- Kết quả phép chia số nguyên trở thành 0 .
Kết quả là, kẻ tấn công đã có thể tạo ra một lượng lớn token mà không cần trả bất kỳ ETH nào .
Phân tích dòng tiền từ cuộc tấn công
Theo dõi giao dịch trên chuỗi và công cụ chống rửa tiền MistTrack , kẻ tấn công đã thu lợi khoảng 8.535 ETH (khoảng 26,44 triệu USD ) trong vụ việc này.

Số ETH bị đánh cắp 8.535 ban đầu được chuyển vào ba địa chỉ mới tạo và cuối cùng toàn bộ được chuyển vào
Tornado Cash.

Các bản ghi trên chuỗi cho thấy địa chỉ của kẻ tấn công đã thực hiện các giao dịch trước đó vào ngày 20/11/2025, 06/12/2025 và 27/12/2025 , với các hoạt động chính như sau:
- 20/11/2025: Nhận được tiền trên Avalanche thông qua Drain và chuyển tiếp sang BNB Chain qua Rhino.fi
- 06/12/2025: Trên chuỗi BNB , đã chuyển khoản tiền nhận được sang Ethereum thông qua Rhino.fi .
- 27/12/2025: Trên Ethereum , đã nhận được 4,98 ETH thông qua lệnh RUN , nghi ngờ là từ một cuộc tấn công trước đó do kẻ tấn công khởi xướng, và tổng cộng 5 ETH đã được chuyển vào Tornado Cash .



Kết luận
Nguyên nhân gốc rễ của cuộc tấn công này là do phép cộng trong tử số của phép tính giá trong hợp đồng Mua không sử dụng thư viện SafeMath để bảo vệ chống tràn số. Vì hợp đồng được biên dịch bằng Solidity 0.6.10, toán tử + gốc không bao gồm kiểm tra tràn số. Bằng cách tạo ra một lượng token cụ thể, kẻ tấn công đã khiến phép cộng vượt quá giá trị tối đa của uint256 và bị tràn số, dẫn đến Giá = 0, từ đó cho phép tạo token với chi phí gần bằng không và thực hiện giao dịch chênh lệch giá.
Nhóm bảo mật SlowMist khuyến nghị rằng đối với các hợp đồng được biên dịch bằng các phiên bản Solidity dưới 0.8.0, các nhà phát triển nên đảm bảo rằng tất cả các phép toán số học đều được bảo vệ bằng thư viện SafeMath để ngăn ngừa các lỗ hổng logic do tràn số nguyên gây ra.
Nguồn: $26.44 Million Stolen: Truebit Protocol Smart Contract Vulnerability Analysis
Mình là lập trình viên, mặc dù cũng đã khá lớn tuổi nhưng vẫn thích Lập trình. Gần đây mình tập trung tìm hiểu nhiều hơn về Lĩnh vực Blockchain. Với kiến thức tìm hiểu được, mình muốn viết ra để lưu lại cũng như để chia sẻ cho những người quan tâm. Mong mọi người góp ý và có thể cùng mình chia sẻ nhiều kiến thức hơn cho cộng đồng.







Trả lời