Analisis Insiden Serangan Re-Entrancy pada OrionProtocol
Pada 2 Februari 2023 sore, OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat kerentanan kontrak, dengan total kerugian sekitar 2,9 juta dolar AS, yang mencakup 2.844.766 USDT di Ethereum dan 191.606 BUSD di Binance Smart Chain.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom, dan melakukan operasi transfer dan otorisasi terkait, untuk mempersiapkan serangan selanjutnya. Kemudian, penyerang melakukan peminjaman melalui fungsi swap Uniswap V2, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool dari OrionProtocol untuk menukarkan token.
Pengaturan jalur pertukaran diatur menjadi [USDC, Token Penyerang, USDT], di mana Token Penyerang digunakan untuk menjalankan operasi callback. Selama proses pertukaran, karena kontrak Token Penyerang mengandung logika callback, saat metode ExchangeWithAtomic.swapThroughOrionPool dieksekusi, callback ke fungsi ExchangeWithAtomic.depositAsset dilakukan melalui Token.Transfer, sehingga memungkinkan serangan reentrancy. Ini menyebabkan jumlah setoran terakumulasi secara berulang, dan akhirnya penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Sumber dana awal penyerang berasal dari dompet panas di suatu platform perdagangan besar. Dari 1.651 ETH yang diperoleh dari serangan, 657,5 ETH masih berada di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Masalah inti dari kerentanan muncul dalam fungsi doSwapThroughOrionPool. Fungsi ini memanggil fungsi _doSwapTokens, yang memperbarui variabel curBalance setelah melakukan operasi transfer. Penyerang memanfaatkan logika callback yang ditambahkan dalam fungsi transfer dari Token kustom, yang memanggil kembali fungsi depositAsset selama proses transfer, menyebabkan variabel curBalance diperbarui secara tidak benar. Ini memungkinkan penyerang untuk menarik dana tambahan melalui fungsi withdraw setelah melunasi pinjaman kilat.
Saran Keamanan
Untuk mencegah serangan serupa, pihak proyek harus memperhatikan hal-hal berikut:
Dalam mengimplementasikan fungsi pertukaran token, perlu mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai jenis token dan jalur pertukaran.
Ikuti dengan ketat pola pengkodean "Pemeriksaan-Dampak-Interaksi" (Checks-Effects-Interactions), yaitu lakukan pemeriksaan status terlebih dahulu, kemudian perbarui status kontrak, dan akhirnya berinteraksi dengan kontrak eksternal.
Mewujudkan mekanisme keamanan seperti kunci reentrancy untuk mencegah terjadinya serangan reentrancy.
Untuk fungsi kunci yang melibatkan operasi dana, harus dilakukan audit keamanan dan pengujian yang menyeluruh.
Pertimbangkan untuk memperkenalkan penarikan tertunda atau langkah keamanan tambahan seperti tanda tangan ganda untuk meningkatkan kesulitan serangan.
Dengan mengambil langkah-langkah ini, risiko serangan terhadap kontrak pintar dapat secara signifikan dikurangi, meningkatkan keselamatan keseluruhan proyek. Dalam ekosistem Web3, keamanan harus selalu menjadi faktor utama yang dipertimbangkan.
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
5
Bagikan
Komentar
0/400
EntryPositionAnalyst
· 14jam yang lalu
Ada tim yang ceroboh lagi, belajar dari kerugian.
Lihat AsliBalas0
BearMarketSurvivor
· 14jam yang lalu
Medan utama kembali diserang, kerugian tempur 290w
Lihat AsliBalas0
PaperHandSister
· 14jam yang lalu
Rekt Kenapa terus mengawasi celah kontrak?
Lihat AsliBalas0
NeverVoteOnDAO
· 14jam yang lalu
Ini adalah celah kontrak lagi, tidak ada habisnya.
OrionProtocol mengalami serangan reentrancy dan kehilangan aset senilai 2,9 juta dolar.
Analisis Insiden Serangan Re-Entrancy pada OrionProtocol
Pada 2 Februari 2023 sore, OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat kerentanan kontrak, dengan total kerugian sekitar 2,9 juta dolar AS, yang mencakup 2.844.766 USDT di Ethereum dan 191.606 BUSD di Binance Smart Chain.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom, dan melakukan operasi transfer dan otorisasi terkait, untuk mempersiapkan serangan selanjutnya. Kemudian, penyerang melakukan peminjaman melalui fungsi swap Uniswap V2, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool dari OrionProtocol untuk menukarkan token.
Pengaturan jalur pertukaran diatur menjadi [USDC, Token Penyerang, USDT], di mana Token Penyerang digunakan untuk menjalankan operasi callback. Selama proses pertukaran, karena kontrak Token Penyerang mengandung logika callback, saat metode ExchangeWithAtomic.swapThroughOrionPool dieksekusi, callback ke fungsi ExchangeWithAtomic.depositAsset dilakukan melalui Token.Transfer, sehingga memungkinkan serangan reentrancy. Ini menyebabkan jumlah setoran terakumulasi secara berulang, dan akhirnya penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Sumber dana awal penyerang berasal dari dompet panas di suatu platform perdagangan besar. Dari 1.651 ETH yang diperoleh dari serangan, 657,5 ETH masih berada di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Masalah inti dari kerentanan muncul dalam fungsi doSwapThroughOrionPool. Fungsi ini memanggil fungsi _doSwapTokens, yang memperbarui variabel curBalance setelah melakukan operasi transfer. Penyerang memanfaatkan logika callback yang ditambahkan dalam fungsi transfer dari Token kustom, yang memanggil kembali fungsi depositAsset selama proses transfer, menyebabkan variabel curBalance diperbarui secara tidak benar. Ini memungkinkan penyerang untuk menarik dana tambahan melalui fungsi withdraw setelah melunasi pinjaman kilat.
Saran Keamanan
Untuk mencegah serangan serupa, pihak proyek harus memperhatikan hal-hal berikut:
Dalam mengimplementasikan fungsi pertukaran token, perlu mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai jenis token dan jalur pertukaran.
Ikuti dengan ketat pola pengkodean "Pemeriksaan-Dampak-Interaksi" (Checks-Effects-Interactions), yaitu lakukan pemeriksaan status terlebih dahulu, kemudian perbarui status kontrak, dan akhirnya berinteraksi dengan kontrak eksternal.
Mewujudkan mekanisme keamanan seperti kunci reentrancy untuk mencegah terjadinya serangan reentrancy.
Untuk fungsi kunci yang melibatkan operasi dana, harus dilakukan audit keamanan dan pengujian yang menyeluruh.
Pertimbangkan untuk memperkenalkan penarikan tertunda atau langkah keamanan tambahan seperti tanda tangan ganda untuk meningkatkan kesulitan serangan.
Dengan mengambil langkah-langkah ini, risiko serangan terhadap kontrak pintar dapat secara signifikan dikurangi, meningkatkan keselamatan keseluruhan proyek. Dalam ekosistem Web3, keamanan harus selalu menjadi faktor utama yang dipertimbangkan.