Analisis serangan Reentrancy Pinjaman Flash pada proyek Jarvis Network
Baru-baru ini, sebuah insiden serangan terhadap proyek Jarvis Network menarik perhatian industri. Menurut pemantauan data di blockchain, serangan terjadi pada 15 Januari 2023, yang mengakibatkan proyek kehilangan 663.101 token MATIC.
Dengan menganalisis tumpukan panggilan dari transaksi serangan, kami menemukan bahwa penyerang memanfaatkan kombinasi Pinjaman Flash dan kerentanan reentrancy. Dalam proses penghapusan likuiditas, penyerang berhasil melaksanakan serangan reentrancy, yang menyebabkan fungsi yang sama mengembalikan nilai yang sangat berbeda sebelum dan setelah reentrancy.
Menggali lebih dalam, ternyata masalahnya ada pada fungsi remove_liquidity. Fungsi ini bertanggung jawab untuk menghapus likuiditas dan mengembalikan token pengguna. Karena rantai Polygon kompatibel dengan EVM, logika re-entrant kontrak dipicu selama proses transfer.
Kelemahan kunci terletak pada variabel self.D yang digunakan dalam perhitungan harga. Dalam keadaan normal, self.D harus diperbarui secara tepat waktu saat likuiditas dihapus. Namun, karena cacat logika dalam kode, pembaruan self.D ditunda hingga setelah panggilan eksternal. Ini memberi kesempatan kepada penyerang untuk menyisipkan operasi di antara, memanfaatkan nilai self.D yang belum diperbarui untuk arbitrase.
Sementara fungsi remove_liquidity menggunakan dekorator @nonreentrant('lock') untuk mencegah masuk kembali, penyerang dengan cerdik melewati mekanisme perlindungan ini. Mereka menghindari pembatasan kunci masuk kembali dengan memasukkan kembali fungsi peminjaman dan peminjaman kontrak lain, daripada secara langsung memasukkan kembali fungsi remove_liquidity itu sendiri.
Serangan ini menyoroti pentingnya beberapa prinsip keamanan utama dalam pengembangan kontrak pintar:
Ikuti dengan ketat pola "Cek-Dampak-Interaksi" (Checks-Effects-Interactions).
Pastikan pembaruan variabel kunci diselesaikan sebelum panggilan eksternal apa pun.
Menggunakan berbagai sumber data untuk mendapatkan harga, untuk meningkatkan ketahanan sistem.
Audit keamanan yang komprehensif sangat penting untuk menemukan dan memperbaiki potensi kerentanan.
Insiden ini merupakan pengingat lain bahwa keamanan selalu menjadi prioritas utama dalam ekosistem blockchain yang berkembang pesat. Tim pengembangan proyek harus terus memantau praktik keamanan terbaru dan melakukan tinjauan kode dan uji kerentanan secara teratur untuk memastikan keamanan aset pengguna.
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.
6 Suka
Hadiah
6
7
Bagikan
Komentar
0/400
MidnightSnapHunter
· 07-18 10:01
Bugs kontrak memang sulit untuk dihindari.
Lihat AsliBalas0
StablecoinEnjoyer
· 07-17 23:27
Satu proyek lagi telah diretas.
Lihat AsliBalas0
OnChainSleuth
· 07-17 00:48
Satu proyek lagi telah dibersihkan.
Lihat AsliBalas0
shadowy_supercoder
· 07-17 00:40
Tsk, serangan reentrancy lagi. Tidak belajar dari pengalaman.
Jarvis Network terkena serangan re-intrancy pinjaman kilat, kehilangan 660.000 token MATIC
Analisis serangan Reentrancy Pinjaman Flash pada proyek Jarvis Network
Baru-baru ini, sebuah insiden serangan terhadap proyek Jarvis Network menarik perhatian industri. Menurut pemantauan data di blockchain, serangan terjadi pada 15 Januari 2023, yang mengakibatkan proyek kehilangan 663.101 token MATIC.
Dengan menganalisis tumpukan panggilan dari transaksi serangan, kami menemukan bahwa penyerang memanfaatkan kombinasi Pinjaman Flash dan kerentanan reentrancy. Dalam proses penghapusan likuiditas, penyerang berhasil melaksanakan serangan reentrancy, yang menyebabkan fungsi yang sama mengembalikan nilai yang sangat berbeda sebelum dan setelah reentrancy.
Menggali lebih dalam, ternyata masalahnya ada pada fungsi remove_liquidity. Fungsi ini bertanggung jawab untuk menghapus likuiditas dan mengembalikan token pengguna. Karena rantai Polygon kompatibel dengan EVM, logika re-entrant kontrak dipicu selama proses transfer.
! Analisis Insiden Serangan Reentrancy Flash Loan Jarvis Network
Kelemahan kunci terletak pada variabel self.D yang digunakan dalam perhitungan harga. Dalam keadaan normal, self.D harus diperbarui secara tepat waktu saat likuiditas dihapus. Namun, karena cacat logika dalam kode, pembaruan self.D ditunda hingga setelah panggilan eksternal. Ini memberi kesempatan kepada penyerang untuk menyisipkan operasi di antara, memanfaatkan nilai self.D yang belum diperbarui untuk arbitrase.
Sementara fungsi remove_liquidity menggunakan dekorator @nonreentrant('lock') untuk mencegah masuk kembali, penyerang dengan cerdik melewati mekanisme perlindungan ini. Mereka menghindari pembatasan kunci masuk kembali dengan memasukkan kembali fungsi peminjaman dan peminjaman kontrak lain, daripada secara langsung memasukkan kembali fungsi remove_liquidity itu sendiri.
! Analisis Insiden Serangan Masuknya Kembali Pinjaman Flash Jarvis Network
Serangan ini menyoroti pentingnya beberapa prinsip keamanan utama dalam pengembangan kontrak pintar:
Insiden ini merupakan pengingat lain bahwa keamanan selalu menjadi prioritas utama dalam ekosistem blockchain yang berkembang pesat. Tim pengembangan proyek harus terus memantau praktik keamanan terbaru dan melakukan tinjauan kode dan uji kerentanan secara teratur untuk memastikan keamanan aset pengguna.