Analisis Peristiwa Serangan Reentrancy pada OrionProtocol
Pada 2 Februari 2023 sore, Orion Protocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat celah kontrak, dengan total kerugian sekitar 2,9 juta dolar AS dalam aset kripto, termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di Binance Smart Chain.
Analisis Proses Serangan
Penyerang pertama-tama menerapkan kontrak Token khusus dan melakukan transfer serta otorisasi yang diperlukan untuk mempersiapkan serangan selanjutnya. Kemudian, penyerang meminjam dana melalui fungsi swap dari suatu DEX dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool dari OrionProtocol untuk menukar token. Jalur pertukaran diatur ke [USDC, Token Penyerang, USDT].
Selama proses pertukaran, kontrak Token penyerang memanfaatkan fungsi transfer-nya untuk memanggil metode ExchangeWithAtomic.depositAsset, yang mengakibatkan serangan reentrancy. Ini menyebabkan jumlah setoran dihitung ulang, dan penyerang kemudian memperoleh keuntungan berlebih melalui operasi penarikan.
Arus Dana
Modal awal penyerang berasal dari dompet panas di suatu platform perdagangan. Dari total 1.651 ETH yang diperoleh dari serangan, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Analisis Kerentanan
Kerentanan inti terletak pada fungsi doSwapThroughOrionPool dan _doSwapTokens. Masalah kunci adalah kontrak hanya memperbarui variabel curBalance setelah melakukan operasi transfer, yang menciptakan kondisi untuk serangan reentrancy. Penyerang dapat menambahkan logika callback dalam fungsi transfer Token kustom, sehingga fungsi depositAsset dipanggil berulang kali, mengakibatkan curBalance diperbarui secara salah.
Saran Pencegahan
Mengikuti pola "Cek-Dampak-Interaksi" (Checks-Effects-Interactions), memastikan bahwa pembaruan variabel status terjadi sebelum panggilan eksternal.
Terapkan kunci reentrancy untuk mencegah fungsi dipanggil lagi selama eksekusi.
Pertimbangkan secara menyeluruh berbagai jenis Token dan jalur pertukaran yang mungkin menimbulkan risiko keamanan.
Memperkuat pembatasan dan pemantauan terhadap panggilan eksternal, terutama yang melibatkan operasi transfer dana.
Secara berkala melakukan audit keamanan untuk segera menemukan dan memperbaiki potensi kerentanan.
Kejadian ini sekali lagi menekankan pentingnya mematuhi standar pengkodean yang aman saat mengembangkan kontrak pintar. Pihak proyek harus terus memperhatikan keamanan kontrak dan mengambil langkah-langkah perlindungan ganda untuk meminimalkan risiko terkena serangan.
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 dengan kerugian aset enkripsi sebesar 2,9 juta dolar.
Analisis Peristiwa Serangan Reentrancy pada OrionProtocol
Pada 2 Februari 2023 sore, Orion Protocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat celah kontrak, dengan total kerugian sekitar 2,9 juta dolar AS dalam aset kripto, termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di Binance Smart Chain.
Analisis Proses Serangan
Penyerang pertama-tama menerapkan kontrak Token khusus dan melakukan transfer serta otorisasi yang diperlukan untuk mempersiapkan serangan selanjutnya. Kemudian, penyerang meminjam dana melalui fungsi swap dari suatu DEX dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool dari OrionProtocol untuk menukar token. Jalur pertukaran diatur ke [USDC, Token Penyerang, USDT].
Selama proses pertukaran, kontrak Token penyerang memanfaatkan fungsi transfer-nya untuk memanggil metode ExchangeWithAtomic.depositAsset, yang mengakibatkan serangan reentrancy. Ini menyebabkan jumlah setoran dihitung ulang, dan penyerang kemudian memperoleh keuntungan berlebih melalui operasi penarikan.
Arus Dana
Modal awal penyerang berasal dari dompet panas di suatu platform perdagangan. Dari total 1.651 ETH yang diperoleh dari serangan, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Analisis Kerentanan
Kerentanan inti terletak pada fungsi doSwapThroughOrionPool dan _doSwapTokens. Masalah kunci adalah kontrak hanya memperbarui variabel curBalance setelah melakukan operasi transfer, yang menciptakan kondisi untuk serangan reentrancy. Penyerang dapat menambahkan logika callback dalam fungsi transfer Token kustom, sehingga fungsi depositAsset dipanggil berulang kali, mengakibatkan curBalance diperbarui secara salah.
Saran Pencegahan
Mengikuti pola "Cek-Dampak-Interaksi" (Checks-Effects-Interactions), memastikan bahwa pembaruan variabel status terjadi sebelum panggilan eksternal.
Terapkan kunci reentrancy untuk mencegah fungsi dipanggil lagi selama eksekusi.
Pertimbangkan secara menyeluruh berbagai jenis Token dan jalur pertukaran yang mungkin menimbulkan risiko keamanan.
Memperkuat pembatasan dan pemantauan terhadap panggilan eksternal, terutama yang melibatkan operasi transfer dana.
Secara berkala melakukan audit keamanan untuk segera menemukan dan memperbaiki potensi kerentanan.
Kejadian ini sekali lagi menekankan pentingnya mematuhi standar pengkodean yang aman saat mengembangkan kontrak pintar. Pihak proyek harus terus memperhatikan keamanan kontrak dan mengambil langkah-langkah perlindungan ganda untuk meminimalkan risiko terkena serangan.