Analisis Insiden Serangan Re-entrancy pada OrionProtocol
Pada tanggal 2 Februari 2023 pukul 15:40:20 UTC, OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat kerentanan kontrak. Penyerang memperoleh keuntungan sebesar 2.844.766 USDT dari jaringan Ethereum dan 191.606 BUSD dari Binance Smart Chain, dengan total kerugian sekitar 2,9 juta dolar AS.
Analisis Proses Serangan
Penyerang pertama-tama menerapkan kontrak Token kustom dan melakukan serangkaian persiapan. Selanjutnya, penyerang meminjam dana melalui fungsi swap dari DEX tertentu, dan memanggil metode OrionProtocol's ExchangeWithAtomic.swapThroughOrionPool untuk menukar token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang, yang menanamkan benih untuk serangan callback selanjutnya.
Dalam proses pertukaran, karena kontrak Token penyerang mengandung logika callback, setiap transfer akan memicu panggilan reentrancy ke metode ExchangeWithAtomic.depositAsset. Ini menyebabkan jumlah setoran terakumulasi berkali-kali, dan akhirnya penyerang mendapatkan keuntungan berlebih melalui operasi penarikan.
Arah Aliran Dana
Modal awal penyerang berasal dari dompet panas di suatu platform perdagangan. Setelah serangan berhasil, dari 1.651 ETH yang diperoleh, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Analisis Kerentanan
Inti dari celah tersebut terletak pada fungsi doSwapThroughOrionPool dan _doSwapTokens dalam kontrak ExchangeWithAtomic. Fungsi-fungsi ini hanya memperbarui variabel curBalance setelah melakukan transfer token, memberikan kesempatan bagi penyerang untuk melakukan serangan reentrancy. Penyerang dengan menambahkan logika callback di fungsi transfer Token kustom, menyebabkan curBalance diperbarui secara salah, sehingga setelah mengembalikan pinjaman kilat, mereka masih dapat menarik dana tambahan.
Reproduksi Serangan
Peneliti telah menyediakan sebagian kode POC yang mensimulasikan proses serangan. Hasil pengujian menunjukkan bahwa penyerang berhasil memanfaatkan celah kontrak untuk mendapatkan USDT tambahan.
Saran Keamanan
Untuk serangan semacam ini, disarankan kepada pihak proyek:
Saat mengimplementasikan fungsi pertukaran token dalam kontrak, perlu mempertimbangkan risiko keamanan yang mungkin ditimbulkan oleh berbagai jenis Token dan jalur pertukaran.
Mematuhi dengan ketat pola pengkodean "Cek-Dampak-Interaksi" (Checks-Effects-Interactions), yaitu terlebih dahulu melakukan pemeriksaan kondisi, kemudian memperbarui variabel status, dan akhirnya melakukan panggilan eksternal.
Gunakan kunci re-entrancy atau mekanisme serupa sebelum memperbarui variabel status penting untuk mencegah serangan re-entrancy.
Melakukan audit kode dan pengujian keamanan secara berkala untuk mendeteksi dan memperbaiki potensi kerentanan secara tepat waktu.
Kejadian ini sekali lagi menyoroti pentingnya keamanan kontrak pintar. Pihak proyek harus terus memperhatikan masalah keamanan, mengambil langkah-langkah perlindungan yang komprehensif, untuk memastikan keamanan aset pengguna dan perkembangan stabil jangka panjang proyek.
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.
20 Suka
Hadiah
20
10
Posting ulang
Bagikan
Komentar
0/400
ColdWalletGuardian
· 08-14 12:21
Kelemahan sulit untuk dihindari.
Lihat AsliBalas0
NestedFox
· 08-14 11:36
Ini benar-benar mengejutkan, ya?
Lihat AsliBalas0
ImpermanentLossEnjoyer
· 08-14 11:01
Impermanent Loss sehari-hari
Lihat AsliBalas0
rug_connoisseur
· 08-12 04:38
Satu lagi smart contract gagal.
Lihat AsliBalas0
SchroedingerGas
· 08-11 18:57
Siapa yang dicukur lagi?
Lihat AsliBalas0
DAOTruant
· 08-11 18:57
Satu lagi kontrak telah dicuri.
Lihat AsliBalas0
MainnetDelayedAgain
· 08-11 18:56
Satu lagi kasus yang masuk ke database statistik, seharusnya tidak terjadi.
Lihat AsliBalas0
GateUser-5854de8b
· 08-11 18:51
Kontrak dicuri lagi...
Lihat AsliBalas0
MEV_Whisperer
· 08-11 18:51
Ini adalah re-entry, aku pergi!
Lihat AsliBalas0
SignatureVerifier
· 08-11 18:37
*sigh* kegagalan reentrancy buku teks lainnya. secara statistik tidak terhindarkan dengan pemeriksaan validasi yang tidak memadai. jujur saja, saya sudah melihat ini datang.
OrionProtocol mengalami serangan reentrancy dengan kerugian sekitar 2,9 juta dolar AS
Analisis Insiden Serangan Re-entrancy pada OrionProtocol
Pada tanggal 2 Februari 2023 pukul 15:40:20 UTC, OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat kerentanan kontrak. Penyerang memperoleh keuntungan sebesar 2.844.766 USDT dari jaringan Ethereum dan 191.606 BUSD dari Binance Smart Chain, dengan total kerugian sekitar 2,9 juta dolar AS.
Analisis Proses Serangan
Penyerang pertama-tama menerapkan kontrak Token kustom dan melakukan serangkaian persiapan. Selanjutnya, penyerang meminjam dana melalui fungsi swap dari DEX tertentu, dan memanggil metode OrionProtocol's ExchangeWithAtomic.swapThroughOrionPool untuk menukar token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang, yang menanamkan benih untuk serangan callback selanjutnya.
Dalam proses pertukaran, karena kontrak Token penyerang mengandung logika callback, setiap transfer akan memicu panggilan reentrancy ke metode ExchangeWithAtomic.depositAsset. Ini menyebabkan jumlah setoran terakumulasi berkali-kali, dan akhirnya penyerang mendapatkan keuntungan berlebih melalui operasi penarikan.
Arah Aliran Dana
Modal awal penyerang berasal dari dompet panas di suatu platform perdagangan. Setelah serangan berhasil, dari 1.651 ETH yang diperoleh, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Analisis Kerentanan
Inti dari celah tersebut terletak pada fungsi doSwapThroughOrionPool dan _doSwapTokens dalam kontrak ExchangeWithAtomic. Fungsi-fungsi ini hanya memperbarui variabel curBalance setelah melakukan transfer token, memberikan kesempatan bagi penyerang untuk melakukan serangan reentrancy. Penyerang dengan menambahkan logika callback di fungsi transfer Token kustom, menyebabkan curBalance diperbarui secara salah, sehingga setelah mengembalikan pinjaman kilat, mereka masih dapat menarik dana tambahan.
Reproduksi Serangan
Peneliti telah menyediakan sebagian kode POC yang mensimulasikan proses serangan. Hasil pengujian menunjukkan bahwa penyerang berhasil memanfaatkan celah kontrak untuk mendapatkan USDT tambahan.
Saran Keamanan
Untuk serangan semacam ini, disarankan kepada pihak proyek:
Kejadian ini sekali lagi menyoroti pentingnya keamanan kontrak pintar. Pihak proyek harus terus memperhatikan masalah keamanan, mengambil langkah-langkah perlindungan yang komprehensif, untuk memastikan keamanan aset pengguna dan perkembangan stabil jangka panjang proyek.