Residual Mematikan: Sebuah Insiden Serangan $300.000 di on-chain yang Berasal dari Penyimpanan Transien
Pada tanggal 30 Maret 2025, suatu sistem pemantauan keamanan mendeteksi bahwa proyek perdagangan leverage di jaringan Ethereum mengalami serangan, dengan kerugian aset lebih dari 300.000 dolar. Tim keamanan melakukan analisis mendalam terhadap kejadian ini, dan kini membagikan hasilnya sebagai berikut:
Latar Belakang
Versi Solidity 0.8.24 (dirilis Januari 2024) memperkenalkan fitur penyimpanan transien berbasis EIP-1153. Ini adalah lokasi penyimpanan data baru yang dirancang untuk memberikan cara penyimpanan sementara yang efisien biaya dan berlaku selama transaksi kepada pengembang.
Ciri utama dari penyimpanan transien meliputi:
Biaya gas rendah: Biaya gas untuk operasi TSTORE dan TLOAD tetap sebesar 100.
Persistensi dalam transaksi: Data tetap valid sepanjang periode transaksi.
Pembersihan otomatis: Setelah transaksi selesai, penyimpanan sementara otomatis direset menjadi nol.
Sumber Serangan
Penyebab mendasar dari kejadian ini adalah bahwa nilai yang disimpan secara transien menggunakan tstore dalam fungsi tidak dihapus setelah pemanggilan fungsi selesai. Ini memungkinkan penyerang memanfaatkan fitur ini untuk membangun alamat jahat tertentu, melewati pemeriksaan izin untuk mengeluarkan token.
Proses Serangan
Penyerang membuat dua token jahat A dan B, menciptakan kolam untuk kedua token ini di DEX tertentu dan menyuntikkan likuiditas, di mana token A adalah kontrak serangan.
Penyerang memanggil fungsi initialize dari kontrak Vault, menggunakan token A sebagai token jaminan dan token B sebagai token utang untuk membuat pasar perdagangan leverage APE-21.
Penyerang memanggil fungsi mint dari kontrak Vault, menyetor token utang B untuk mencetak token leverage APE. Dalam proses ini, terdapat dua operasi penyimpanan transien: pertama menyimpan alamat kolam DEX tertentu, kemudian menyimpan jumlah token yang dicetak.
Penyerang membuat kontrak jahat melalui metode khusus, yang alamatnya sama dengan nilai penyimpanan transien kedua.
Penyerang langsung memanggil fungsi callback dari kontrak Vault melalui kontrak jahat tersebut untuk mengeluarkan token. Karena nilai dalam penyimpanan sementara tidak dihapus, pemeriksaan identitas terhadap pemanggil dilalui dengan salah.
Terakhir, penyerang memanggil fungsi callback dari kontrak Vault melalui serangan kontrak (token A), dan mengeluarkan token lain dari kontrak Vault (seperti WBTC, WETH) untuk mendapatkan keuntungan.
Analisis Aliran Dana
Menurut analisis alat analisis on-chain, penyerang mencuri sekitar 300.000 dolar aset, termasuk 17.814,8626 USDC, 1,4085 WBTC, dan 119,871 WETH. Aset-aset ini kemudian digabungkan dan dikonversi menjadi WETH, yang akhirnya ditransfer ke suatu protokol perdagangan privasi.
Sumber dana awal penyerang berasal dari 0,3 ETH yang ditransfer ke dalam protokol transaksi privasi tersebut.
Ringkasan dan Saran
Inti dari serangan ini adalah bahwa penyerang memanfaatkan karakteristik penyimpanan sementara yang mempertahankan nilai yang tidak berubah selama seluruh transaksi, sehingga dapat menghindari verifikasi izin dari fungsi callback untuk mendapatkan keuntungan. Untuk mencegah situasi serupa terjadi, disarankan kepada pihak proyek:
Segera gunakan tstore(key, 0) untuk menghapus nilai di penyimpanan sementara setelah pemanggilan fungsi selesai berdasarkan logika bisnis.
Memperkuat audit kode kontrak dan pengujian keamanan.
Gunakan fitur baru yang diperkenalkan dengan hati-hati, dan pahami risiko potensialnya.
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.
13 Suka
Hadiah
13
6
Bagikan
Komentar
0/400
LayerZeroHero
· 08-02 23:27
Serangan pasti memiliki pintu belakang
Lihat AsliBalas0
Web3ProductManager
· 08-01 12:37
Serangan titik gesekan UX klasik
Lihat AsliBalas0
OnchainDetective
· 08-01 04:23
Jika ada kesalahan dalam kode, semuanya akan gagal.
30 ribu dolar serangan on-chain: kerentanan penyimpanan sementara menyebabkan proyek Perdagangan Margin menderita
Residual Mematikan: Sebuah Insiden Serangan $300.000 di on-chain yang Berasal dari Penyimpanan Transien
Pada tanggal 30 Maret 2025, suatu sistem pemantauan keamanan mendeteksi bahwa proyek perdagangan leverage di jaringan Ethereum mengalami serangan, dengan kerugian aset lebih dari 300.000 dolar. Tim keamanan melakukan analisis mendalam terhadap kejadian ini, dan kini membagikan hasilnya sebagai berikut:
Latar Belakang
Versi Solidity 0.8.24 (dirilis Januari 2024) memperkenalkan fitur penyimpanan transien berbasis EIP-1153. Ini adalah lokasi penyimpanan data baru yang dirancang untuk memberikan cara penyimpanan sementara yang efisien biaya dan berlaku selama transaksi kepada pengembang.
Ciri utama dari penyimpanan transien meliputi:
Sumber Serangan
Penyebab mendasar dari kejadian ini adalah bahwa nilai yang disimpan secara transien menggunakan tstore dalam fungsi tidak dihapus setelah pemanggilan fungsi selesai. Ini memungkinkan penyerang memanfaatkan fitur ini untuk membangun alamat jahat tertentu, melewati pemeriksaan izin untuk mengeluarkan token.
Proses Serangan
Penyerang membuat dua token jahat A dan B, menciptakan kolam untuk kedua token ini di DEX tertentu dan menyuntikkan likuiditas, di mana token A adalah kontrak serangan.
Penyerang memanggil fungsi initialize dari kontrak Vault, menggunakan token A sebagai token jaminan dan token B sebagai token utang untuk membuat pasar perdagangan leverage APE-21.
Penyerang memanggil fungsi mint dari kontrak Vault, menyetor token utang B untuk mencetak token leverage APE. Dalam proses ini, terdapat dua operasi penyimpanan transien: pertama menyimpan alamat kolam DEX tertentu, kemudian menyimpan jumlah token yang dicetak.
Penyerang membuat kontrak jahat melalui metode khusus, yang alamatnya sama dengan nilai penyimpanan transien kedua.
Penyerang langsung memanggil fungsi callback dari kontrak Vault melalui kontrak jahat tersebut untuk mengeluarkan token. Karena nilai dalam penyimpanan sementara tidak dihapus, pemeriksaan identitas terhadap pemanggil dilalui dengan salah.
Terakhir, penyerang memanggil fungsi callback dari kontrak Vault melalui serangan kontrak (token A), dan mengeluarkan token lain dari kontrak Vault (seperti WBTC, WETH) untuk mendapatkan keuntungan.
Analisis Aliran Dana
Menurut analisis alat analisis on-chain, penyerang mencuri sekitar 300.000 dolar aset, termasuk 17.814,8626 USDC, 1,4085 WBTC, dan 119,871 WETH. Aset-aset ini kemudian digabungkan dan dikonversi menjadi WETH, yang akhirnya ditransfer ke suatu protokol perdagangan privasi.
Sumber dana awal penyerang berasal dari 0,3 ETH yang ditransfer ke dalam protokol transaksi privasi tersebut.
Ringkasan dan Saran
Inti dari serangan ini adalah bahwa penyerang memanfaatkan karakteristik penyimpanan sementara yang mempertahankan nilai yang tidak berubah selama seluruh transaksi, sehingga dapat menghindari verifikasi izin dari fungsi callback untuk mendapatkan keuntungan. Untuk mencegah situasi serupa terjadi, disarankan kepada pihak proyek: