Analisis Insiden Serangan Reentrancy pada OrionProtocol
Pada 2 Februari 2023 sore, sebuah platform DEX mengalami serangan reentrancy akibat celah kontrak di Ethereum dan Binance Smart Chain, dengan total kerugian sekitar 2,9 juta dolar AS dalam aset kripto, di mana termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di Binance Smart Chain.
Ringkasan Proses Serangan
Penyerang pertama-tama menerapkan kontrak token khusus dan melakukan operasi pemindahan dan otorisasi yang relevan. Selanjutnya, penyerang meminjam dana melalui fungsi swap dari suatu DEX dan memanggil metode swapThroughOrionPool di platform target untuk menukar token. Jalur pertukaran mencakup alamat kontrak token yang dibuat oleh penyerang, yang memungkinkan penyerang untuk mengeksekusi operasi callback selama proses transaksi.
Dalam proses penukaran, penyerang memanfaatkan fungsi callback dalam kontrak token yang mereka buat, untuk memanggil metode depositAsset dari platform target secara berulang, yang menyebabkan jumlah setoran terakumulasi. Akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Sumber dana awal penyerang berasal dari dompet panas suatu platform perdagangan besar. Dari 1.651 ETH yang diperoleh dari serangan, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Masalah inti dari kerentanan muncul di dalam fungsi doSwapThroughOrionPool. Fungsi ini memperbarui variabel curBalance setelah melakukan transfer token, tetapi tidak mempertimbangkan risiko serangan reentrancy yang mungkin ada. Penyerang berhasil melakukan panggilan ulang ke fungsi depositAsset dengan menambahkan logika callback dalam fungsi transfer token kustom, yang mengakibatkan variabel curBalance diperbarui secara tidak tepat.
Reproduksi Serangan
Peneliti berhasil mereproduksi proses serangan dan menyediakan kode POC yang relevan. Hasil pengujian menunjukkan bahwa penyerang dapat memperoleh dana tambahan dengan memanfaatkan kerentanan kontrak.
Saran Keamanan
Untuk kontrak pintar yang memiliki fungsi pertukaran token, pengembang perlu mempertimbangkan hal-hal berikut:
Pertimbangkan dengan saksama kemungkinan situasi tak terduga yang mungkin ditimbulkan oleh berbagai jenis token dan jalur pertukaran.
Mengikuti pola pengkodean "Cek-Dampak-Interaksi" (Checks-Effects-Interactions), yaitu terlebih dahulu melakukan pemeriksaan status, kemudian memperbarui status kontrak, dan terakhir berinteraksi dengan kontrak eksternal.
Menerapkan mekanisme keamanan seperti kunci reentrancy untuk mencegah serangan reentrancy.
Untuk panggilan eksternal, terutama yang melibatkan operasi transfer dana, harus sangat hati-hati dan dilakukan audit keamanan secara menyeluruh.
Dengan mengambil langkah-langkah ini, risiko serangan terhadap kontrak pintar dapat dikurangi secara signifikan, meningkatkan keamanan dan stabilitas proyek. Dalam ekosistem Web3, memastikan keamanan kontrak sangat penting untuk menjaga kepercayaan pengguna dan keamanan aset.
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.
OrionProtocol mengalami serangan reentrancy dan kehilangan 2,9 juta dolar aset enkripsi
Analisis Insiden Serangan Reentrancy pada OrionProtocol
Pada 2 Februari 2023 sore, sebuah platform DEX mengalami serangan reentrancy akibat celah kontrak di Ethereum dan Binance Smart Chain, dengan total kerugian sekitar 2,9 juta dolar AS dalam aset kripto, di mana termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di Binance Smart Chain.
Ringkasan Proses Serangan
Penyerang pertama-tama menerapkan kontrak token khusus dan melakukan operasi pemindahan dan otorisasi yang relevan. Selanjutnya, penyerang meminjam dana melalui fungsi swap dari suatu DEX dan memanggil metode swapThroughOrionPool di platform target untuk menukar token. Jalur pertukaran mencakup alamat kontrak token yang dibuat oleh penyerang, yang memungkinkan penyerang untuk mengeksekusi operasi callback selama proses transaksi.
Dalam proses penukaran, penyerang memanfaatkan fungsi callback dalam kontrak token yang mereka buat, untuk memanggil metode depositAsset dari platform target secara berulang, yang menyebabkan jumlah setoran terakumulasi. Akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Sumber dana awal penyerang berasal dari dompet panas suatu platform perdagangan besar. Dari 1.651 ETH yang diperoleh dari serangan, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Masalah inti dari kerentanan muncul di dalam fungsi doSwapThroughOrionPool. Fungsi ini memperbarui variabel curBalance setelah melakukan transfer token, tetapi tidak mempertimbangkan risiko serangan reentrancy yang mungkin ada. Penyerang berhasil melakukan panggilan ulang ke fungsi depositAsset dengan menambahkan logika callback dalam fungsi transfer token kustom, yang mengakibatkan variabel curBalance diperbarui secara tidak tepat.
Reproduksi Serangan
Peneliti berhasil mereproduksi proses serangan dan menyediakan kode POC yang relevan. Hasil pengujian menunjukkan bahwa penyerang dapat memperoleh dana tambahan dengan memanfaatkan kerentanan kontrak.
Saran Keamanan
Untuk kontrak pintar yang memiliki fungsi pertukaran token, pengembang perlu mempertimbangkan hal-hal berikut:
Dengan mengambil langkah-langkah ini, risiko serangan terhadap kontrak pintar dapat dikurangi secara signifikan, meningkatkan keamanan dan stabilitas proyek. Dalam ekosistem Web3, memastikan keamanan kontrak sangat penting untuk menjaga kepercayaan pengguna dan keamanan aset.