OrionProtocol mengalami serangan reentrancy yang menyebabkan kerugian hampir 3 juta dolar
Pada 2 Februari 2023, kontrak OrionProtocol di Ethereum dan Binance Chain mengalami serangan reentrancy akibat adanya celah keamanan. Penyerang berhasil mencuri sekitar 2,9 juta dolar aset kripto, termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di BSC.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom dan melakukan persiapan yang diperlukan. Selanjutnya, penyerang meminjam dana melalui metode swap UNI-V2 dan memanggil metode swapThroughOrionPool dari kontrak ExchangeWithAtomic untuk menukar token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang, yang membuka jalan untuk serangan callback berikutnya.
Dalam proses penukaran, karena kontrak Token penyerang mencakup logika panggilan balik, setiap operasi transfer akan memicu pemanggilan ulang metode depositAsset dari kontrak ExchangeWithAtomic. Ini menyebabkan jumlah setoran secara keliru terakumulasi, yang pada akhirnya memungkinkan penyerang untuk menarik dana melebihi jumlah yang sebenarnya mereka setorkan.
Sumber Kerentanan
Masalah inti terletak pada fungsi doSwapThroughOrionPool dan _doSwapTokens dari kontrak ExchangeWithAtomic. Fungsi-fungsi ini memperbarui variabel curBalance setelah melakukan transfer token, tetapi tidak memiliki langkah pencegahan terhadap serangan reentrancy. Penyerang memanfaatkan metode callback transfer dari Token kustom untuk memanggil metode depositAsset, yang menyebabkan curBalance diperbarui secara salah, sehingga memungkinkan penarikan dana yang berlebihan setelah melunasi pinjaman kilat.
Aliran Dana
Modal awal penyerang berasal dari dompet panas di suatu platform perdagangan. Dari keuntungan serangan sebesar 1.651 ETH, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Saran Keamanan
Untuk mencegah serangan serupa, pihak proyek harus memperhatikan hal-hal berikut:
Saat mengimplementasikan fungsi pertukaran mata uang digital, perlu mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai jenis Token dan jalur pertukaran.
Ikuti pola "Pemeriksaan-Dampak-Interaksi" (Checks-Effects-Interactions) dalam menulis kode kontrak, yaitu terlebih dahulu melakukan pemeriksaan kondisi, kemudian memperbarui variabel status, dan terakhir berinteraksi dengan kontrak eksternal.
Gunakan kunci reentrancy atau mekanisme serupa dalam fungsi kunci untuk mencegah serangan reentrancy.
Untuk panggilan eksternal, terutama yang melibatkan operasi transfer dana, harus sangat hati-hati dan mempertimbangkan untuk menggunakan mode pembayaran tarik sebagai pengganti pembayaran dorong.
Melakukan audit keamanan secara berkala untuk menemukan dan memperbaiki potensi kerentanan dengan cepat.
Dengan mengambil langkah-langkah ini, keamanan kontrak pintar dapat ditingkatkan secara signifikan dan risiko diserang dapat dikurangi. Dalam ekosistem Web3, keamanan selalu harus menjadi pertimbangan utama.
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
11 Suka
Hadiah
11
4
Bagikan
Komentar
0/400
TokenTherapist
· 08-02 21:23
Ada orang yang tidak bisa berpikir dengan baik lagi?
Lihat AsliBalas0
LiquidatorFlash
· 08-02 21:16
Kerentanan reentrancy benar-benar adalah pembunuh utama kerugian Defi...
Lihat AsliBalas0
0xLuckbox
· 08-02 21:10
Tahun ini kenapa dicuri lagi?
Lihat AsliBalas0
TokenSherpa
· 08-02 21:10
*sigh* lagi-lagi protokol gagal melakukan pemeriksaan reentrancy dasar... secara historis, ini dapat dicegah
OrionProtocol mengalami serangan reentrancy, hampir 3 juta dolar aset dicuri
OrionProtocol mengalami serangan reentrancy yang menyebabkan kerugian hampir 3 juta dolar
Pada 2 Februari 2023, kontrak OrionProtocol di Ethereum dan Binance Chain mengalami serangan reentrancy akibat adanya celah keamanan. Penyerang berhasil mencuri sekitar 2,9 juta dolar aset kripto, termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di BSC.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom dan melakukan persiapan yang diperlukan. Selanjutnya, penyerang meminjam dana melalui metode swap UNI-V2 dan memanggil metode swapThroughOrionPool dari kontrak ExchangeWithAtomic untuk menukar token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang, yang membuka jalan untuk serangan callback berikutnya.
Dalam proses penukaran, karena kontrak Token penyerang mencakup logika panggilan balik, setiap operasi transfer akan memicu pemanggilan ulang metode depositAsset dari kontrak ExchangeWithAtomic. Ini menyebabkan jumlah setoran secara keliru terakumulasi, yang pada akhirnya memungkinkan penyerang untuk menarik dana melebihi jumlah yang sebenarnya mereka setorkan.
Sumber Kerentanan
Masalah inti terletak pada fungsi doSwapThroughOrionPool dan _doSwapTokens dari kontrak ExchangeWithAtomic. Fungsi-fungsi ini memperbarui variabel curBalance setelah melakukan transfer token, tetapi tidak memiliki langkah pencegahan terhadap serangan reentrancy. Penyerang memanfaatkan metode callback transfer dari Token kustom untuk memanggil metode depositAsset, yang menyebabkan curBalance diperbarui secara salah, sehingga memungkinkan penarikan dana yang berlebihan setelah melunasi pinjaman kilat.
Aliran Dana
Modal awal penyerang berasal dari dompet panas di suatu platform perdagangan. Dari keuntungan serangan sebesar 1.651 ETH, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Saran Keamanan
Untuk mencegah serangan serupa, pihak proyek harus memperhatikan hal-hal berikut:
Saat mengimplementasikan fungsi pertukaran mata uang digital, perlu mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai jenis Token dan jalur pertukaran.
Ikuti pola "Pemeriksaan-Dampak-Interaksi" (Checks-Effects-Interactions) dalam menulis kode kontrak, yaitu terlebih dahulu melakukan pemeriksaan kondisi, kemudian memperbarui variabel status, dan terakhir berinteraksi dengan kontrak eksternal.
Gunakan kunci reentrancy atau mekanisme serupa dalam fungsi kunci untuk mencegah serangan reentrancy.
Untuk panggilan eksternal, terutama yang melibatkan operasi transfer dana, harus sangat hati-hati dan mempertimbangkan untuk menggunakan mode pembayaran tarik sebagai pengganti pembayaran dorong.
Melakukan audit keamanan secara berkala untuk menemukan dan memperbaiki potensi kerentanan dengan cepat.
Dengan mengambil langkah-langkah ini, keamanan kontrak pintar dapat ditingkatkan secara signifikan dan risiko diserang dapat dikurangi. Dalam ekosistem Web3, keamanan selalu harus menjadi pertimbangan utama.