Analisis Insiden Serangan Re-Entrant pada OrionProtocol
Pada tanggal 2 Februari 2023 pukul 15:40, Orion Protocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat kerentanan kontrak, dengan total kerugian sekitar 2,9 juta dolar AS, di mana kerugian di jaringan Ethereum mencapai 2.844.766 USDT, dan kerugian di jaringan Binance Smart Chain mencapai 191.606 BUSD.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom, dan melakukan operasi transfer dan otorisasi yang relevan, untuk mempersiapkan serangan selanjutnya. Kemudian, penyerang melakukan peminjaman melalui metode swap UNI-V2, dan memanggil metode swapThroughOrionPool dari kontrak ExchangeWithAtomic untuk pertukaran token. Jalur pertukaran diatur menjadi [USDC, Token penyerang, USDT].
Selama proses pertukaran, karena kontrak Token penyerang mengandung fungsi callback, menyebabkan pemanggilan kembali metode ExchangeWithAtomic.depositAsset selama proses Token.Transfer, yang mengakibatkan serangan reentrant. Ini menyebabkan jumlah setoran terakumulasi, dan akhirnya penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan besar. Dari 1.651 ETH yang diperoleh dari serangan, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Inti dari celah terletak pada fungsi doSwapThroughOrionPool dalam kontrak ExchangeWithAtomic dan fungsi _doSwapTokens yang dipanggilnya. Fungsi-fungsi ini hanya memperbarui variabel curBalance setelah melaksanakan transfer Token, memberikan kesempatan kepada penyerang untuk memanfaatkan serangan reentrancy.
Penyerang menambahkan logika callback dalam fungsi transfer Token kustom, sehingga fungsi depositAsset dipanggil lagi selama proses transfer. Ini menyebabkan pembaruan variabel curBalance yang salah, memungkinkan penyerang untuk menarik dana berlebih melalui fungsi withdraw setelah melunasi pinjaman kilat.
Saran Keamanan
Untuk proyek yang memiliki fungsi pertukaran token, perlu mempertimbangkan hal-hal berikut:
Pertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai Token dan jalur pertukaran.
Ikuti pola pengkodean "Cek-Dampak-Interaksi" (Checks-Effects-Interactions), yaitu melakukan pemeriksaan status terlebih dahulu, kemudian memperbarui status kontrak, dan terakhir berinteraksi dengan kontrak eksternal.
Gunakan kunci reentrancy atau mekanisme serupa saat melakukan operasi penting untuk mencegah serangan reentrancy.
Lakukan pemeriksaan dan penanganan yang ketat terhadap nilai kembali dari pemanggilan eksternal.
Melakukan audit kode dan pengujian keamanan secara berkala, serta segera memperbaiki kerentanan yang ditemukan.
Dengan mengambil langkah-langkah ini, proyek dapat secara signifikan mengurangi risiko mengalami serangan serupa, serta meningkatkan keamanan dan stabilitas kontrak.
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 dan mengalami kerugian hampir 2,9 juta dolar AS
Analisis Insiden Serangan Re-Entrant pada OrionProtocol
Pada tanggal 2 Februari 2023 pukul 15:40, Orion Protocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat kerentanan kontrak, dengan total kerugian sekitar 2,9 juta dolar AS, di mana kerugian di jaringan Ethereum mencapai 2.844.766 USDT, dan kerugian di jaringan Binance Smart Chain mencapai 191.606 BUSD.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token kustom, dan melakukan operasi transfer dan otorisasi yang relevan, untuk mempersiapkan serangan selanjutnya. Kemudian, penyerang melakukan peminjaman melalui metode swap UNI-V2, dan memanggil metode swapThroughOrionPool dari kontrak ExchangeWithAtomic untuk pertukaran token. Jalur pertukaran diatur menjadi [USDC, Token penyerang, USDT].
Selama proses pertukaran, karena kontrak Token penyerang mengandung fungsi callback, menyebabkan pemanggilan kembali metode ExchangeWithAtomic.depositAsset selama proses Token.Transfer, yang mengakibatkan serangan reentrant. Ini menyebabkan jumlah setoran terakumulasi, dan akhirnya penyerang menyelesaikan keuntungan melalui operasi penarikan.
Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan besar. Dari 1.651 ETH yang diperoleh dari serangan, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Inti dari celah terletak pada fungsi doSwapThroughOrionPool dalam kontrak ExchangeWithAtomic dan fungsi _doSwapTokens yang dipanggilnya. Fungsi-fungsi ini hanya memperbarui variabel curBalance setelah melaksanakan transfer Token, memberikan kesempatan kepada penyerang untuk memanfaatkan serangan reentrancy.
Penyerang menambahkan logika callback dalam fungsi transfer Token kustom, sehingga fungsi depositAsset dipanggil lagi selama proses transfer. Ini menyebabkan pembaruan variabel curBalance yang salah, memungkinkan penyerang untuk menarik dana berlebih melalui fungsi withdraw setelah melunasi pinjaman kilat.
Saran Keamanan
Untuk proyek yang memiliki fungsi pertukaran token, perlu mempertimbangkan hal-hal berikut:
Dengan mengambil langkah-langkah ini, proyek dapat secara signifikan mengurangi risiko mengalami serangan serupa, serta meningkatkan keamanan dan stabilitas kontrak.