Analisis Insiden Serangan Reentrancy pada OrionProtocol
Pada tanggal 2 Februari 2023 pukul 15:40:20 UTC, OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat celah kontrak. Penyerang meraih keuntungan sebesar 2.844.766 USDT di rantai Ethereum dan 191.606 BUSD di rantai Binance Smart Chain, dengan total kerugian sekitar 2,9 juta dolar AS.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom dan melakukan persiapan yang diperlukan. Selanjutnya, penyerang meminjam dana melalui fungsi swap dari DEX tertentu, memanggil metode OrionProtocol ExchangeWithAtomic.swapThroughOrionPool untuk menukar token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang.
Dalam proses pertukaran, penyerang memanfaatkan fungsi callback dari kontrak Token yang disesuaikan untuk memanggil metode ExchangeWithAtomic.depositAsset secara berulang, menyebabkan jumlah setoran terus bertambah. Pada akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari dompet panas di suatu platform perdagangan. 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 terletak pada fungsi doSwapThroughOrionPool dan _doSwapTokens dari kontrak ExchangeWithAtomic. Fungsi-fungsi ini memperbarui variabel curBalance setelah melakukan transfer token, melanggar pola "Checks-Effects-Interactions" ( Checks-Effects-Interactions ). Penyerang dapat melakukan serangan reentrancy dengan menambahkan logika callback dalam fungsi transfer Token kustom, yang menyebabkan pembaruan curBalance yang salah.
Reproduksi Serangan
Peneliti menyediakan sebagian kode POC yang menunjukkan bagaimana memanfaatkan celah tersebut untuk melakukan serangan. Hasil pengujian menunjukkan bahwa penyerang berhasil mendapatkan USDT tambahan.
Saran Keamanan
Pihak proyek harus mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai jenis Token dan jalur pertukaran saat mengimplementasikan fungsi pertukaran token.
Ikuti dengan ketat standar pengkodean "periksa-berlaku-interaksi", pastikan pembaruan variabel status diselesaikan sebelum pemanggilan eksternal.
Terapkan mekanisme keamanan seperti kunci reentrancy untuk mencegah serangan reentrancy.
Secara berkala melakukan audit kode dan pengujian keamanan, untuk segera menemukan dan memperbaiki potensi kerentanan.
Pertimbangkan untuk memperkenalkan mekanisme batasan, mengontrol jumlah maksimum per transaksi, mengurangi potensi kerugian.
Peristiwa ini sekali lagi mengingatkan kita bahwa dalam pengembangan kontrak pintar, kita harus selalu waspada dan mengutamakan keamanan. Hanya dengan terus meningkatkan langkah-langkah keamanan, kita dapat memberikan jaminan yang kuat untuk perkembangan sehat ekosistem Web3.
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 sebesar 2,9 juta dolar AS
Analisis Insiden Serangan Reentrancy pada OrionProtocol
Pada tanggal 2 Februari 2023 pukul 15:40:20 UTC, OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat celah kontrak. Penyerang meraih keuntungan sebesar 2.844.766 USDT di rantai Ethereum dan 191.606 BUSD di rantai Binance Smart Chain, dengan total kerugian sekitar 2,9 juta dolar AS.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom dan melakukan persiapan yang diperlukan. Selanjutnya, penyerang meminjam dana melalui fungsi swap dari DEX tertentu, memanggil metode OrionProtocol ExchangeWithAtomic.swapThroughOrionPool untuk menukar token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang.
Dalam proses pertukaran, penyerang memanfaatkan fungsi callback dari kontrak Token yang disesuaikan untuk memanggil metode ExchangeWithAtomic.depositAsset secara berulang, menyebabkan jumlah setoran terus bertambah. Pada akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari dompet panas di suatu platform perdagangan. 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 terletak pada fungsi doSwapThroughOrionPool dan _doSwapTokens dari kontrak ExchangeWithAtomic. Fungsi-fungsi ini memperbarui variabel curBalance setelah melakukan transfer token, melanggar pola "Checks-Effects-Interactions" ( Checks-Effects-Interactions ). Penyerang dapat melakukan serangan reentrancy dengan menambahkan logika callback dalam fungsi transfer Token kustom, yang menyebabkan pembaruan curBalance yang salah.
Reproduksi Serangan
Peneliti menyediakan sebagian kode POC yang menunjukkan bagaimana memanfaatkan celah tersebut untuk melakukan serangan. Hasil pengujian menunjukkan bahwa penyerang berhasil mendapatkan USDT tambahan.
Saran Keamanan
Pihak proyek harus mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai jenis Token dan jalur pertukaran saat mengimplementasikan fungsi pertukaran token.
Ikuti dengan ketat standar pengkodean "periksa-berlaku-interaksi", pastikan pembaruan variabel status diselesaikan sebelum pemanggilan eksternal.
Terapkan mekanisme keamanan seperti kunci reentrancy untuk mencegah serangan reentrancy.
Secara berkala melakukan audit kode dan pengujian keamanan, untuk segera menemukan dan memperbaiki potensi kerentanan.
Pertimbangkan untuk memperkenalkan mekanisme batasan, mengontrol jumlah maksimum per transaksi, mengurangi potensi kerugian.
Peristiwa ini sekali lagi mengingatkan kita bahwa dalam pengembangan kontrak pintar, kita harus selalu waspada dan mengutamakan keamanan. Hanya dengan terus meningkatkan langkah-langkah keamanan, kita dapat memberikan jaminan yang kuat untuk perkembangan sehat ekosistem Web3.