8 Januari 2026, Protokol Truebit diserang oleh peretas, mengalami kerugian 8.535,36 ETH (sekitar $26,44 juta). Protokol Truebit secara resmi mengonfirmasi kejadian ini pada dini hari keesokan harinya. Tim keamanan ExVul melakukan analisis kerentanan yang mendetail terhadap serangan ini, dan hasil analisisnya adalah sebagai berikut:
Alur Serangan
Alamat penyerang:
0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50
Hash transaksi serangan:
0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
Penyerang menyelesaikan serangan dengan memanggil transaksi getPurchasePrice→0xa0296215→0xc471b10b secara berputar sebanyak 4 putaran. Analisis dilakukan dengan mengambil contoh putaran pertama.
1. Penyerang pertama memanggil fungsi getPurchasePrice(240442509453545333947284131), yang mengembalikan nilai 0.
2. Penyerang memanggil fungsi 0xa0296215(c6e3ae8e2cbab1298abaa3) dengan msg.value 0. Akhirnya berhasil mencetak 240442509453545333947284131 keping TRU.
3. Penyerang memanggil fungsi 0xc471b10b(c6e3ae8e2cbab1298abaa3). Akhirnya menghancurkan 240442509453545333947284131 keping TRU dan mendapatkan 5105,06 keping ETH.
Analisis Logika Serangan
Dengan memahami alur serangan di atas, dapat terlihat dengan jelas adanya masalah logika antara fungsi getPurchasePrice dan fungsi 0xa0296215. Mari kita mulai analisis mendalam (karena kontrak tidak open source, kode di bawah ini adalah kode hasil dekompilasi).
Dengan membandingkan kesamaan kedua fungsi tersebut, kita dapat menemukan bahwa fungsi 0x1446 digunakan untuk mendapatkan berapa banyak ETH yang dibutuhkan untuk membeli jumlah TRU tertentu. Jelas bahwa logika fungsi 0x1446 bermasalah, yang menyebabkan kesalahan perhitungan ETH. Berikut adalah analisis mendetail tentang logika dalam fungsi 0x1446.
Mengamati logika dalam fungsi 0x1446, karena hasil perhitungan akhir v13 == 0, pasti ada masalah dalam logika perhitungan yang disebutkan di atas. Perlu diketahui bahwa fungsi 0x18ef sama dengan _SafeMul, sehingga masalahnya terletak pada penggunaan penambahan native v12 + v9 (versi kontrak adalah ^0.6.10, sehingga tidak ada pemeriksaan overflow).
v12 dan v9, masing-masing menunjukkan:
Melalui analisis di atas,思路 serangan penyerang adalah dengan memasukkan _amountIn yang sangat besar, sehingga v12 + v9 meluap (overflow) menjadi nilai yang sangat kecil, dan akhirnya membuat (v12 + v9) / v6 == 0.
Kesimpulan
Penyebab utama peristiwa serangan pada Protokol Truebit kali ini adalah adanya kerentanan integer overflow yang parah dalam logika perhitungan harga pembelian tokennya. Karena kontrak menggunakan versi Solidity ^0.6.10 dan tidak melakukan pemeriksaan keamanan pada operasi aritmatika kunci, akhirnya mengakibatkan kerugian besar sebesar 8.535,36 ETH. Versi Solidity yang baru saat ini telah memitigasi kerentanan overflow. Serangan ini seharusnya adalah peretas yang menggunakan AI untuk secara otomatis memindai beberapa protokol DeFi lama yang telah diluncurkan (termasuk serangan Balancer dan yETH beberapa waktu lalu). Kami berpendapat bahwa peristiwa serangan yang menggunakan AI untuk menyerang protokol DeFi lama seperti ini akan semakin banyak terjadi dalam waktu dekat. Oleh karena itu, kami menyarankan pihak proyek untuk dapat melakukan audit keamanan baru pada kode kontrak, jika ditemukan kerentanan, segera tingkatkan kontrak atau lakukan transfer aset, serta lakukan pemantauan on-chain yang baik, deteksi abnormalitas secara tepat waktu, dan tekan kerugian serendah mungkin.













