Analisis Peristiwa Serangan Reentrancy pada OrionProtocol
Ringkasan Acara
Pada 2 Februari 2023, OrionProtocol mengalami serangan reentrancy di Ethereum dan Binance Smart Chain, yang mengakibatkan kerugian sekitar 2,9 juta dolar AS. Penyerang memanfaatkan celah kontrak untuk mencuri 2.844.766 USDT di jaringan Ethereum dan 191.606 BUSD di jaringan Binance Smart Chain.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom untuk mempersiapkan serangan selanjutnya.
Melakukan pinjaman melalui metode swap UNI-V2, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool untuk pertukaran token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang.
Saat menjalankan metode swapThroughOrionPool, penyerang memanfaatkan fungsi callback dalam kontrak Token kustom untuk memanggil kembali metode ExchangeWithAtomic.depositAsset, yang menyebabkan jumlah setoran dijumlahkan berkali-kali.
Terakhir, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari dompet panas suatu platform perdagangan. Dari 1.651 ETH yang diperoleh, 657,5 ETH masih tersisa di dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Analisis Kerentanan
Masalah inti terletak pada fungsi doSwapThroughOrionPool. Fungsi ini saat menjalankan _doSwapTokens, pertama melakukan operasi transfer, lalu memperbarui variabel curBalance. Penyerang memanfaatkan fungsi transfer dari Token kustom yang menambahkan callback, dan sebelum curBalance diperbarui, memanggil kembali fungsi depositAsset, yang mengakibatkan kesalahan perhitungan saldo.
Saran Pencegahan
Desain kontrak harus mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai Token dan jalur pertukaran.
Ikuti pola "Pemeriksaan-Efek-Interaksi" (Checks-Effects-Interactions) saat menulis kode kontrak, yaitu melakukan pemeriksaan kondisi terlebih dahulu, kemudian memperbarui variabel status, dan terakhir melakukan panggilan eksternal.
Menambahkan mekanisme keamanan seperti penguncian reentrancy untuk mencegah serangan reentrancy.
Melakukan audit kode dan pemindaian kerentanan secara berkala, serta segera memperbaiki potensi risiko keamanan.
Membatasi jumlah maksimum transaksi per sekali, menetapkan batasan frekuensi transaksi, dan langkah-langkah lainnya untuk mengurangi kerugian yang disebabkan oleh potensi serangan.
Dengan mengambil langkah-langkah ini, pihak proyek dapat secara signifikan meningkatkan keamanan kontrak dan mengurangi risiko mengalami serangan serupa. Memperhatikan keamanan kontrak pintar secara berkelanjutan sangat penting untuk menjaga perkembangan sehat ekosistem Web3.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
8 Suka
Hadiah
8
3
Bagikan
Komentar
0/400
FreeRider
· 07-12 19:16
Satu lagi kontributor baru suckers
Lihat AsliBalas0
WenMoon42
· 07-12 19:09
Satu proyek lagi gg.
Lihat AsliBalas0
LiquidationSurvivor
· 07-12 19:08
Kontrak lagi-lagi diambil, tidak bisa berkata apa-apa.
OrionProtocol mengalami serangan reentrancy senilai 2,9 juta dolar AS, merusak kedua rantai ETH dan BSC.
Analisis Peristiwa Serangan Reentrancy pada OrionProtocol
Ringkasan Acara
Pada 2 Februari 2023, OrionProtocol mengalami serangan reentrancy di Ethereum dan Binance Smart Chain, yang mengakibatkan kerugian sekitar 2,9 juta dolar AS. Penyerang memanfaatkan celah kontrak untuk mencuri 2.844.766 USDT di jaringan Ethereum dan 191.606 BUSD di jaringan Binance Smart Chain.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom untuk mempersiapkan serangan selanjutnya.
Melakukan pinjaman melalui metode swap UNI-V2, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool untuk pertukaran token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang.
Saat menjalankan metode swapThroughOrionPool, penyerang memanfaatkan fungsi callback dalam kontrak Token kustom untuk memanggil kembali metode ExchangeWithAtomic.depositAsset, yang menyebabkan jumlah setoran dijumlahkan berkali-kali.
Terakhir, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari dompet panas suatu platform perdagangan. Dari 1.651 ETH yang diperoleh, 657,5 ETH masih tersisa di dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Analisis Kerentanan
Masalah inti terletak pada fungsi doSwapThroughOrionPool. Fungsi ini saat menjalankan _doSwapTokens, pertama melakukan operasi transfer, lalu memperbarui variabel curBalance. Penyerang memanfaatkan fungsi transfer dari Token kustom yang menambahkan callback, dan sebelum curBalance diperbarui, memanggil kembali fungsi depositAsset, yang mengakibatkan kesalahan perhitungan saldo.
Saran Pencegahan
Desain kontrak harus mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai Token dan jalur pertukaran.
Ikuti pola "Pemeriksaan-Efek-Interaksi" (Checks-Effects-Interactions) saat menulis kode kontrak, yaitu melakukan pemeriksaan kondisi terlebih dahulu, kemudian memperbarui variabel status, dan terakhir melakukan panggilan eksternal.
Menambahkan mekanisme keamanan seperti penguncian reentrancy untuk mencegah serangan reentrancy.
Melakukan audit kode dan pemindaian kerentanan secara berkala, serta segera memperbaiki potensi risiko keamanan.
Membatasi jumlah maksimum transaksi per sekali, menetapkan batasan frekuensi transaksi, dan langkah-langkah lainnya untuk mengurangi kerugian yang disebabkan oleh potensi serangan.
Dengan mengambil langkah-langkah ini, pihak proyek dapat secara signifikan meningkatkan keamanan kontrak dan mengurangi risiko mengalami serangan serupa. Memperhatikan keamanan kontrak pintar secara berkelanjutan sangat penting untuk menjaga perkembangan sehat ekosistem Web3.