CertiK: Penjelasan terperinci tentang kerugian Vyper sebesar $52 juta

Kerentanan dalam Vyper versi 0.2.15, 0.2.16, dan 0.3.0 telah dilaporkan, menempatkan banyak kumpulan di Curve dalam risiko serangan reentrancy. Kerentanan ini memungkinkan penyerang memanggil fungsi tambah likuiditas selama proses penghapusan likuiditas.

Sebanyak $69,3 juta telah terpengaruh sejauh ini, dimana $16,7 juta telah ditemukan oleh peretas topi putih. Ini juga berarti bahwa $52 juta telah dicuri dari insiden ini, menjadikannya serangan reentrancy terbesar sejauh ini di tahun 2023.

exsGmBiwYOSh5Seu3C6zysCmJcCD64sdWTvG5w0M.jpeg

Analisis Insiden Vyper

Ringkasan Acara

Pada tanggal 30 Juli 2023, versi 0.2.15, 0.2.16, dan 0.3.0 dari bahasa pemrograman berorientasi kontrak, kompiler Vyper yang dirancang untuk Ethereum Virtual Machine (EVM) diumumkan memiliki kerentanan kegagalan kunci reentrancy. Beberapa proyek DeFi terpengaruh oleh bug tersebut, dengan total kerugian $52 juta.

CertiK telah mengidentifikasi enam alamat yang terlibat dalam insiden tersebut. Yang pertama (0x172) gagal mengeksploitasi kerentanan di blok 17806056. Pengeksploitasi asli menarik 0,1 ETH dari Tornado Cash dan mulai membuat kontrak serangan. Namun, dompet terkemuka (0x6Ec21) membayar lebih banyak biaya gas dan mengeksekusi transaksi terlebih dahulu, menghasilkan sekitar 6.100 WETH ($11,4 juta).

YLsgfOUBbfcQ6Pgy77tT2prtmsSHe2U4s7HpuCV3.png

Kerentanan kegagalan pra-transaksi oleh robot MEV Sumber: Etherscan Etherscan

Pelanggaran menyebabkan kerugian lebih lanjut: EOA 0xDCe5d mengakuisisi aset senilai sekitar $21 juta. Rincian dompet yang terlibat adalah sebagai berikut:

BQybD6x7JDeb56tNYA5gp3antJdgtukOJp5C71Gw.png

Sebanyak enam proyek terpengaruh, dengan sekitar $69,3 juta dicuri, $16,7 juta di antaranya dikembalikan, dengan total kerugian sekitar $52 juta.

Apa itu Vyper

Vyper adalah bahasa pemrograman pythonic berorientasi kontrak untuk Ethereum Virtual Machine (EVM). Vyper telah dalam versi beta sejak 2017, tetapi rilis non-beta pertamanya adalah versi 0.2.1 pada Juli 2020.

Soliditas, bahasa dominan dalam ekosistem Ethereum, telah ada jauh lebih lama daripada Vyper, sehingga banyak anggota komunitas telah membuat alat yang berjalan secara eksklusif dengan Soliditas. Menurut data dari DeFiLlama, dari total nilai terkunci (TVL) sekitar US$70 miliar dalam protokol DeFi, kontrak pintar Vyper menyumbang US$2,17 miliar, sementara Solidity menyumbang sebagian besar, hingga US$67,49 miliar.

KjMot1urT10BOZJi8lgltDDN62IMhxVncPFncjoP.png

616cb7f4-e84a-479f-bd50-73e2adaec534 Total nilai terkunci menurut sumber bahasa: DeFiLlama

Pada 10 Mei 2023, dominasi Vyper turun dari 30% pada Agustus 2020 menjadi 6,27%. Meskipun dominasi TVL Vyper secara signifikan lebih rendah daripada Solidity, acara tersebut masih menghasilkan $62 juta.

8G03pLGwavL4LcDkdTQS5EVlIywScZBcpTb4Fzeb.png

b89a9653-a2d4-4e89-9042-24e06ed1590a (1) Dominasi berbagai bahasa pemrograman di TVL Sumber: DeFiLlama

Versi kompiler

Versi kompiler mengacu pada versi spesifik dari kompiler bahasa pemrograman yang mengubah kode sumber yang dapat dibaca manusia menjadi kode yang dapat dibaca mesin.

Versi kompiler diperbarui secara berkala untuk memperkenalkan fitur, memperbaiki bug, dan meningkatkan keamanan. Vyper Language saat ini tidak menawarkan program bounty bug hacker.

Versi 0.2.15 - 0.3.0

Seperti disebutkan di atas, kerentanan ditemukan di Vyper versi 0.2.15, 0.2.16 dan 0.3.0, yang mengakibatkan beberapa proyek DeFi menjadi serangan re-entrant.

Eksploitasi Vyper paling awal versi 0.2.15 dirilis pada 23 Juli 2021. Pada saat versi 0.3.1 dirilis pada bulan Desember di tahun yang sama, kerentanan sebelumnya sudah tidak ada lagi.

linimasa

Insiden tersebut pertama kali dimulai pada pukul 21:10 waktu Beijing pada tanggal 30 Juli. Transaksi penyerang untuk kumpulan JPEG di Curve gagal karena transaksi yang berjalan sebelumnya.

Screenshot 31-07-2023 pukul 21.08.31

Pada pukul 22:00 tanggal 30 Juli, waktu Beijing, JPEG mengkonfirmasi bahwa kumpulan Kurva pETH-ETH telah digunakan secara jahat.

2g2jUlVcktQTJmqFFZUPSVONMA6O9Jbp7HcbQEKd.png

Vyper kemudian mengumumkan bahwa versi 0.2.15, 0.2.16 dan 0.3.0 menyertakan kunci reentrancy yang rusak. Metronome dan Alchemix juga terpengaruh setelah Vyper men-tweet.

mRZI1JtH7Qv7Mvk09k7ex0chKgffsFir98ebzqtD.png

Pengumuman Metronom DAO:

FTzOyIh9Z8Opc6soNd4zLzAcKQGuLxWY2QEefPPV.png

F9Dh7bMfVanq8deivVbWwhF24E3gbbIpThEq0t5l.png

8MYwVijoFiaJPL32YVTK6AOQHeHsZvZXyxIfmF9h.png

Pada dini hari kedua waktu Beijing, Curve Finance mengumumkan di Discord bahwa kumpulan dana yang tersisa tidak terpengaruh oleh Bug Vyper dan aman.

PsdIMHoBSb8vtyuFjjlO4ZsCrmKfIC6IY6I40DkB.png

aLVrLdFyKeWEz7Jd1sqydWD4dTUWmpGw8Oj7PY0W.png

Curve Finance mengumumkan di Twitter bahwa kumpulan di Arbitrum berpotensi dikompromikan, tetapi tidak ada eksploitasi yang menguntungkan untuk dieksekusi oleh aktor jahat, yang berarti kumpulan tersebut tidak mungkin disusupi. CertiK juga tidak mendeteksi serangan lain yang mengeksploitasi kerentanan Vyper.

iqFUjHgxsKZF0Hw4cIndWFLBVQBC8VyjPCrNnDNk.png

Proses penyerangan

Berikut adalah contoh kesepakatan yang menargetkan JPEG:

Penyerang: 0x6ec21d1868743a44318c3c259a6d4953f9978538

Kontrak serangan: 0x466b85b49ec0c5c1eb402d5ea3c4b88864ea0f04#kode

1 Penyerang pertama-tama meminjam 80.000 WETH (sekitar $149.371.300) dari Balancer: Vault

2 Kemudian, penyerang menukar WETH dengan ETH, memanggil pETH-ETH-f.add_liquidity(), dan menambahkan 40.000 ETH (sekitar $74.685.650) ke kumpulan pETH-ETH-f. Sebagai gantinya, penyerang menerima 32.431 pETH (pETH-ETH-f).

3 Penyerang memanggil remove_liquidity() untuk menghapus likuiditas yang ditambahkan pada langkah 2. 3.740 pETH dan 34.316 ETH ditransfer ke kontrak serangan, dan fungsi fallbak() dari kontrak serangan dipicu, memberikan kendali kepada penyerang. Dalam fungsi fallback(), penyerang menambahkan 40.000 ETH lagi likuiditas ke kumpulan pETH-ETH-f dan menerima 82.182 pETH.

4 Penyerang memanggil remove_liquidity() lagi, mengeluarkan 10.272pETH, dan menerima 47.506 ETH dan 1.184pETH. Penyerang kemudian menukar 4.924 pETH dengan 4.285 ETH di kumpulan pETH-ETH-f.

Secara total, penyerang memperoleh 34.316 ETH dari langkah 3, 47.506, dan 4.285 ETH dari langkah 4, dengan total 86.107 ETH. Setelah melunasi pinjaman kilat 80.000 ETH, penyerang memiliki 6.107 ETH (~$11.395.506).

Kerentanan

Kerentanan ini memungkinkan penyerang memanggil fungsi tambah likuiditas selama proses penghapusan likuiditas. Meskipun fungsi ini seharusnya dilindungi oleh @nonreentrant('lock'), pengujian pada fungsi add_liquidty() dan remove_liquidity() membuktikan bahwa fungsi tersebut tidak mencegah serangan reentrancy.

HIhD33yKE94EHwUa7xkQhAzQRF4nscaJOwAPTOmK.png

Vyper_contract untuk Curve.fi Factory Pool Sumber data: Etherscan

Versi Vyper v0.2.15, v0.2.16 dan v0.3.0 memang memiliki kerentanan kegagalan perlindungan reentrancy setelah eksploitasi JPEG'd, Metronome dan Alchemix.

Mr3KDb2SKoLhF770OEWBAtdTuOYZ88tchEodweuv.png

solusi

Proyek yang menggunakan versi Vyper yang rentan harus menghubungi Vyper untuk bantuan mitigasi. Proyek juga harus mencoba memutakhirkan ke versi terbaru Vyper yang tidak mengandung kerentanan ini.

Ringkas

Serangan terhadap Vyper adalah kerentanan reentrancy terbesar yang terdeteksi oleh CertiK pada tahun 2023. Dalam hal kerugian finansial, serangan ini menyumbang 78,6% dari insiden tersebut.

Dua kerentanan reentrancy terbesar tahun ini sama-sama mengeksploitasi kontrak yang ditulis dalam Vyper, meskipun kerentanannya tidak identik.

Saat ini, kerugian akibat serangan reentrancy di semua rantai pada tahun 2023 telah melebihi $66 juta. Itu sekitar $4 juta lebih banyak dari pada sepanjang tahun 2020 dan hanya $1 juta lebih sedikit dari kerugian tahun 2021. Khususnya, total tahun 2023 juga menunjukkan peningkatan kerugian sebesar 259,45% karena serangan penargetan ulang pada tahun 2022.

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
  • Komentar
  • Bagikan
Komentar
0/400
Tidak ada komentar
  • 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)