Pada 8 Januari 2026, protokol Truebit Protocol telah diceroboh, menyebabkan kehilangan sebanyak 8,535.36 ETH (kira-kira 26.44 juta dolar AS). Pihak rasmi Truebit Protocol mengesahkannya dalam satu kenyataan yang dikeluarkan pada pagi harinya. Kumpulan keselamatan ExVul telah membuat analisis terperinci mengenai kelemahan yang menyebabkan serangan ini, dan keputusan analisisnya adalah seperti berikut:
Proses serangan
Alamat penyerang:
0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50
Hash perdagangan serangan:
0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
Pengganas menyelesaikan serangan dengan memanggil transaksi getPurchasePrice→0xa0296215→0xc471b10b dalam 4 putaran. Kita akan menganalisis contoh putaran pertama.
1. Pengganas memanggil fungsi getPurchasePrice(240442509453545333947284131) terlebih dahulu, dan mengembalikan 0.

2. Pemangkir memanggil fungsi 0xa0296215(c6e3ae8e2cbab1298abaa3) dengan nilai msg.value sifar. Akhirnya, 240442509453545333947284131 token TRU berjaya dicetak.

3. Penyusup memanggil fungsi 0xc471b10b(c6e3ae8e2cbab1298abaa3). Akhirnya memusnahkan 240442509453545333947284131 TRU dan memperoleh 5105.06 ETH.
Analisis Logik Serangan
Dengan memahami alur serangan di atas, kita boleh jelas mengesan bahawa terdapat masalah logik dalam fungsi getPurchasePrice dan fungsi 0xa0296215. Kita akan mula menganalisis lebih lanjut (kerana kontrak ini tidak dibuka sumber, kod di bawah adalah kod yang diterjemah balik).


Dengan membandingkan kesamaan antara dua fungsi, kita boleh menemui bahawa fungsi 0x1446 digunakan untuk mendapatkan jumlah ETH yang diperlukan untuk membeli kuantiti TRU yang ditentukan. Jelasnya, terdapat masalah logik dalam fungsi 0x1446 yang menyebabkan kesilapan pengiraan ETH. Analisis logik dalam fungsi 0x1446 akan diterangkan secara terperinci di bawah.

Perhatikan logik dalam fungsi 0x1446, kerana keputusan pengiraan akhir v13 == 0, jadi pasti terdapat sesuatu yang salah dalam logik pengiraan sebelumnya. Perlu diperhatikan bahawa fungsi 0x18ef mempunyai fungsi yang sama dengan _SafeMul, jadi masalahnya berlaku disebabkan penggunaan penambahan asal v12 + v9 (versi kontrak ialah ^0.6.10, jadi tiada pemeriksaan kebocoran).
v12 dan v9 masing-masing merujuk kepada:

Melalui analisis di atas, pendekatan serangan penyerang adalah dengan memasukkan _amountIn yang sangat besar, menyebabkan v12 + v9 melimpah menjadi nilai yang sangat kecil, akhirnya menyebabkan (v12 + v9) / v6 == 0.
Ringkasan
Penyebab utama serangan ke atas Truebit Protocol ialah kelemahan integer overflow yang serius dalam logik pengiraan harga jualan token. Disebabkan kontrak menggunakan versi Solidity ^0.6.10 dan tidak menjalankan pemeriksaan keselamatan ke atas operasi aritmetik yang penting, kehilangan besar sebanyak 8,535.36 ETH berlaku. Pada masa kini, versi Solidity terkini sendiri telah mengatasi kelemahan integer overflow. Serangan ini mungkin dilakukan oleh penjenayah siber yang menggunakan AI secara automatik untuk memeriksa kelemahan dalam beberapa protokol DeFi lama yang sedia ada (termasuk serangan Balancer dan yETH sebelum ini). Kami percaya kes serangan seperti ini yang menggunakan AI untuk menyerang protokol DeFi lama akan semakin meningkat dalam tempoh terdekat, jadi kami mencadangkan pihak projek menjalankan audit keselamatan semula ke atas kod kontrak mereka. Jika kelemahan dikesan, mereka perlu segera mengemaskinikan kontrak atau memindahkan aset, serta memantau transaksi di blockchain dengan teliti untuk memastikan kejadian tidak normal dapat dikesan secepat mungkin dan mengurangkan kehilangan kepada tahap minimum.

