Lebih dari 1,900 ETH dicuri, dan bagaimana Radiant Capital diretas untuk mencuri $4.5 juta

ForesightNews

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.

Analisis kerentanan

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.

Proses serangan

Mari kita lihat proses serangan hacker:

  1. Penyerang pertama kali meminjam 3 juta USDC melalui pinjaman flash AAVE, yang digunakan untuk mendanai serangan tersebut.

  1. Penyerang menjanjikan 2 juta USDC ke kontrak Radiant dan memperoleh 2 juta token sertifikat rUSDCn.

  1. Penyerang melakukan pinjaman kilat melalui kontrak Radiant, meminjam 2 juta USDC, mengembalikan 2 juta USDC dalam fungsi panggilan balik, dan mengekstrak USDC yang dijanjikan pada langkah kedua. Terakhir, fungsi pinjaman kilat akan memanggil fungsi transferfrom dengan bunga Transfer USDC penyerang ke dalam kontrak. **Saat ini, biaya penanganan sebesar 9/10000 akan dikenakan, dan biaya penanganan yang dikumpulkan menjadi likuiditas kumpulan. **

  1. Dengan mengulangi langkah 3 berkali-kali, penyerang mengontrol Indeks Likuiditas menjadi sangat besar, Indeks Likuiditas=271800000000999999999999998631966035920.

  1. Selanjutnya, penyerang membuat kontrak baru dan memasukkan 543.600 USDC ke dalamnya, **karena 5436 (nilai USDC) tepat dua kali lipat 2718 (nilai Indeks Likuiditas) pada langkah 4, yang dapat dikontrol dengan mudah dengan pembulatan. **

  1. Penyerang menggadaikan seluruh 543.600 USDC ke dalam kontrak Radiant dan memperoleh jumlah rUSDCn yang sama.

  1. Penyerang mengekstraksi 407,700 USDC, yang seharusnya menghancurkan 407,700 rUSDCn, tetapi seperti disebutkan di atas, fungsi pembakaran melakukan perhitungan ekspansi dan pembulatan yang presisi.

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.

  1. Penyerang mengeksploitasi kerentanan pada langkah 7 untuk mengulangi operasi penarikan janji, dan penarikan selalu 1/3 lebih besar dari jumlah janji, dan akhirnya menukarkan semua USDC di kumpulan. **

Pelacakan Dana

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! **

Penafian: Informasi di halaman ini dapat berasal dari pihak ketiga dan tidak mewakili pandangan atau opini Gate. Konten yang ditampilkan hanya untuk tujuan referensi dan bukan merupakan nasihat keuangan, investasi, atau hukum. Gate tidak menjamin keakuratan maupun kelengkapan informasi dan tidak bertanggung jawab atas kerugian apa pun yang timbul akibat penggunaan informasi ini. Investasi aset virtual memiliki risiko tinggi dan rentan terhadap volatilitas harga yang signifikan. Anda dapat kehilangan seluruh modal yang diinvestasikan. Harap pahami sepenuhnya risiko yang terkait dan buat keputusan secara bijak berdasarkan kondisi keuangan serta toleransi risiko Anda sendiri. Untuk detail lebih lanjut, silakan merujuk ke Penafian.
Komentar
0/400
Tidak ada komentar