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.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
16 Suka
Hadiah
16
2
Bagikan
Komentar
0/400
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.