Analisis Insiden Serangan Reentrancy pada OrionProtocol
Pada 2 Februari 2023, OrionProtocol mengalami serangan re-entrance akibat kerentanan kontrak di jaringan Ethereum dan Binance Smart Chain, dengan total kerugian sekitar 2,9 juta dolar AS. Rincian kerugian mencakup 2.844.766 USDT di jaringan Ethereum dan 191.606 BUSD di Binance Smart Chain.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom dan melakukan operasi transfer serta otorisasi terkait, untuk mempersiapkan serangan selanjutnya. Kemudian, penyerang meminjam melalui metode swap dari DEX tertentu, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool untuk pertukaran token. Jalur pertukaran diatur menjadi [USDC, Token penyerang, USDT].
Dalam proses penukaran, penyerang memanfaatkan fungsi callback dari kontrak Token kustom, dengan memanggil fungsi ExchangeWithAtomic.depositAsset secara berulang melalui metode Token.Transfer, yang mengakibatkan jumlah deposit terus terakumulasi. Akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Arus Dana
Sumber dana awal penyerang berasal dari akun 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. Fungsi ini memanggil fungsi _doSwapTokens, yang memperbarui variabel curBalance setelah melakukan transfer token. Penyerang menambahkan logika callback dalam fungsi transfer Token kustom, memanggil fungsi depositAsset, yang menyebabkan pembaruan curBalance menjadi salah. Penyerang kemudian memanggil fungsi withdraw untuk menarik dana setelah membayar kembali pinjaman kilat, menyelesaikan serangan.
Reproduksi Serangan
Penyerang melakukan serangan dengan membuat kontrak token ERC20 kustom dan memanfaatkan fungsi pinjaman kilat dari DEX tertentu. Langkah-langkah utamanya meliputi:
Membuat Token kustom dan membangun pasangan perdagangan dengan USDC, USDT
Siapkan dana awal dan sediakan likuiditas
Panggil fungsi depositAsset dan swapThroughOrionPool dari kontrak ExchangeWithAtomic
Tambahkan logika callback dalam fungsi transfer Token kustom
Akhirnya menarik dana keuntungan melalui fungsi withdraw
Saran Keamanan
Untuk menghindari serangan serupa, pihak proyek harus memperhatikan hal-hal berikut:
Dalam desain kontrak, perlu mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai Token dan jalur pertukaran.
Mengikuti norma pengkodean "periksa dulu, baru berlaku, lalu interaksi" (Checks-Effects-Interactions)
Melaksanakan audit keamanan secara menyeluruh, dengan fokus khusus pada risiko serangan reentrancy.
Pertimbangkan untuk menggunakan mekanisme keamanan seperti kunci reentrancy
Melakukan pemindaian kerentanan kontrak dan evaluasi keamanan secara berkala
Peristiwa ini sekali lagi menekankan pentingnya keamanan kontrak pintar, pihak proyek harus terus memantau dan meningkatkan langkah-langkah keamanannya untuk melindungi aset pengguna dan menjaga reputasi platform.
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.
8 Suka
Hadiah
8
4
Bagikan
Komentar
0/400
AirdropF5Bro
· 20jam yang lalu
jebakan uang tunai berjalan lagi, ada tujuan baru~
OrionProtocol mengalami serangan reentrancy senilai 2,9 miliar, dana telah sebagian mengalir ke tumbler kripto
Analisis Insiden Serangan Reentrancy pada OrionProtocol
Pada 2 Februari 2023, OrionProtocol mengalami serangan re-entrance akibat kerentanan kontrak di jaringan Ethereum dan Binance Smart Chain, dengan total kerugian sekitar 2,9 juta dolar AS. Rincian kerugian mencakup 2.844.766 USDT di jaringan Ethereum dan 191.606 BUSD di Binance Smart Chain.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom dan melakukan operasi transfer serta otorisasi terkait, untuk mempersiapkan serangan selanjutnya. Kemudian, penyerang meminjam melalui metode swap dari DEX tertentu, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool untuk pertukaran token. Jalur pertukaran diatur menjadi [USDC, Token penyerang, USDT].
Dalam proses penukaran, penyerang memanfaatkan fungsi callback dari kontrak Token kustom, dengan memanggil fungsi ExchangeWithAtomic.depositAsset secara berulang melalui metode Token.Transfer, yang mengakibatkan jumlah deposit terus terakumulasi. Akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Arus Dana
Sumber dana awal penyerang berasal dari akun 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. Fungsi ini memanggil fungsi _doSwapTokens, yang memperbarui variabel curBalance setelah melakukan transfer token. Penyerang menambahkan logika callback dalam fungsi transfer Token kustom, memanggil fungsi depositAsset, yang menyebabkan pembaruan curBalance menjadi salah. Penyerang kemudian memanggil fungsi withdraw untuk menarik dana setelah membayar kembali pinjaman kilat, menyelesaikan serangan.
Reproduksi Serangan
Penyerang melakukan serangan dengan membuat kontrak token ERC20 kustom dan memanfaatkan fungsi pinjaman kilat dari DEX tertentu. Langkah-langkah utamanya meliputi:
Saran Keamanan
Untuk menghindari serangan serupa, pihak proyek harus memperhatikan hal-hal berikut:
Peristiwa ini sekali lagi menekankan pentingnya keamanan kontrak pintar, pihak proyek harus terus memantau dan meningkatkan langkah-langkah keamanannya untuk melindungi aset pengguna dan menjaga reputasi platform.