Jarvis Network mengalami serangan reentrancy Pinjaman Flash dengan kerugian 663,101 MATIC

robot
Pembuatan abstrak sedang berlangsung

Analisis Serangan Reentrancy Pinjaman Flash pada Proyek Jarvis Network

Pada 15 Januari 2023, proyek Jarvis_Network diserang, kehilangan 663.101 MATIC. Melalui analisis tumpukan panggilan dari transaksi serangan, ditemukan adanya logika reentrancy. Dalam proses reentrancy, panggilan fungsi yang sama pada kontrak yang sama, dengan parameter yang sama, tetapi nilai kembali yang sangat berbeda.

Analisis Insiden Serangan Re-entrance Pinjaman Flash Jarvis Network

Reentrancy terjadi di dalam fungsi remove_liquidity. Fungsi ini akan mengembalikan token yang ditambahkan pengguna saat menghapus likuiditas. Karena Polygon bersifat EVM-kompatibel, transfer MATIC ke kontrak akan memicu reentrancy.

Analisis Kejadian Serangan Re-entrance Pinjaman Flash Jarvis Network

Analisis mendalam menunjukkan bahwa masalah terletak pada implementasi fungsi getUnderlyingPrice. Fungsi ini melibatkan beberapa panggilan kontrak, yang pada akhirnya mempengaruhi nilai kembali dari fungsi get_virtual_price. Nilai kembali dari fungsi get_virtual_price dipengaruhi oleh variabel self.D, dan pembaruan self.D dilakukan setelah transfer.

Analisis Kejadian Serangan Re-Entry Pinjaman Flash Jarvis Network

Penyerang mengalihkan MATIC ke kontrak serangan saat menghapus likuiditas, kemudian memanggil fungsi fallback untuk memeriksa harga. Karena pembaruan self.D terjadi setelah transfer, ini menyebabkan kesalahan dalam mendapatkan harga sebelumnya. Proses metode penghapusan likuiditas adalah: 1) menghancurkan LP pengguna; 2) mengirimkan dana staking pengguna; 3) memperbarui self.D.

Analisis Peristiwa Serangan Re-entrancy Pinjaman Flash Jarvis Network

self.D digunakan untuk perhitungan harga, dan juga akan diperbarui saat menambahkan likuiditas. Dana likuiditas penyerang cukup besar, dalam kondisi normal nilai self.D akan jauh lebih kecil. Namun, penyerang melakukan reentrancy di langkah 2 dan meminjam dengan harga 10 kali lebih tinggi dari harga asli. Ini karena nilai self.D meningkat saat menambahkan likuiditas, sementara saat menghapus likuiditas tidak diperbarui tepat waktu.

Analisis Kejadian Serangan Re-entrancy Pinjaman Flash Jarvis Network

Meskipun metode remove_liquidity menggunakan @nonreentrant('lock') untuk mencegah reentrancy, penyerang dapat melakukan reentrancy ke kontrak lain untuk meminjam dana, sehingga mengakibatkan kunci reentrancy menjadi tidak efektif.

Analisis Kejadian Serangan Re-entrancy Pinjaman Flash Jarvis Network

Penyebab utama serangan kali ini adalah logika modifikasi variabel setelah pemanggilan eksternal, yang menyebabkan anomali dalam pengambilan harga. Reentrancy antar kontrak membuat kunci reentrancy tidak berlaku. Disarankan agar pihak proyek melakukan audit keamanan yang ketat, meletakkan modifikasi variabel sebelum pemanggilan eksternal, dan menggunakan metode pengambilan harga dengan banyak sumber data. Mengikuti "periksa dahulu, kemudian tulis variabel, baru lakukan pemanggilan eksternal" sebagai standar pengkodean (Checks-Effects-Interactions) dapat meningkatkan keamanan dan stabilitas proyek.

Analisis Peristiwa Serangan Re-entrance Pinjaman Flash Jarvis Network

Analisis Kejadian Serangan Re-entrancy Pinjaman Flash Jarvis Network

Analisis Kejadian Serangan Re-entrancy Pinjaman Flash Jarvis Network

Analisis Kejadian Serangan Re-entrancy Pinjaman Flash Jarvis Network

Analisis Kasus Serangan Reentrancy Pinjaman Flash Jarvis Network

Analisis Kejadian Serangan Reentrancy Pinjaman Flash Jarvis Network

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
  • Bagikan
Komentar
0/400
All-InQueenvip
· 08-05 00:42
Blockchain kembali mengalami ledakan, sudah parah.
Lihat AsliBalas0
HalfBuddhaMoneyvip
· 08-02 05:37
Tidak mungkin mendapatkan sebanyak ini...
Lihat AsliBalas0
ZeroRushCaptainvip
· 08-02 05:37
又双叒叕阵亡一个,seluruh tabungan全打水漂了 亏钱Sam Altman冲啊!
Lihat AsliBalas0
ForkLibertarianvip
· 08-02 05:29
Kecepatan tangan begitu lambat, Cut Loss dan Rug Pull sudah terlambat.
Lihat AsliBalas0
StakeTillRetirevip
· 08-02 05:24
Satu lagi kasus reentrancy yang tragis, saya sudah tidak bisa berbuat apa-apa.
Lihat AsliBalas0
SighingCashiervip
· 08-02 05:13
Kamu sudah terlalu jauh, ini adalah kerentanan reentrancy lagi.
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)