Kerentanan Penyimpanan Sementara Mengakibatkan Pencurian Aset Senilai 300.000 Dolar
Pada tanggal 30 Maret 2025, proyek perdagangan dengan leverage di rantai Ethereum diserang, mengakibatkan kerugian aset lebih dari 300.000 dolar AS. Tim keamanan telah melakukan analisis mendalam tentang peristiwa ini dan sekarang membagikan hasilnya sebagai berikut:
Latar Belakang
Versi Solidity 0.8.24 memperkenalkan fitur penyimpanan transien berdasarkan EIP-1153. Ini adalah lokasi penyimpanan data baru yang dirancang untuk memberikan cara penyimpanan sementara yang efektif biaya dan berlaku selama transaksi bagi pengembang. Penyimpanan transien diimplementasikan melalui dua instruksi EVM baru, TSTORE dan TLOAD, yang memiliki biaya gas rendah, ketahanan dalam transaksi, dan pembersihan otomatis.
Alasan Serangan
Penyebab mendasar dari kejadian ini adalah bahwa nilai yang disimpan secara transien menggunakan tstore dalam fungsi tidak dibersihkan setelah pemanggilan fungsi selesai. Penyerang memanfaatkan fitur ini untuk membangun alamat jahat tertentu, melewati pemeriksaan izin untuk mengeluarkan token.
Langkah Serangan
Penyerang membuat dua token jahat A dan B, dan menciptakan kolam untuk kedua token ini di suatu DEX dan menyuntikkan likuiditas.
Penyerang memanggil fungsi initialize dari kontrak Vault, menggunakan token A sebagai token jaminan dan token B sebagai token utang untuk membuat pasar perdagangan leverage.
Penyerang memanggil fungsi mint dari kontrak Vault, menyimpan token utang B untuk mencetak token leverage. Dalam proses ini, alamat kolam DEX dan jumlah yang dicetak disimpan sementara.
Penyerang membuat kontrak jahat yang alamatnya sama dengan nilai penyimpanan sementara kedua.
Penyerang mengeluarkan token dengan memanggil fungsi callback dari kontrak Vault melalui kontrak jahat. Karena nilai penyimpanan sementara tidak dibersihkan, pemeriksaan identitas dilalui secara salah.
Terakhir, penyerang menggunakan serangan kontrak (token A) untuk memanggil fungsi callback dari kontrak Vault, mengeluarkan token lain (seperti WBTC, WETH) untuk mendapatkan keuntungan.
Analisis Aliran Dana
Penyerang mencuri aset senilai sekitar 300.000 dolar AS, termasuk 17.814,8626 USDC, 1,4085 WBTC, dan 119,871 WETH. WBTC ditukar menjadi 63,5596 WETH, dan USDC ditukar menjadi 9,7122 WETH. Kemudian, total 193,1428 WETH ditransfer ke suatu platform anonim. Sumber dana awal penyerang berasal dari 0,3 ETH yang ditransfer dari platform tersebut.
Ringkasan
Inti dari serangan ini adalah penyerang memanfaatkan karakteristik penyimpanan sementara yang tetap tidak berubah selama seluruh periode transaksi, melewati verifikasi izin pada fungsi panggilan balik. Disarankan agar pihak proyek segera menggunakan tstore(key, 0) untuk menghapus nilai di penyimpanan sementara setelah panggilan fungsi selesai berdasarkan logika bisnis. Selain itu, audit kode kontrak dan pengujian keamanan harus diperkuat untuk mencegah situasi serupa terjadi.
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
Posting ulang
Bagikan
Komentar
0/400
VitaliksTwin
· 8jam yang lalu
Gelombang ini masih membuang gas.
Lihat AsliBalas0
CountdownToBroke
· 8jam yang lalu
30w lagi ada kakak kirim
Lihat AsliBalas0
0xLuckbox
· 8jam yang lalu
Sudah dicuri tiga ratus ribu lagi~ smart contract menjaga keamanan ya
Lihat AsliBalas0
OnchainGossiper
· 8jam yang lalu
Lagi-lagi ada celah yang dimanfaatkan, bodoh sekali.
Lihat AsliBalas0
GateUser-0717ab66
· 8jam yang lalu
30w juga berani menyebutnya
Lihat AsliBalas0
VibesOverCharts
· 8jam yang lalu
30w? Hanya biaya transaksi sehari.
Lihat AsliBalas0
DefiPlaybook
· 8jam yang lalu
Berdasarkan pengambilan data, kerentanan penyimpanan semacam ini dapat menyebabkan tingkat kerugian mencapai 86,3%, waspada!
Kelemahan penyimpanan transien menyebabkan kerugian $300.000 pada proyek perdagangan margin Ethereum.
Kerentanan Penyimpanan Sementara Mengakibatkan Pencurian Aset Senilai 300.000 Dolar
Pada tanggal 30 Maret 2025, proyek perdagangan dengan leverage di rantai Ethereum diserang, mengakibatkan kerugian aset lebih dari 300.000 dolar AS. Tim keamanan telah melakukan analisis mendalam tentang peristiwa ini dan sekarang membagikan hasilnya sebagai berikut:
Latar Belakang
Versi Solidity 0.8.24 memperkenalkan fitur penyimpanan transien berdasarkan EIP-1153. Ini adalah lokasi penyimpanan data baru yang dirancang untuk memberikan cara penyimpanan sementara yang efektif biaya dan berlaku selama transaksi bagi pengembang. Penyimpanan transien diimplementasikan melalui dua instruksi EVM baru, TSTORE dan TLOAD, yang memiliki biaya gas rendah, ketahanan dalam transaksi, dan pembersihan otomatis.
Alasan Serangan
Penyebab mendasar dari kejadian ini adalah bahwa nilai yang disimpan secara transien menggunakan tstore dalam fungsi tidak dibersihkan setelah pemanggilan fungsi selesai. Penyerang memanfaatkan fitur ini untuk membangun alamat jahat tertentu, melewati pemeriksaan izin untuk mengeluarkan token.
Langkah Serangan
Penyerang membuat dua token jahat A dan B, dan menciptakan kolam untuk kedua token ini di suatu DEX dan menyuntikkan likuiditas.
Penyerang memanggil fungsi initialize dari kontrak Vault, menggunakan token A sebagai token jaminan dan token B sebagai token utang untuk membuat pasar perdagangan leverage.
Penyerang memanggil fungsi mint dari kontrak Vault, menyimpan token utang B untuk mencetak token leverage. Dalam proses ini, alamat kolam DEX dan jumlah yang dicetak disimpan sementara.
Penyerang membuat kontrak jahat yang alamatnya sama dengan nilai penyimpanan sementara kedua.
Penyerang mengeluarkan token dengan memanggil fungsi callback dari kontrak Vault melalui kontrak jahat. Karena nilai penyimpanan sementara tidak dibersihkan, pemeriksaan identitas dilalui secara salah.
Terakhir, penyerang menggunakan serangan kontrak (token A) untuk memanggil fungsi callback dari kontrak Vault, mengeluarkan token lain (seperti WBTC, WETH) untuk mendapatkan keuntungan.
Analisis Aliran Dana
Penyerang mencuri aset senilai sekitar 300.000 dolar AS, termasuk 17.814,8626 USDC, 1,4085 WBTC, dan 119,871 WETH. WBTC ditukar menjadi 63,5596 WETH, dan USDC ditukar menjadi 9,7122 WETH. Kemudian, total 193,1428 WETH ditransfer ke suatu platform anonim. Sumber dana awal penyerang berasal dari 0,3 ETH yang ditransfer dari platform tersebut.
Ringkasan
Inti dari serangan ini adalah penyerang memanfaatkan karakteristik penyimpanan sementara yang tetap tidak berubah selama seluruh periode transaksi, melewati verifikasi izin pada fungsi panggilan balik. Disarankan agar pihak proyek segera menggunakan tstore(key, 0) untuk menghapus nilai di penyimpanan sementara setelah panggilan fungsi selesai berdasarkan logika bisnis. Selain itu, audit kode kontrak dan pengujian keamanan harus diperkuat untuk mencegah situasi serupa terjadi.