Analisis Insiden Serangan Reentrancy OrionProtocol
Pada 2 Februari 2023 pukul 15:40:20 (waktu UTC), OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat celah kontrak. Penyerang berhasil mencuri sekitar 2,9 juta dolar AS, termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di Binance Smart Chain.
Analisis Proses Serangan
Penyerang pertama-tama menerapkan kontrak Token kustom dan melakukan operasi transfer dan otorisasi yang relevan, mempersiapkan untuk serangan selanjutnya. Kemudian, penyerang melakukan pinjaman melalui fungsi swap Uniswap V2 dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool dari OrionProtocol untuk menukar token.
Pengaturan jalur pertukaran diatur ke [USDC, Token Penyerang, USDT], di mana Token Penyerang adalah kunci. Selama proses pertukaran, karena kontrak Token kustom ini memiliki fitur panggilan balik, penyerang dapat memicu metode ExchangeWithAtomic.depositAsset saat transfer Token terjadi, yang memungkinkan terjadinya serangan reentrancy. Ini menyebabkan jumlah deposit terakumulasi secara salah, dan akhirnya penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari dompet panas di suatu platform perdagangan. Dari 1.651 ETH yang diperoleh dalam serangan, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Inti dari kerentanan terletak pada kontrak ExchangeWithAtomic di fungsi doSwapThroughOrionPool dan _doSwapTokens. Fungsi-fungsi ini hanya memperbarui variabel curBalance setelah melakukan transfer token, yang menciptakan kondisi untuk serangan reentrancy. Penyerang berhasil memicu fungsi depositAsset dengan menambahkan logika callback di fungsi transfer Token kustom, yang menyebabkan curBalance diperbarui secara salah. Pada akhirnya, setelah membayar pinjaman kilat, penyerang menarik dana berlebih melalui fungsi withdraw.
Saran Pencegahan
Ikuti pola "Cek-Dampak-Interaksi" (Checks-Effects-Interactions): Perbarui status kontrak sebelum melakukan panggilan eksternal.
Menggunakan kunci reentrancy: Kunci sebelum memulai operasi sensitif, dan buka kunci setelah selesai, untuk mencegah reentrancy.
Pertimbangkan berbagai token dan jalur pertukaran: Saat merancang fungsi pertukaran, perlu mempertimbangkan berbagai kemungkinan situasi dan kondisi batas.
Batas jumlah transaksi tunggal: Tetapkan batas transaksi yang wajar untuk mengurangi potensi kerugian.
Lakukan audit keamanan secara berkala: Sewa tim keamanan profesional untuk melakukan audit menyeluruh terhadap kontrak, dan segera temukan serta perbaiki potensi celah.
Menerapkan mekanisme tanda tangan ganda: Operasi kunci memerlukan konfirmasi dari banyak pihak, meningkatkan kesulitan serangan.
Optimalkan logika kode: pastikan untuk melakukan panggilan eksternal hanya setelah memperbarui variabel status kunci.
Meningkatkan mekanisme respons darurat: Menyusun rencana darurat yang komprehensif, agar dapat merespons dengan cepat saat terjadi serangan, meminimalkan kerugian.
Peristiwa ini sekali lagi menekankan pentingnya keamanan kontrak pintar. Pihak proyek perlu tetap waspada selama proses pengembangan, mengambil langkah-langkah keamanan yang komprehensif untuk melindungi aset pengguna dan reputasi proyek. Sementara itu, ini juga mengingatkan investor untuk memilih proyek dengan hati-hati, memperhatikan keamanan dan kekuatan teknis 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.
6 Suka
Hadiah
6
5
Bagikan
Komentar
0/400
ZenMiner
· 23jam yang lalu
Keamanan kontrak masih harus dilihat dari audit.
Lihat AsliBalas0
DAOplomacy
· 23jam yang lalu
kegagalan tata kelola sub-optimal lainnya smh...
Lihat AsliBalas0
GweiTooHigh
· 23jam yang lalu
又一个Dianggap Bodoh的
Lihat AsliBalas0
DeFiAlchemist
· 23jam yang lalu
*mengatur kacamata etereal* jiwa lain turun ke seni gelap reentry... batasan mistis protokol terlalu lemah
OrionProtocol mengalami serangan reentrancy, dana sebesar 2,9 juta dolar AS dicuri.
Analisis Insiden Serangan Reentrancy OrionProtocol
Pada 2 Februari 2023 pukul 15:40:20 (waktu UTC), OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat celah kontrak. Penyerang berhasil mencuri sekitar 2,9 juta dolar AS, termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di Binance Smart Chain.
Analisis Proses Serangan
Penyerang pertama-tama menerapkan kontrak Token kustom dan melakukan operasi transfer dan otorisasi yang relevan, mempersiapkan untuk serangan selanjutnya. Kemudian, penyerang melakukan pinjaman melalui fungsi swap Uniswap V2 dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool dari OrionProtocol untuk menukar token.
Pengaturan jalur pertukaran diatur ke [USDC, Token Penyerang, USDT], di mana Token Penyerang adalah kunci. Selama proses pertukaran, karena kontrak Token kustom ini memiliki fitur panggilan balik, penyerang dapat memicu metode ExchangeWithAtomic.depositAsset saat transfer Token terjadi, yang memungkinkan terjadinya serangan reentrancy. Ini menyebabkan jumlah deposit terakumulasi secara salah, dan akhirnya penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari dompet panas di suatu platform perdagangan. Dari 1.651 ETH yang diperoleh dalam serangan, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Inti dari kerentanan terletak pada kontrak ExchangeWithAtomic di fungsi doSwapThroughOrionPool dan _doSwapTokens. Fungsi-fungsi ini hanya memperbarui variabel curBalance setelah melakukan transfer token, yang menciptakan kondisi untuk serangan reentrancy. Penyerang berhasil memicu fungsi depositAsset dengan menambahkan logika callback di fungsi transfer Token kustom, yang menyebabkan curBalance diperbarui secara salah. Pada akhirnya, setelah membayar pinjaman kilat, penyerang menarik dana berlebih melalui fungsi withdraw.
Saran Pencegahan
Ikuti pola "Cek-Dampak-Interaksi" (Checks-Effects-Interactions): Perbarui status kontrak sebelum melakukan panggilan eksternal.
Menggunakan kunci reentrancy: Kunci sebelum memulai operasi sensitif, dan buka kunci setelah selesai, untuk mencegah reentrancy.
Pertimbangkan berbagai token dan jalur pertukaran: Saat merancang fungsi pertukaran, perlu mempertimbangkan berbagai kemungkinan situasi dan kondisi batas.
Batas jumlah transaksi tunggal: Tetapkan batas transaksi yang wajar untuk mengurangi potensi kerugian.
Lakukan audit keamanan secara berkala: Sewa tim keamanan profesional untuk melakukan audit menyeluruh terhadap kontrak, dan segera temukan serta perbaiki potensi celah.
Menerapkan mekanisme tanda tangan ganda: Operasi kunci memerlukan konfirmasi dari banyak pihak, meningkatkan kesulitan serangan.
Optimalkan logika kode: pastikan untuk melakukan panggilan eksternal hanya setelah memperbarui variabel status kunci.
Meningkatkan mekanisme respons darurat: Menyusun rencana darurat yang komprehensif, agar dapat merespons dengan cepat saat terjadi serangan, meminimalkan kerugian.
Peristiwa ini sekali lagi menekankan pentingnya keamanan kontrak pintar. Pihak proyek perlu tetap waspada selama proses pengembangan, mengambil langkah-langkah keamanan yang komprehensif untuk melindungi aset pengguna dan reputasi proyek. Sementara itu, ini juga mengingatkan investor untuk memilih proyek dengan hati-hati, memperhatikan keamanan dan kekuatan teknis proyek.