Kerentanan penyimpanan sementara menyebabkan proyek Ethereum diserang senilai 300.000 dolar
Pada tanggal 30 Maret 2025, sebuah sistem pemantauan keamanan mendeteksi bahwa proyek perdagangan berlever di jaringan Ethereum mengalami serangan, mengakibatkan kerugian lebih dari 300.000 dolar AS. Tim keamanan telah menganalisis peristiwa ini dan kini membagikan hasilnya sebagai berikut:
Pengetahuan Latar Belakang
Versi Solidity 0.8.24 memperkenalkan fitur penyimpanan sementara (transient storage), yang merupakan lokasi penyimpanan data baru. Ciri utama dari fitur ini adalah data hanya berlaku selama periode eksekusi transaksi saat ini, dan secara otomatis dihapus setelah transaksi selesai. Akses dan modifikasi dilakukan melalui dua instruksi EVM baru, TSTORE dan TLOAD.
Penyimpanan transien memiliki ciri-ciri berikut:
Biaya gas rendah: Biaya gas untuk TSTORE dan TLOAD tetap 100
Persistensi dalam transaksi: Data tetap valid selama periode transaksi.
Pembersihan otomatis: Reset ke nol secara otomatis setelah transaksi selesai
Penyebab Kerentanan
Penyebab mendasar dari peristiwa ini adalah nilai yang disimpan secara sementara menggunakan tstore dalam fungsi tidak dibersihkan setelah pemanggilan fungsi berakhir. Ini memungkinkan penyerang untuk memanfaatkan karakteristik ini untuk membangun alamat jahat tertentu dan melewati pemeriksaan izin untuk mentransfer token.
Proses Serangan
Penyerang membuat dua token jahat A dan B, dan di suatu DEX, mereka menciptakan kolam untuk kedua token tersebut 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, alamat kolam DEX dan jumlah yang dicetak disimpan sementara secara berurutan.
Penyerang membuat kontrak jahat dengan alamat yang sama dengan nilai penyimpanan sementara kedua.
Penyerang memanggil fungsi callback dari kontrak Vault secara langsung melalui kontrak jahat tersebut untuk mengeluarkan token. Karena nilai dalam penyimpanan transien tidak dihapus, pemeriksaan identitas dilalui dengan salah.
Terakhir, penyerang memanggil fungsi callback dari kontrak Vault melalui serangan pada kontrak (token A), dan mengeluarkan token lain dari kontrak Vault (WBTC, WETH) untuk mendapatkan keuntungan.
Analisis Aliran Dana
Menurut analisis di blockchain, penyerang mencuri sekitar 300.000 dolar AS aset, termasuk 17.814,8626 USDC, 1,4085 WBTC, dan 119,871 WETH.
WBTC ditukarkan menjadi 63.5596 WETH
USDC ditukarkan menjadi 9.7122 WETH
Sebanyak 193.1428 WETH telah ditransfer ke layanan pencampuran koin tertentu
Sumber dana awal penyerang berasal dari 0,3 ETH yang ditransfer dari layanan pencampuran koin tertentu.
Ringkasan dan Saran
Serangan kali ini berfokus pada pemanfaatan karakteristik penyimpanan sementara yang menyimpan nilai selama seluruh periode transaksi, melewati verifikasi izin fungsi panggilan balik. Disarankan agar pihak proyek segera menggunakan tstore(key, 0) untuk membersihkan nilai dalam penyimpanan sementara setelah pemanggilan fungsi selesai sesuai dengan logika bisnis. Selain itu, audit kode kontrak dan pengujian keamanan harus diperkuat untuk menghindari situasi serupa.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
15 Suka
Hadiah
15
3
Bagikan
Komentar
0/400
CommunitySlacker
· 13jam yang lalu
Satu lagi proyek yang menjadi mesin penarikan.
Lihat AsliBalas0
BlockchainDecoder
· 13jam yang lalu
Dari sudut pandang teknis, ini adalah penggunaan penyimpanan transien yang tidak tepat.
Lihat AsliBalas0
StealthMoon
· 13jam yang lalu
Apakah ini lagi-lagi celah penyimpanan sementara? Harap lebih waspada.
Proyek Ethereum mengalami serangan senilai 300.000 dolar AS, cacat penyimpanan sementara menjadi penyebab utamanya.
Kerentanan penyimpanan sementara menyebabkan proyek Ethereum diserang senilai 300.000 dolar
Pada tanggal 30 Maret 2025, sebuah sistem pemantauan keamanan mendeteksi bahwa proyek perdagangan berlever di jaringan Ethereum mengalami serangan, mengakibatkan kerugian lebih dari 300.000 dolar AS. Tim keamanan telah menganalisis peristiwa ini dan kini membagikan hasilnya sebagai berikut:
Pengetahuan Latar Belakang
Versi Solidity 0.8.24 memperkenalkan fitur penyimpanan sementara (transient storage), yang merupakan lokasi penyimpanan data baru. Ciri utama dari fitur ini adalah data hanya berlaku selama periode eksekusi transaksi saat ini, dan secara otomatis dihapus setelah transaksi selesai. Akses dan modifikasi dilakukan melalui dua instruksi EVM baru, TSTORE dan TLOAD.
Penyimpanan transien memiliki ciri-ciri berikut:
Penyebab Kerentanan
Penyebab mendasar dari peristiwa ini adalah nilai yang disimpan secara sementara menggunakan tstore dalam fungsi tidak dibersihkan setelah pemanggilan fungsi berakhir. Ini memungkinkan penyerang untuk memanfaatkan karakteristik ini untuk membangun alamat jahat tertentu dan melewati pemeriksaan izin untuk mentransfer token.
Proses Serangan
Penyerang membuat dua token jahat A dan B, dan di suatu DEX, mereka menciptakan kolam untuk kedua token tersebut 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, alamat kolam DEX dan jumlah yang dicetak disimpan sementara secara berurutan.
Penyerang membuat kontrak jahat dengan alamat yang sama dengan nilai penyimpanan sementara kedua.
Penyerang memanggil fungsi callback dari kontrak Vault secara langsung melalui kontrak jahat tersebut untuk mengeluarkan token. Karena nilai dalam penyimpanan transien tidak dihapus, pemeriksaan identitas dilalui dengan salah.
Terakhir, penyerang memanggil fungsi callback dari kontrak Vault melalui serangan pada kontrak (token A), dan mengeluarkan token lain dari kontrak Vault (WBTC, WETH) untuk mendapatkan keuntungan.
Analisis Aliran Dana
Menurut analisis di blockchain, penyerang mencuri sekitar 300.000 dolar AS aset, termasuk 17.814,8626 USDC, 1,4085 WBTC, dan 119,871 WETH.
Sumber dana awal penyerang berasal dari 0,3 ETH yang ditransfer dari layanan pencampuran koin tertentu.
Ringkasan dan Saran
Serangan kali ini berfokus pada pemanfaatan karakteristik penyimpanan sementara yang menyimpan nilai selama seluruh periode transaksi, melewati verifikasi izin fungsi panggilan balik. Disarankan agar pihak proyek segera menggunakan tstore(key, 0) untuk membersihkan nilai dalam penyimpanan sementara setelah pemanggilan fungsi selesai sesuai dengan logika bisnis. Selain itu, audit kode kontrak dan pengujian keamanan harus diperkuat untuk menghindari situasi serupa.