Analisis Insiden Serangan Reentrancy pada OrionProtocol
Pada 2 Februari 2023 pukul 15:40:20 UTC, kontrak OrionProtocol di Ethereum dan Binance Smart Chain diserang dengan serangan reentrancy karena adanya celah. Penyerang meraih keuntungan sebesar 2.844.766 USDT di rantai Ethereum dan 191.606 BUSD di Binance Smart Chain, dengan total sekitar 2,9 juta dolar AS.
Analisis Proses Serangan
Penyerang pertama-tama menerapkan kontrak Token kustom dan melakukan operasi transfer dan otorisasi yang relevan, sebagai persiapan untuk serangan selanjutnya.
Kemudian, penyerang melakukan pinjaman melalui metode swap dari DEX tertentu, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool dari OrionProtocol untuk menukar token. Jalur penukaran diatur menjadi [USDC, Token Penyerang, USDT].
Selama proses penukaran, karena kontrak Token yang dibuat oleh penyerang mengandung logika callback, maka saat melakukan operasi Transfer akan memicu pemanggilan ulang metode ExchangeWithAtomic.depositAsset, yang menyebabkan jumlah setoran terakumulasi berkali-kali. Akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan. Dari 1.651 ETH yang diperoleh, 657,5 ETH masih terjebak di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Analisis Kerentanan
Masalah inti terletak pada fungsi doSwapThroughOrionPool dari kontrak ExchangeWithAtomic. Fungsi ini memperbarui variabel curBalance setelah melakukan transfer Token, yang menciptakan kondisi untuk serangan reentrancy. Penyerang memanfaatkan metode callback transfer dari Token kustom untuk memanggil metode depositAsset, yang menyebabkan curBalance diperbarui secara salah. Akhirnya, setelah melunasi pinjaman kilat, penyerang menarik dana berlebih melalui fungsi withdraw.
Saran Keamanan
Dalam desain kontrak, harus mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai Token dan jalur pertukaran.
Mengikuti pola "Checks-Effects-Interactions" (Checks-Effects-Interactions) dalam menulis kode kontrak, yaitu pertama melakukan pemeriksaan kondisi, kemudian memperbarui variabel status, dan akhirnya melakukan panggilan eksternal.
Implementasikan kunci reentrancy di fungsi kunci untuk mencegah serangan reentrancy.
Untuk kontrak Token yang dipanggil dari luar, perlu dilakukan audit keamanan yang ketat dan manajemen whitelist.
Melakukan audit keamanan kontrak secara berkala untuk mendeteksi dan memperbaiki potensi kerentanan dengan cepat.
Dengan mengambil langkah-langkah ini, risiko serangan terhadap kontrak pintar dapat secara efektif dikurangi, meningkatkan keselamatan keseluruhan proyek.
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.
13 Suka
Hadiah
13
5
Bagikan
Komentar
0/400
DevChive
· 21jam yang lalu
Sekali lagi, mesin pemotong suckers telah mati.
Lihat AsliBalas0
GasWaster
· 21jam yang lalu
Satu lagi mesin pemotong suckers sudah doomed.
Lihat AsliBalas0
SleepTrader
· 21jam yang lalu
Sekali lagi memainkan orang-orang untuk para pemula.
OrionProtocol mengalami serangan reentrancy dengan kerugian sebesar 2,9 juta dolar AS
Analisis Insiden Serangan Reentrancy pada OrionProtocol
Pada 2 Februari 2023 pukul 15:40:20 UTC, kontrak OrionProtocol di Ethereum dan Binance Smart Chain diserang dengan serangan reentrancy karena adanya celah. Penyerang meraih keuntungan sebesar 2.844.766 USDT di rantai Ethereum dan 191.606 BUSD di Binance Smart Chain, dengan total sekitar 2,9 juta dolar AS.
Analisis Proses Serangan
Penyerang pertama-tama menerapkan kontrak Token kustom dan melakukan operasi transfer dan otorisasi yang relevan, sebagai persiapan untuk serangan selanjutnya.
Kemudian, penyerang melakukan pinjaman melalui metode swap dari DEX tertentu, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool dari OrionProtocol untuk menukar token. Jalur penukaran diatur menjadi [USDC, Token Penyerang, USDT].
Selama proses penukaran, karena kontrak Token yang dibuat oleh penyerang mengandung logika callback, maka saat melakukan operasi Transfer akan memicu pemanggilan ulang metode ExchangeWithAtomic.depositAsset, yang menyebabkan jumlah setoran terakumulasi berkali-kali. Akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan. Dari 1.651 ETH yang diperoleh, 657,5 ETH masih terjebak di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Analisis Kerentanan
Masalah inti terletak pada fungsi doSwapThroughOrionPool dari kontrak ExchangeWithAtomic. Fungsi ini memperbarui variabel curBalance setelah melakukan transfer Token, yang menciptakan kondisi untuk serangan reentrancy. Penyerang memanfaatkan metode callback transfer dari Token kustom untuk memanggil metode depositAsset, yang menyebabkan curBalance diperbarui secara salah. Akhirnya, setelah melunasi pinjaman kilat, penyerang menarik dana berlebih melalui fungsi withdraw.
Saran Keamanan
Dalam desain kontrak, harus mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai Token dan jalur pertukaran.
Mengikuti pola "Checks-Effects-Interactions" (Checks-Effects-Interactions) dalam menulis kode kontrak, yaitu pertama melakukan pemeriksaan kondisi, kemudian memperbarui variabel status, dan akhirnya melakukan panggilan eksternal.
Implementasikan kunci reentrancy di fungsi kunci untuk mencegah serangan reentrancy.
Untuk kontrak Token yang dipanggil dari luar, perlu dilakukan audit keamanan yang ketat dan manajemen whitelist.
Melakukan audit keamanan kontrak secara berkala untuk mendeteksi dan memperbaiki potensi kerentanan dengan cepat.
Dengan mengambil langkah-langkah ini, risiko serangan terhadap kontrak pintar dapat secara efektif dikurangi, meningkatkan keselamatan keseluruhan proyek.