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.
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).
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:
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.
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.
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.
Pada pukul 22:00 tanggal 30 Juli, waktu Beijing, JPEG mengkonfirmasi bahwa kumpulan Kurva pETH-ETH telah digunakan secara jahat.
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.
Pengumuman Metronom DAO:
Pada dini hari kedua waktu Beijing, Curve Finance mengumumkan di Discord bahwa kumpulan dana yang tersisa tidak terpengaruh oleh Bug Vyper dan aman.
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.
Proses penyerangan
Berikut adalah contoh kesepakatan yang menargetkan JPEG:
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.
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.
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.
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.
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).
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:
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.
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.
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.
Pada pukul 22:00 tanggal 30 Juli, waktu Beijing, JPEG mengkonfirmasi bahwa kumpulan Kurva pETH-ETH telah digunakan secara jahat.
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.
Pengumuman Metronom DAO:
Pada dini hari kedua waktu Beijing, Curve Finance mengumumkan di Discord bahwa kumpulan dana yang tersisa tidak terpengaruh oleh Bug Vyper dan aman.
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.
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.
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.
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.