Analisis Peristiwa Serangan Reentrancy OrionProtocol
Pada 2 Februari 2023 sore, proyek OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat celah kontrak, dengan total kerugian 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 menyebarkan kontrak Token khusus dan melakukan serangkaian persiapan. Selanjutnya, penyerang meminjam dana melalui fungsi swap di suatu DEX, dan memanggil metode OrionProtocol's ExchangeWithAtomic.swapThroughOrionPool untuk menukar token. Jalur penukaran mencakup alamat kontrak Token yang dibuat oleh penyerang, yang mempersiapkan untuk serangan callback selanjutnya.
Dalam proses penukaran, karena kontrak Token penyerang mengandung logika callback, menyebabkan pemanggilan ulang metode ExchangeWithAtomic.depositAsset saat operasi transfer. Serangan reentrancy ini menyebabkan jumlah setoran terus bertambah, dan akhirnya penyerang memperoleh dana yang melebihi batas normal melalui operasi penarikan.
Aliran Dana
Sumber dana awal penyerang berasal dari dompet panas suatu platform perdagangan. Dari 1.651 ETH yang didapatkan dari serangan, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui alat pencampuran.
Analisis Kerentanan
Masalah inti dari serangan terletak pada fungsi doSwapThroughOrionPool pada kontrak ExchangeWithAtomic. Fungsi ini tidak menangani situasi reentrancy dengan benar saat memproses pertukaran token. Secara spesifik, dalam fungsi _doSwapTokens, variabel curBalance hanya diperbarui setelah operasi transfer token, yang memberikan kesempatan bagi penyerang.
Penyerang menambahkan logika callback di fungsi transfer Token kustom, yang memicu pemanggilan fungsi depositAsset setiap kali transfer dilakukan, menyebabkan variabel curBalance diperbarui secara tidak benar. Akhirnya, setelah mengembalikan pinjaman kilat, penyerang menarik dana berlebih melalui fungsi withdraw.
Reproduksi Kerentanan
Peneliti telah menyediakan sebagian kode POC yang menunjukkan bagaimana memanfaatkan kerentanan ini untuk melakukan serangan. Kode ini terutama mensimulasikan prosedur operasi penyerang, termasuk membuat Token palsu, mengatur kolam likuiditas, melakukan pinjaman kilat, dan langkah-langkah serangan re-entry.
Saran Keamanan
Untuk menghindari serangan serupa, pihak proyek harus memperhatikan hal-hal berikut saat merancang kontrak:
Dalam mengimplementasikan fungsi pertukaran token, perlu mempertimbangkan potensi risiko yang mungkin ditimbulkan oleh berbagai jenis Token dan jalur pertukaran.
Ikuti pola "Pemeriksaan-Efek-Interaksi" (Checks-Effects-Interactions) saat menulis kode kontrak, yaitu pertama melakukan pemeriksaan kondisi, kemudian memperbarui variabel status, dan terakhir melakukan panggilan eksternal.
Gunakan kunci reentrancy atau mekanisme pencegahan reentrancy lainnya untuk melindungi fungsi kunci.
Melakukan audit keamanan secara berkala untuk mendeteksi dan memperbaiki potensi kerentanan dengan cepat.
Pertimbangkan untuk memperkenalkan batasan jumlah transaksi atau batasan frekuensi transaksi untuk mengurangi dampak potensi serangan.
Dengan mengambil langkah-langkah ini, proyek dapat secara signifikan meningkatkan keamanan kontrak dan mengurangi risiko serangan. Dalam ekosistem Web3, keamanan harus selalu menjadi pertimbangan utama.
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.
10 Suka
Hadiah
10
4
Bagikan
Komentar
0/400
SleepTrader
· 8jam yang lalu
又一个合约pemula挨揍了
Lihat AsliBalas0
StablecoinEnjoyer
· 8jam yang lalu
Lagi-lagi pergi, tidak belajar dari pengalaman ya.
Lihat AsliBalas0
GetRichLeek
· 8jam yang lalu
Hari-hari dicomot kupon klip kontrak hahaha
Lihat AsliBalas0
MemeEchoer
· 8jam yang lalu
Kembali berbaring ya, sepertinya smart contract memang harus ditulis dengan serius.
OrionProtocol mengalami serangan reentrancy yang mengakibatkan kerugian aset sebesar 2,9 juta dolar AS
Analisis Peristiwa Serangan Reentrancy OrionProtocol
Pada 2 Februari 2023 sore, proyek OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat celah kontrak, dengan total kerugian 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 menyebarkan kontrak Token khusus dan melakukan serangkaian persiapan. Selanjutnya, penyerang meminjam dana melalui fungsi swap di suatu DEX, dan memanggil metode OrionProtocol's ExchangeWithAtomic.swapThroughOrionPool untuk menukar token. Jalur penukaran mencakup alamat kontrak Token yang dibuat oleh penyerang, yang mempersiapkan untuk serangan callback selanjutnya.
Dalam proses penukaran, karena kontrak Token penyerang mengandung logika callback, menyebabkan pemanggilan ulang metode ExchangeWithAtomic.depositAsset saat operasi transfer. Serangan reentrancy ini menyebabkan jumlah setoran terus bertambah, dan akhirnya penyerang memperoleh dana yang melebihi batas normal melalui operasi penarikan.
Aliran Dana
Sumber dana awal penyerang berasal dari dompet panas suatu platform perdagangan. Dari 1.651 ETH yang didapatkan dari serangan, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui alat pencampuran.
Analisis Kerentanan
Masalah inti dari serangan terletak pada fungsi doSwapThroughOrionPool pada kontrak ExchangeWithAtomic. Fungsi ini tidak menangani situasi reentrancy dengan benar saat memproses pertukaran token. Secara spesifik, dalam fungsi _doSwapTokens, variabel curBalance hanya diperbarui setelah operasi transfer token, yang memberikan kesempatan bagi penyerang.
Penyerang menambahkan logika callback di fungsi transfer Token kustom, yang memicu pemanggilan fungsi depositAsset setiap kali transfer dilakukan, menyebabkan variabel curBalance diperbarui secara tidak benar. Akhirnya, setelah mengembalikan pinjaman kilat, penyerang menarik dana berlebih melalui fungsi withdraw.
Reproduksi Kerentanan
Peneliti telah menyediakan sebagian kode POC yang menunjukkan bagaimana memanfaatkan kerentanan ini untuk melakukan serangan. Kode ini terutama mensimulasikan prosedur operasi penyerang, termasuk membuat Token palsu, mengatur kolam likuiditas, melakukan pinjaman kilat, dan langkah-langkah serangan re-entry.
Saran Keamanan
Untuk menghindari serangan serupa, pihak proyek harus memperhatikan hal-hal berikut saat merancang kontrak:
Dalam mengimplementasikan fungsi pertukaran token, perlu mempertimbangkan potensi risiko yang mungkin ditimbulkan oleh berbagai jenis Token dan jalur pertukaran.
Ikuti pola "Pemeriksaan-Efek-Interaksi" (Checks-Effects-Interactions) saat menulis kode kontrak, yaitu pertama melakukan pemeriksaan kondisi, kemudian memperbarui variabel status, dan terakhir melakukan panggilan eksternal.
Gunakan kunci reentrancy atau mekanisme pencegahan reentrancy lainnya untuk melindungi fungsi kunci.
Melakukan audit keamanan secara berkala untuk mendeteksi dan memperbaiki potensi kerentanan dengan cepat.
Pertimbangkan untuk memperkenalkan batasan jumlah transaksi atau batasan frekuensi transaksi untuk mengurangi dampak potensi serangan.
Dengan mengambil langkah-langkah ini, proyek dapat secara signifikan meningkatkan keamanan kontrak dan mengurangi risiko serangan. Dalam ekosistem Web3, keamanan harus selalu menjadi pertimbangan utama.