Ini adalah jenis bug yang membuat tim protokol terjaga di malam hari.
Eksploitasi $5 juta di ZKSwap, diaktifkan oleh satu pernyataan yang ditinggalkan di tempat yang salah.
Berikut adalah penyelaman mendalam tentang bagaimana hal itu terjadi, dan bagaimana pemantauan onchain dapat menghentikannya.
🧵

1/ Pada 9 Juli, GMX diretas seharga $42 juta.
Tetapi sesuatu yang lain terjadi hari itu dan hampir tidak ada yang menyadarinya: jembatan ZKSwap diam-diam dikeringkan seharga $ 5 juta.
Bagian yang menarik? Tidak ada eksploitasi mewah yang terlibat. Hanya fungsi penting yang melakukan... tidak apa-apa.

2/ ZKSwap adalah zk-rollup yang dibangun di atas Ethereum.
Seperti banyak rollup, ia menggunakan jembatan untuk memindahkan aset antara L1 dan L2.
Sebagai perlindungan, jembatan ini menyertakan "Mode Keluaran", cara bagi pengguna untuk mendapatkan kembali dana tanpa memerlukan operator.
Secara teori, itu ide yang bagus. Dalam praktiknya...
3/ Mode Keluaran memungkinkan pengguna secara manual membuktikan bahwa mereka memiliki token dalam status L2 terakhir yang diverifikasi.
Ini adalah mekanisme penggantian: tanpa kepercayaan, penyimpanan diri, non-interaktif.
Tetapi implementasi ZKSwap memiliki satu kelemahan fatal: Fungsi yang bertanggung jawab untuk memverifikasi bukti tidak memverifikasi apa pun.
Secara harfiah.
4/ Inilah kode yang seharusnya menghentikan serangan 👇
Sekilas, itu terlihat seperti verifikator zk-proof nyata.
Tapi perhatikan baik-baik baris pertama: kembali benar;
Itu saja. Tidak ada lagi yang berjalan.

5/ Hasilnya? Setiap "bukti" penarikan (tidak peduli seberapa palsu) lulus validasi.
Kontrak menerima klaim sewenang-wenang tentang saldo token... dan memuji mereka seolah-olah itu nyata.
Itu mengubah mekanisme penggantian yang tidak dapat dipercaya menjadi keran yang tidak dijaga.
6/ Penyerang tidak membutuhkan eksploitasi mewah - hanya panggilan berulang untuk keluar() dengan data yang dibuat-buat.
Mereka melewati pemeriksaan saldo, menarik diri di beberapa token, dan menyalahgunakan logika pembatalan yang lemah untuk menghindari deteksi.
Sementara kontrak mengatakan: ✅

7/ Ini bukan kasus tepi yang tidak jelas.
Ini adalah logika inti untuk pemulihan aset, dibiarkan terbuka sepenuhnya.
Dan karena Mode Keluaran jarang dipicu, jalan yang rusak tidak diperhatikan... selama berbulan-bulan.
8/ Inilah yang seharusnya memicu alarm:
• Mode Keluaran dipicu setelah dormansi lama
• Lusinan panggilan penarikan terjadi sekaligus
• Lonjakan mendadak dalam saldoToWithdraw berubah
Semua itu terlihat dan bisa dihentikan dengan pemantauan onchain waktu nyata.

9/ Jadi apa pelajarannya?
• Kode darurat masih merupakan kode produksi
• Jalur penggantian tidak membantu jika tidak berhasil
• Pemantauan waktu nyata bukan opsional, ini penting untuk bertahan hidup
34,14 rb
379
Konten pada halaman ini disediakan oleh pihak ketiga. Kecuali dinyatakan lain, OKX bukanlah penulis artikel yang dikutip dan tidak mengklaim hak cipta atas materi tersebut. Konten ini disediakan hanya untuk tujuan informasi dan tidak mewakili pandangan OKX. Konten ini tidak dimaksudkan sebagai dukungan dalam bentuk apa pun dan tidak dapat dianggap sebagai nasihat investasi atau ajakan untuk membeli atau menjual aset digital. Sejauh AI generatif digunakan untuk menyediakan ringkasan atau informasi lainnya, konten yang dihasilkan AI mungkin tidak akurat atau tidak konsisten. Silakan baca artikel yang terkait untuk informasi lebih lanjut. OKX tidak bertanggung jawab atas konten yang dihosting di situs pihak ketiga. Kepemilikan aset digital, termasuk stablecoin dan NFT, melibatkan risiko tinggi dan dapat berfluktuasi secara signifikan. Anda perlu mempertimbangkan dengan hati-hati apakah trading atau menyimpan aset digital sesuai untuk Anda dengan mempertimbangkan kondisi keuangan Anda.