Analisis Insiden Serangan Re-Entry pada OrionProtocol
Pada 2 Februari 2023, OrionProtocol mengalami serangan reentrancy di Ethereum dan Binance Smart Chain, yang mengakibatkan kerugian sekitar 2,9 juta dolar AS. Penyerang memanfaatkan celah kontrak untuk mencuri 2.844.766 USDT di rantai Ethereum dan 191.606 BUSD di rantai Binance Smart.
Proses Penyerangan
Penyerang pertama-tama membuat kontrak Token kustom dan melakukan operasi transfer dan otorisasi terkait. Selanjutnya, penyerang meminjam melalui metode swap dari DEX tertentu, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool untuk menukar token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang.
Dalam proses penukaran, karena adanya mekanisme callback dalam kontrak Token penyerang, penyerang dapat terus memanggil metode ExchangeWithAtomic.depositAsset melalui Token.Transfer, sehingga memungkinkan terjadinya serangan reentrancy. Ini menyebabkan jumlah setoran ditambahkan secara berulang, dan akhirnya penyerang berhasil mendapatkan keuntungan melalui operasi penarikan.
Arah Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan. Dari 1.651 ETH yang diperoleh, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Masalah inti dari kerentanan muncul dalam fungsi doSwapThroughOrionPool. Fungsi ini memanggil fungsi _doSwapTokens, yang memperbarui variabel curBalance setelah operasi transfer. Penyerang memanfaatkan fungsi transfer dari Token kustom yang ditambahkan dengan fitur callback, memanggil kembali fungsi depositAsset sebelum curBalance diperbarui, yang menyebabkan pembaruan curBalance yang salah. Akhirnya, setelah membayar kembali pinjaman kilat, penyerang menarik dana tambahan melalui fungsi withdraw.
Saran Pencegahan
Untuk mencegah serangan serupa, disarankan kepada pihak proyek untuk memperhatikan hal-hal berikut saat merancang kontrak:
Pertimbangkan kemungkinan situasi tak terduga yang dapat ditimbulkan oleh berbagai Token dan berbagai jalur pertukaran.
Mengikuti pola pengkodean "Cek-Dampak-Interaksi" (Checks-Effects-Interactions), yaitu pertama melakukan pemeriksaan kondisi, kemudian memperbarui variabel status, dan terakhir melakukan panggilan eksternal.
Gunakan kunci reentrancy sebelum dan sesudah operasi penting untuk mencegah serangan reentrancy.
Melakukan verifikasi keamanan terhadap kontrak Token yang dipanggil dari luar.
Secara rutin melakukan audit kode dan pengujian keamanan, serta segera menemukan dan memperbaiki potensi kerentanan.
Dengan mengambil langkah-langkah ini, proyek dapat secara signifikan meningkatkan keamanan dan stabilitas kontrak, serta meminimalkan risiko serangan.
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.
17 Suka
Hadiah
17
7
Bagikan
Komentar
0/400
AirdropHunterXiao
· 9jam yang lalu
Proyek blockchain lagi-lagi terkena dampak.
Lihat AsliBalas0
MemecoinResearcher
· 9jam yang lalu
ngmi... sepertinya kutukan reentrancy menyerang lagi fr fr
Lihat AsliBalas0
NightAirdropper
· 9jam yang lalu
Setiap hari dihack, sangat menyedihkan
Lihat AsliBalas0
rugpull_survivor
· 9jam yang lalu
play people for suckers satu kali masih ada berikutnya
OrionProtocol mengalami serangan reentrancy senilai 2,9 juta dolar AS. Analisis proses serangan dan saran pencegahan.
Analisis Insiden Serangan Re-Entry pada OrionProtocol
Pada 2 Februari 2023, OrionProtocol mengalami serangan reentrancy di Ethereum dan Binance Smart Chain, yang mengakibatkan kerugian sekitar 2,9 juta dolar AS. Penyerang memanfaatkan celah kontrak untuk mencuri 2.844.766 USDT di rantai Ethereum dan 191.606 BUSD di rantai Binance Smart.
Proses Penyerangan
Penyerang pertama-tama membuat kontrak Token kustom dan melakukan operasi transfer dan otorisasi terkait. Selanjutnya, penyerang meminjam melalui metode swap dari DEX tertentu, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool untuk menukar token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang.
Dalam proses penukaran, karena adanya mekanisme callback dalam kontrak Token penyerang, penyerang dapat terus memanggil metode ExchangeWithAtomic.depositAsset melalui Token.Transfer, sehingga memungkinkan terjadinya serangan reentrancy. Ini menyebabkan jumlah setoran ditambahkan secara berulang, dan akhirnya penyerang berhasil mendapatkan keuntungan melalui operasi penarikan.
Arah Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan. Dari 1.651 ETH yang diperoleh, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran.
Analisis Kerentanan
Masalah inti dari kerentanan muncul dalam fungsi doSwapThroughOrionPool. Fungsi ini memanggil fungsi _doSwapTokens, yang memperbarui variabel curBalance setelah operasi transfer. Penyerang memanfaatkan fungsi transfer dari Token kustom yang ditambahkan dengan fitur callback, memanggil kembali fungsi depositAsset sebelum curBalance diperbarui, yang menyebabkan pembaruan curBalance yang salah. Akhirnya, setelah membayar kembali pinjaman kilat, penyerang menarik dana tambahan melalui fungsi withdraw.
Saran Pencegahan
Untuk mencegah serangan serupa, disarankan kepada pihak proyek untuk memperhatikan hal-hal berikut saat merancang kontrak:
Dengan mengambil langkah-langkah ini, proyek dapat secara signifikan meningkatkan keamanan dan stabilitas kontrak, serta meminimalkan risiko serangan.