OrionProtocol mengalami serangan reentrancy dengan kerugian sekitar 2,9 juta dolar AS

robot
Pembuatan abstrak sedang berlangsung

Analisis Insiden Serangan Reentrancy pada OrionProtocol

Pada 2 Februari 2023 sore, proyek OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy akibat celah kontrak. Penyerang memperoleh keuntungan sekitar 2,9 juta dolar AS, yang termasuk 2.844.766 USDT di rantai Ethereum dan 191.606 BUSD di rantai Binance Smart.

Analisis Proses Serangan

Penyerang pertama-tama mengdeploy kontrak Token kustom, dan melakukan serangkaian operasi transfer dan otorisasi untuk mempersiapkan serangan berikutnya. Kemudian, penyerang meminjam melalui fungsi swap dari DEX tertentu, dan memanggil metode ExchangeWithAtomic.swapThroughOrionPool dari OrionProtocol untuk menukar token. Jalur pertukaran diatur ke [USDC, Token Penyerang, USDT].

Saat menjalankan metode swapThroughOrionPool, serangan terjadi karena kontrak Token penyerang memiliki fungsi callback, yang menyebabkan terjadinya serangan reentrancy selama proses transfer. Penyerang memanfaatkan metode Token.Transfer untuk terus-menerus memanggil fungsi ExchangeWithAtomic.depositAsset, sehingga jumlah setoran terus bertambah. Akhirnya, penyerang berhasil mendapatkan keuntungan melalui operasi penarikan.

Analisis Serangan Re-entrancy OrionProtocol dengan PoC

Arah Aliran Dana

Menurut data on-chain, dana awal penyerang berasal dari dompet panas 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 serangan reentrancy OrionProtocol dengan PoC

Analisis Kerentanan

Inti dari kerentanan ini terletak pada fungsi doSwapThroughOrionPool dari kontrak ExchangeWithAtomic. Fungsi ini memiliki cacat logika saat menjalankan operasi _doSwapTokens. Secara spesifik, kode ini memperbarui variabel curBalance hanya setelah melakukan transfer, yang menciptakan kondisi untuk serangan reentrancy.

Penyerang menambahkan logika callback dalam fungsi transfer Token kustom, secara berulang memanggil fungsi depositAsset, yang menyebabkan pembaruan curBalance menjadi salah. Akhirnya, setelah membayar kembali pinjaman kilat, penyerang memanggil fungsi withdraw untuk menarik dana yang berlebihan.

Analisis Serangan Reentrancy OrionProtocol dengan PoC

Analisis Serangan Reentrancy OrionProtocol dengan PoC

Analisis Serangan Reentrancy OrionProtocol dengan PoC

Analisis serangan reentrancy OrionProtocol dengan PoC

Analisis Serangan Re-entrancy OrionProtocol dengan PoC

Analisis serangan reentrancy OrionProtocol dengan PoC

Analisis Serangan Reentrancy OrionProtocol dengan PoC

Analisis serangan reentrancy OrionProtocol dengan PoC

Analisis Serangan Reentrancy OrionProtocol dengan PoC

Saran Pencegahan

Untuk menghindari serangan serupa, pihak proyek harus memperhatikan hal-hal berikut:

  1. Dalam mengimplementasikan fungsi pertukaran token, perlu mempertimbangkan secara menyeluruh berbagai jenis Token dan risiko keamanan yang mungkin ditimbulkan oleh jalur pertukaran.

  2. Mengikuti secara ketat pola pengkodean "Checks-Effects-Interactions"(, yaitu melakukan pemeriksaan kondisi terlebih dahulu, kemudian memperbarui variabel status, dan akhirnya melakukan panggilan eksternal.

  3. Meningkatkan kontrol keamanan terhadap panggilan eksternal, terutama saat menangani Token yang ditentukan pengguna.

  4. Secara berkala melakukan audit kode dan pengujian keamanan, untuk segera menemukan dan memperbaiki potensi celah.

  5. Gunakan pustaka keamanan yang matang dan praktik terbaik, seperti SafeERC20 dari OpenZeppelin.

Dengan mengambil langkah-langkah ini, risiko serangan terhadap kontrak pintar dapat secara signifikan dikurangi, meningkatkan keamanan keseluruhan proyek.

TOKEN2.69%
Lihat Asli
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.
  • Hadiah
  • 6
  • Posting ulang
  • Bagikan
Komentar
0/400
ser_ngmivip
· 9jam yang lalu
Sudah tidak ada uang lagi.
Lihat AsliBalas0
PretendingToReadDocsvip
· 9jam yang lalu
Setiap hari ada masalah, ngapain lagi?
Lihat AsliBalas0
LiquidityWizardvip
· 9jam yang lalu
Rug Pull sudah dijadwalkan~
Lihat AsliBalas0
degenonymousvip
· 9jam yang lalu
suckers lagi dipermainkan
Lihat AsliBalas0
CountdownToBrokevip
· 10jam yang lalu
Satu lagi yang gagal.
Lihat AsliBalas0
BoredApeResistancevip
· 10jam yang lalu
Sekali lagi ada celah kontrak, sudah terlalu banyak.
Lihat AsliBalas0
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)