Analisis Insiden Serangan Reentrancy di OrionProtocol
Pada 2 Februari 2023 sore, OrionProtocol di jaringan Ethereum dan Binance mengalami serangan reentrancy akibat kerentanan kontrak, dengan kerugian sekitar 2,9 juta dolar AS, termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di BSC.
Analisis Proses Serangan
Penyerang pertama-tama membuat kontrak Token dan melakukan operasi transfer serta otorisasi, mempersiapkan serangan selanjutnya. Kemudian, penyerang meminjam melalui metode swap UNI-V2, dan memanggil metode swapThroughOrionPool dari kontrak ExchangeWithAtomic untuk menukar token. Jalur penukaran diatur menjadi [USDC, Token yang dibuat oleh penyerang, USDT].
Dalam proses penukaran, karena kontrak Token yang dibuat oleh penyerang memiliki fungsi callback, penyerang terus memanggil metode ExchangeWithAtomic.depositAsset melalui Token.Transfer, yang mengakibatkan serangan reentrancy. Hal ini menyebabkan jumlah deposit terus bertambah, dan akhirnya penyerang menyelesaikan keuntungannya melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan. Dari 1651 ETH yang diperoleh, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Masalah inti dari celah muncul dalam fungsi doSwapThroughOrionPool. Fungsi ini memperbarui variabel curBalance setelah melakukan transfer token, yang memberikan kesempatan bagi penyerang. Penyerang menambahkan fungsi callback dalam fungsi transfer dari token palsu, yang memanggil fungsi depositAsset, menyebabkan pembaruan curBalance yang salah. Akhirnya, setelah melunasi pinjaman kilat, penyerang menarik dana berlebih melalui fungsi withdraw.
Reproduksi Serangan
Peneliti menyediakan sebagian kode POC yang mensimulasikan proses serangan. Hasil pengujian menunjukkan bahwa penyerang berhasil memanfaatkan celah kontrak untuk mendapatkan USDT tambahan.
Saran Keamanan
Untuk proyek yang memiliki fungsi pertukaran token, perlu mempertimbangkan berbagai risiko keamanan yang mungkin timbul dari berbagai Token dan jalur pertukaran. Disarankan untuk mengikuti norma pengkodean "periksa terlebih dahulu, kemudian tulis ke variabel, kemudian lakukan panggilan eksternal" (model Checks-Effects-Interactions) untuk meningkatkan keamanan dan stabilitas kontrak. Selain itu, pihak proyek harus berusaha untuk menghilangkan risiko kontrak secara off-chain sebanyak mungkin untuk memastikan operasi yang aman dari ekosistem Web3.
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.
21 Suka
Hadiah
21
3
Bagikan
Komentar
0/400
VirtualRichDream
· 07-15 08:57
Eh, siapa yang pergi mengecek apakah ini ulah pengkhianat.
Lihat AsliBalas0
HallucinationGrower
· 07-12 12:30
Apa saja yang telah dilakukan tanpa pekerjaan pemeriksaan keamanan?
OrionProtocol mengalami serangan reentrancy dengan kerugian 2,9 juta dolar AS. Analisis celah keamanan dan saran pencegahan.
Analisis Insiden Serangan Reentrancy di OrionProtocol
Pada 2 Februari 2023 sore, OrionProtocol di jaringan Ethereum dan Binance mengalami serangan reentrancy akibat kerentanan kontrak, dengan kerugian sekitar 2,9 juta dolar AS, termasuk 2.844.766 USDT di Ethereum dan 191.606 BUSD di BSC.
Analisis Proses Serangan
Penyerang pertama-tama membuat kontrak Token dan melakukan operasi transfer serta otorisasi, mempersiapkan serangan selanjutnya. Kemudian, penyerang meminjam melalui metode swap UNI-V2, dan memanggil metode swapThroughOrionPool dari kontrak ExchangeWithAtomic untuk menukar token. Jalur penukaran diatur menjadi [USDC, Token yang dibuat oleh penyerang, USDT].
Dalam proses penukaran, karena kontrak Token yang dibuat oleh penyerang memiliki fungsi callback, penyerang terus memanggil metode ExchangeWithAtomic.depositAsset melalui Token.Transfer, yang mengakibatkan serangan reentrancy. Hal ini menyebabkan jumlah deposit terus bertambah, dan akhirnya penyerang menyelesaikan keuntungannya melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan. Dari 1651 ETH yang diperoleh, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Masalah inti dari celah muncul dalam fungsi doSwapThroughOrionPool. Fungsi ini memperbarui variabel curBalance setelah melakukan transfer token, yang memberikan kesempatan bagi penyerang. Penyerang menambahkan fungsi callback dalam fungsi transfer dari token palsu, yang memanggil fungsi depositAsset, menyebabkan pembaruan curBalance yang salah. Akhirnya, setelah melunasi pinjaman kilat, penyerang menarik dana berlebih melalui fungsi withdraw.
Reproduksi Serangan
Peneliti menyediakan sebagian kode POC yang mensimulasikan proses serangan. Hasil pengujian menunjukkan bahwa penyerang berhasil memanfaatkan celah kontrak untuk mendapatkan USDT tambahan.
Saran Keamanan
Untuk proyek yang memiliki fungsi pertukaran token, perlu mempertimbangkan berbagai risiko keamanan yang mungkin timbul dari berbagai Token dan jalur pertukaran. Disarankan untuk mengikuti norma pengkodean "periksa terlebih dahulu, kemudian tulis ke variabel, kemudian lakukan panggilan eksternal" (model Checks-Effects-Interactions) untuk meningkatkan keamanan dan stabilitas kontrak. Selain itu, pihak proyek harus berusaha untuk menghilangkan risiko kontrak secara off-chain sebanyak mungkin untuk memastikan operasi yang aman dari ekosistem Web3.