Pada tanggal 3 Januari 2024, proyek Radiant Capital mengalami serangan pinjaman kilat oleh seorang penyerang. Penyerang mencuri lebih dari 1,900 ETH melalui 3 transaksi, senilai lebih dari 4,5 juta dolar AS. Dana yang dicuri saat ini masih disimpan di alamat penyerang .
Ditulis oleh: Beosin
Pada tanggal 3 Januari 2024, menurut pemantauan oleh pemantauan risiko keamanan EagleEye Beosin, platform peringatan dini dan pemblokiran, proyek **Radiant Capital mengalami serangan pinjaman kilat dari penyerang. Penyerang mencuri lebih dari 1,900 ETH melalui 3 transaksi, senilai lebih dari 4,5 juta dolar AS. Dana yang dicuri masih disimpan di alamat penyerang.**Tim keamanan Beosin segera menganalisis kejadian ini.
Akar penyebab insiden ini adalah proyek Radiant Capital menggunakan ekspansi dan pembulatan presisi dalam proses penghitungan jumlah token. Hal ini memungkinkan penyerang memperluas keuntungan dengan mengontrol presisi dan menggabungkannya dengan pembulatan. Klik untuk menyerang. **

Mengamati kode di atas, fungsi rayDiv melewati dua data uint256 a dan b. Keseluruhan proses dapat disingkat menjadi (a*RAY+b/2)/b, di mana RAY adalah data presisi yang diperluas, yaitu 10^27 , jadi hasilnya cukup Pada a*RAY/b+0.5, fungsi pembulatan diterapkan, dan kesalahan metode perhitungan ini terutama berasal dari b. Jika b relatif sangat kecil terhadap a, maka kesalahannya dapat diabaikan, tetapi jika b mempunyai orde besaran yang sama dengan a , maka kesalahannya bisa mencapai a sendiri.
Misalnya: jika a*RAY=10000, b=3, maka hasil perhitungannya adalah 3333, yaitu 1/10000 lebih kecil dari nilai sebenarnya; dan jika a*RAY=10000, b=3000, maka hasil perhitungannya adalah 3, 1/10 lebih kecil dari nilai sebenarnya.
Dalam kejadian ini, penyerang memanipulasi nilai b sehingga nilai b dan nilai a mempunyai orde besaran yang sama, sehingga perhitungannya setara dengan 3/2.0001=1, dan nilai yang dihitung adalah 1/3 lebih kecil dari nilai sebenarnya.
Mari kita lihat proses serangan hacker:






407700000000000000000000000000000000000/271800000000999999999999998631966035920=1.49999999, dan hasil pembulatannya adalah 1 sehingga hasilnya menjadi 1/3 lebih kecil.
Seperti yang ditunjukkan pada gambar di bawah, 407,700 USDC seharusnya dihancurkan, tetapi tersisa 271,800, menunjukkan bahwa hanya 271,800 yang dihancurkan, dan penyerang menarik 407,700 USDC.


Hingga berita ini dimuat, 1.902 ETH yang dicuri telah disimpan di alamat peretas dan belum dipindahkan. Beosin Trace akan terus memantau dana tersebut. **

Memasuki tahun 2024, kita telah menyaksikan dua kasus pencurian skala besar. (Ulasan insiden keamanan kemarin: Apa yang terjadi dengan kasus pertama tahun ini, insiden Orbit Chain yang dicuri senilai $80 juta?) Rangkaian peristiwa ini sekali lagi mengingatkan kita bahwa dalam ekosistem Web3, tindakan pencegahan keamanan masih sangat penting! **