Pada tanggal 3 Januari, proyek Radiant Capital mengalami serangan pinjaman kilat yang parah, yang mengakibatkan hilangnya 1,900 ETH (sekitar $4.5 juta). Radiant Capital adalah protokol pinjaman lintas rantai terdesentralisasi yang memungkinkan pengguna untuk menyetor dan meminjamkan berbagai aset di berbagai blockchain, menghilangkan silo likuiditas.

Menurut data on-chain, peretas memanfaatkan jendela waktu untuk aktivasi pasar baru dan masalah pembulatan di basis kode Compound/Aave untuk melakukan serangan pinjaman kilat. Metode serangan ini mengacu pada meminjam dana dalam jumlah besar, menyelesaikan serangkaian operasi dalam satu blok, dan kemudian mengembalikan dana tersebut sebelum akhir blok untuk mendapatkan keuntungan.

Serangan kerentanan sebentar

Menurut laporan dari PeckShield dan PeckShield, penyerang mengeksploitasi kerentanan komputasi di Radiant Capital, memungkinkan mereka menarik USDC dalam jumlah besar dengan harga rendah dengan mengontrol presisi dan pembulatan. USDC adalah mata uang stabil yang nilainya dipatok terhadap dolar AS dan merupakan salah satu aset yang biasa digunakan dalam protokol keuangan terdesentralisasi.

Proses serangan penyerang adalah sebagai berikut:

1. Penyerang pertama kali meminjam 3 juta USDC melalui pinjaman flash AAVE untuk digunakan sebagai dana awal serangan. Pinjaman kilat mengacu pada peminjaman dana dalam jumlah besar, menyelesaikan serangkaian operasi dalam satu blok, dan kemudian mengembalikan dana tersebut sebelum akhir blok untuk mendapatkan keuntungan.

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

3. 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.

4. Dengan mengulangi langkah 3 berkali-kali, penyerang mengontrol Indeks Likuiditas menjadi sangat besar, Indeks Likuiditas=271800000000999999999999998631966035920. Indeks Likuiditas adalah variabel yang digunakan dalam kontrak Radiant untuk mencatat pertumbuhan likuiditas yang akan meningkat seiring dengan akumulasi waktu dan bunga.

5. 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.

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

7. 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.

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

Dana saat ini tidak berisiko

Radiant Capital mengakui masalah ini melalui postingan resminya dan mengatakan telah menangguhkan pasar pinjamannya di Arbitrum dan sedang menyelidiki penyebab dan dampak insiden tersebut. Arbitrum adalah solusi penskalaan lapis kedua yang meningkatkan kecepatan transaksi dan mengurangi biaya Ethereum. Radiant Capital juga menyatakan bahwa saat ini tidak ada dana pengguna yang berisiko dan berencana mengeluarkan laporan deteksi dan melanjutkan operasi setelah masalah teratasi.

Kesimpulan:

Kejadian ini sekali lagi mengingatkan kita bahwa keamanan protokol keuangan terdesentralisasi sangatlah penting dan perlu terus diaudit dan diuji untuk mencegah potensi kerentanan dan serangan. Pengguna juga harus mewaspadai risiko dan hanya berpartisipasi dalam peminjaman dan investasi pada platform tepercaya. Meski Radiant Capital mengalami kerugian besar, namun pihaknya juga menunjukkan sikap positif dan rasa tanggung jawab, berharap dapat memulihkan dan meningkatkan keamanan dan stabilitas protokolnya secepatnya. Pada saat yang sama, saya juga berharap protokol keuangan terdesentralisasi lainnya dapat belajar dari kejadian ini, memperkuat tindakan pencegahan keamanan mereka sendiri, dan memberikan layanan dan pengalaman yang lebih baik kepada pengguna. #RadiantCapital #黑客攻击