Analisis Insiden Serangan Reentrancy OrionProtocol
Pada 2 Februari 2023 sore, OrionProtocol di Ethereum dan Binance Chain mengalami serangan reentrancy akibat kerentanan kontrak, yang menyebabkan kerugian sekitar 2,9 juta dolar AS. Kerugian spesifik termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di Binance Chain.
Analisis Proses Serangan
Penyerang pertama-tama membuat kontrak Token, dan melakukan operasi transfer dan otorisasi, untuk mempersiapkan serangan selanjutnya. Kemudian, penyerang meminjam melalui metode swap UNI-V2, dan memanggil metode swapThroughOrionPool dari kontrak ExchangeWithAtomic untuk pertukaran token.
Pengaturan jalur pertukaran diatur ke [USDC, Token yang dibuat oleh penyerang, USDT]. Selama proses pertukaran, karena ada fungsi callback dalam kontrak Token yang dibuat oleh penyerang, penyerang dapat terus memanggil metode depositAsset dari kontrak ExchangeWithAtomic melalui metode Transfer Token, sehingga memungkinkan serangan reentrancy yang menyebabkan jumlah setoran terus bertambah. Akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Analisis Kerentanan
Inti dari kerentanan terletak pada fungsi doSwapThroughOrionPool dalam kontrak ExchangeWithAtomic. Fungsi ini memiliki masalah berikut saat menjalankan _doSwapTokens:
Variabel curBalance hanya diperbarui setelah operasi transfer.
Tidak mengikuti pola "Pemeriksaan-Dampak-Interaksi" (Checks-Effects-Interactions).
Penyerang memanfaatkan kerentanan ini dengan menambahkan fungsi callback dalam fungsi transfer kontrak Token palsu, sehingga memanggil fungsi depositAsset saat melakukan transfer. Ini menyebabkan variabel curBalance diperbarui secara tidak benar, memungkinkan penyerang untuk menarik dana berlebih melalui fungsi withdraw setelah melunasi pinjaman kilat.
Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan. Dari total 1.651 ETH yang diperoleh, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Saran Pencegahan
Untuk menghindari serangan serupa, pihak proyek harus memperhatikan hal-hal berikut:
Dalam merancang kontrak, perlu mempertimbangkan kemungkinan situasi tak terduga yang disebabkan oleh berbagai Token dan jalur pertukaran.
Mematuhi ketat norma pengkodean "Pemeriksaan - Efek - Interaksi", memastikan untuk melakukan penilaian terlebih dahulu, kemudian memperbarui variabel status, dan akhirnya melakukan panggilan eksternal.
Untuk operasi kunci yang melibatkan transfer dana, lakukan pemeriksaan dan pembatasan keamanan yang lebih ketat.
Melakukan audit keamanan kontrak secara berkala untuk mengidentifikasi dan memperbaiki kerentanan yang mungkin ada.
Kejadian ini sekali lagi mengingatkan kita bahwa keamanan sangat penting dalam pengembangan kontrak pintar. Pihak proyek harus selalu waspada dan mengambil langkah perlindungan ganda untuk meminimalkan risiko kontrak.
Lihat Asli
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.
OrionProtocol mengalami serangan reentrancy dengan kerugian sebesar 2,9 juta USDT dan BUSD
Analisis Insiden Serangan Reentrancy OrionProtocol
Pada 2 Februari 2023 sore, OrionProtocol di Ethereum dan Binance Chain mengalami serangan reentrancy akibat kerentanan kontrak, yang menyebabkan kerugian sekitar 2,9 juta dolar AS. Kerugian spesifik termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di Binance Chain.
Analisis Proses Serangan
Penyerang pertama-tama membuat kontrak Token, dan melakukan operasi transfer dan otorisasi, untuk mempersiapkan serangan selanjutnya. Kemudian, penyerang meminjam melalui metode swap UNI-V2, dan memanggil metode swapThroughOrionPool dari kontrak ExchangeWithAtomic untuk pertukaran token.
Pengaturan jalur pertukaran diatur ke [USDC, Token yang dibuat oleh penyerang, USDT]. Selama proses pertukaran, karena ada fungsi callback dalam kontrak Token yang dibuat oleh penyerang, penyerang dapat terus memanggil metode depositAsset dari kontrak ExchangeWithAtomic melalui metode Transfer Token, sehingga memungkinkan serangan reentrancy yang menyebabkan jumlah setoran terus bertambah. Akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Analisis Kerentanan
Inti dari kerentanan terletak pada fungsi doSwapThroughOrionPool dalam kontrak ExchangeWithAtomic. Fungsi ini memiliki masalah berikut saat menjalankan _doSwapTokens:
Penyerang memanfaatkan kerentanan ini dengan menambahkan fungsi callback dalam fungsi transfer kontrak Token palsu, sehingga memanggil fungsi depositAsset saat melakukan transfer. Ini menyebabkan variabel curBalance diperbarui secara tidak benar, memungkinkan penyerang untuk menarik dana berlebih melalui fungsi withdraw setelah melunasi pinjaman kilat.
Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan. Dari total 1.651 ETH yang diperoleh, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Saran Pencegahan
Untuk menghindari serangan serupa, pihak proyek harus memperhatikan hal-hal berikut:
Kejadian ini sekali lagi mengingatkan kita bahwa keamanan sangat penting dalam pengembangan kontrak pintar. Pihak proyek harus selalu waspada dan mengambil langkah perlindungan ganda untuk meminimalkan risiko kontrak.