Analisis Insiden Serangan Reentrancy pada OrionProtocol
Pada 2 Februari 2023 sore, proyek OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat celah kontrak. Penyerang memperoleh keuntungan sekitar 2,9 juta dolar AS, yang termasuk 2.844.766 USDT di rantai Ethereum dan 191.606 BUSD di rantai Binance Smart.
Analisis Proses Serangan
Penyerang pertama-tama mengdeploy kontrak Token kustom, dan melakukan serangkaian operasi transfer dan otorisasi untuk mempersiapkan serangan berikutnya. Kemudian, penyerang meminjam melalui fungsi swap dari DEX tertentu, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool dari OrionProtocol untuk menukar token. Jalur pertukaran diatur ke [USDC, Token Penyerang, USDT].
Saat menjalankan metode swapThroughOrionPool, serangan terjadi karena kontrak Token penyerang memiliki fungsi callback, yang menyebabkan terjadinya serangan reentrancy selama proses transfer. Penyerang memanfaatkan metode Token.Transfer untuk terus-menerus memanggil fungsi ExchangeWithAtomic.depositAsset, sehingga jumlah setoran terus bertambah. Akhirnya, penyerang berhasil mendapatkan keuntungan melalui operasi penarikan.
Arah Aliran Dana
Menurut data on-chain, dana awal penyerang berasal dari dompet panas suatu platform perdagangan. Dari 1.651 ETH yang diperoleh, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Inti dari kerentanan ini terletak pada fungsi doSwapThroughOrionPool dari kontrak ExchangeWithAtomic. Fungsi ini memiliki cacat logika saat menjalankan operasi _doSwapTokens. Secara spesifik, kode ini memperbarui variabel curBalance hanya setelah melakukan transfer, yang menciptakan kondisi untuk serangan reentrancy.
Penyerang menambahkan logika callback dalam fungsi transfer Token kustom, secara berulang memanggil fungsi depositAsset, yang menyebabkan pembaruan curBalance menjadi salah. Akhirnya, setelah membayar kembali pinjaman kilat, penyerang memanggil fungsi withdraw untuk menarik dana yang berlebihan.
Saran Pencegahan
Untuk menghindari serangan serupa, pihak proyek harus memperhatikan hal-hal berikut:
Dalam mengimplementasikan fungsi pertukaran token, perlu mempertimbangkan secara menyeluruh berbagai jenis Token dan risiko keamanan yang mungkin ditimbulkan oleh jalur pertukaran.
Mengikuti secara ketat pola pengkodean "Checks-Effects-Interactions"(, yaitu melakukan pemeriksaan kondisi terlebih dahulu, kemudian memperbarui variabel status, dan akhirnya melakukan panggilan eksternal.
Meningkatkan kontrol keamanan terhadap panggilan eksternal, terutama saat menangani Token yang ditentukan pengguna.
Secara berkala melakukan audit kode dan pengujian keamanan, untuk segera menemukan dan memperbaiki potensi celah.
Gunakan pustaka keamanan yang matang dan praktik terbaik, seperti SafeERC20 dari OpenZeppelin.
Dengan mengambil langkah-langkah ini, risiko serangan terhadap kontrak pintar dapat secara signifikan dikurangi, meningkatkan keamanan 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.
10 Suka
Hadiah
10
6
Posting ulang
Bagikan
Komentar
0/400
ser_ngmi
· 9jam yang lalu
Sudah tidak ada uang lagi.
Lihat AsliBalas0
PretendingToReadDocs
· 9jam yang lalu
Setiap hari ada masalah, ngapain lagi?
Lihat AsliBalas0
LiquidityWizard
· 9jam yang lalu
Rug Pull sudah dijadwalkan~
Lihat AsliBalas0
degenonymous
· 9jam yang lalu
suckers lagi dipermainkan
Lihat AsliBalas0
CountdownToBroke
· 10jam yang lalu
Satu lagi yang gagal.
Lihat AsliBalas0
BoredApeResistance
· 10jam yang lalu
Sekali lagi ada celah kontrak, sudah terlalu banyak.
OrionProtocol mengalami serangan reentrancy dengan kerugian sekitar 2,9 juta dolar AS
Analisis Insiden Serangan Reentrancy pada OrionProtocol
Pada 2 Februari 2023 sore, proyek OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat celah kontrak. Penyerang memperoleh keuntungan sekitar 2,9 juta dolar AS, yang termasuk 2.844.766 USDT di rantai Ethereum dan 191.606 BUSD di rantai Binance Smart.
Analisis Proses Serangan
Penyerang pertama-tama mengdeploy kontrak Token kustom, dan melakukan serangkaian operasi transfer dan otorisasi untuk mempersiapkan serangan berikutnya. Kemudian, penyerang meminjam melalui fungsi swap dari DEX tertentu, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool dari OrionProtocol untuk menukar token. Jalur pertukaran diatur ke [USDC, Token Penyerang, USDT].
Saat menjalankan metode swapThroughOrionPool, serangan terjadi karena kontrak Token penyerang memiliki fungsi callback, yang menyebabkan terjadinya serangan reentrancy selama proses transfer. Penyerang memanfaatkan metode Token.Transfer untuk terus-menerus memanggil fungsi ExchangeWithAtomic.depositAsset, sehingga jumlah setoran terus bertambah. Akhirnya, penyerang berhasil mendapatkan keuntungan melalui operasi penarikan.
Arah Aliran Dana
Menurut data on-chain, dana awal penyerang berasal dari dompet panas suatu platform perdagangan. Dari 1.651 ETH yang diperoleh, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Inti dari kerentanan ini terletak pada fungsi doSwapThroughOrionPool dari kontrak ExchangeWithAtomic. Fungsi ini memiliki cacat logika saat menjalankan operasi _doSwapTokens. Secara spesifik, kode ini memperbarui variabel curBalance hanya setelah melakukan transfer, yang menciptakan kondisi untuk serangan reentrancy.
Penyerang menambahkan logika callback dalam fungsi transfer Token kustom, secara berulang memanggil fungsi depositAsset, yang menyebabkan pembaruan curBalance menjadi salah. Akhirnya, setelah membayar kembali pinjaman kilat, penyerang memanggil fungsi withdraw untuk menarik dana yang berlebihan.
Saran Pencegahan
Untuk menghindari serangan serupa, pihak proyek harus memperhatikan hal-hal berikut:
Dalam mengimplementasikan fungsi pertukaran token, perlu mempertimbangkan secara menyeluruh berbagai jenis Token dan risiko keamanan yang mungkin ditimbulkan oleh jalur pertukaran.
Mengikuti secara ketat pola pengkodean "Checks-Effects-Interactions"(, yaitu melakukan pemeriksaan kondisi terlebih dahulu, kemudian memperbarui variabel status, dan akhirnya melakukan panggilan eksternal.
Meningkatkan kontrol keamanan terhadap panggilan eksternal, terutama saat menangani Token yang ditentukan pengguna.
Secara berkala melakukan audit kode dan pengujian keamanan, untuk segera menemukan dan memperbaiki potensi celah.
Gunakan pustaka keamanan yang matang dan praktik terbaik, seperti SafeERC20 dari OpenZeppelin.
Dengan mengambil langkah-langkah ini, risiko serangan terhadap kontrak pintar dapat secara signifikan dikurangi, meningkatkan keamanan keseluruhan proyek.