Residual Mematikan: Kasus Perampokan $300.000 di on-chain yang Diterbitkan oleh Penyimpanan Transien
Pada 30 Maret 2025, sebuah perampokan on-chain senilai lebih dari 300.000 dolar AS terjadi di jaringan Ethereum. Menurut sistem pemantauan keamanan, proyek perdagangan terleverage SIR.trading diserang dan mengalami kerugian besar. Tim keamanan telah melakukan analisis mendalam terhadap peristiwa ini dan sekarang mengumumkan hasil penyelidikan sebagai berikut.
Latar Belakang Peristiwa
Versi Solidity 0.8.24 yang diluncurkan pada Januari 2024 memperkenalkan fitur penyimpanan sementara (transient storage). Ini adalah lokasi penyimpanan data baru yang dirancang untuk memberikan cara penyimpanan sementara yang efisien biaya dan efektif selama transaksi bagi para pengembang. Penyimpanan sementara diimplementasikan melalui dua instruksi EVM baru, TSTORE dan TLOAD, yang memiliki biaya gas rendah, ketahanan dalam transaksi, dan kemampuan untuk secara otomatis menghapus.
Alasan Serangan
Penyebab mendasar dari peristiwa ini adalah bahwa nilai yang digunakan dalam fungsi tstore untuk penyimpanan sementara tidak dihapus setelah pemanggilan fungsi selesai. Penyerang memanfaatkan karakteristik ini untuk membangun alamat jahat tertentu yang dapat melewati pemeriksaan izin, berhasil mentransfer token.
Proses Serangan
Penyerang membuat dua token jahat A dan B, dan di suatu DEX membuat kolam untuk kedua token tersebut dengan 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 secara berurutan dalam penyimpanan sementara.
Penyerang membuat kontrak jahat yang alamatnya sama dengan jumlah minting yang disimpan secara transien sebelumnya.
Penyerang memanggil fungsi uniswapV3SwapCallback dari kontrak Vault secara langsung melalui kontrak jahat tersebut untuk mengeluarkan token. Karena nilai dalam penyimpanan transien tidak dibersihkan, pemeriksaan identitas dilalui secara salah.
Terakhir, penyerang memanggil fungsi uniswapV3SwapCallback dari kontrak Vault melalui serangan kontrak (token A), untuk mengeluarkan token lain dari kontrak Vault (WBTC, WETH) dan mendapatkan keuntungan.
Analisis Aliran Dana
Menurut data dari alat analisis on-chain, penyerang mencuri sekitar 300.000 dolar aset, termasuk 17.814,8626 USDC, 1,4085 WBTC, dan 119,871 WETH. Selanjutnya, penyerang menukar dan mentransfer aset-aset ini:
WBTC ditukarkan menjadi 63.5596 WETH
USDC ditukar menjadi 9.7122 WETH
Sebanyak 193.1428 WETH telah ditransfer ke jaringan anonim tertentu
Perlu dicatat bahwa sumber dana awal penyerang berasal dari 0,3 ETH yang ditransfer dari jaringan anonim tertentu.
Ringkasan dan Saran
Serangan ini memanfaatkan sifat penyimpanan sementara yang tetap tidak berubah selama seluruh transaksi, berhasil menghindari verifikasi izin fungsi panggilan balik. Untuk mencegah kejadian serupa, disarankan kepada pihak proyek:
Berdasarkan logika bisnis, segera gunakan tstore(key, 0) untuk menghapus nilai dalam penyimpanan sementara setelah pemanggilan fungsi selesai.
Memperkuat audit kode kontrak dan pengujian keamanan, dengan fokus khusus pada risiko penggunaan fitur baru.
Implementasikan mekanisme verifikasi ganda, tidak hanya bergantung pada pemeriksaan identitas tunggal.
Secara berkala melakukan penilaian keamanan, untuk menemukan dan memperbaiki kerentanan potensial dengan tepat waktu.
Kejadian ini kembali mengingatkan kita untuk berhati-hati saat mengadopsi teknologi baru, dengan melakukan evaluasi menyeluruh terhadap dampak keamanannya. Sementara itu, audit keamanan yang berkelanjutan dan manajemen risiko sangat penting untuk melindungi aset pengguna.
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.
15 Suka
Hadiah
15
4
Bagikan
Komentar
0/400
P2ENotWorking
· 07-20 21:17
tim proyek lagi tidur nyenyak
Lihat AsliBalas0
BlockchainRetirementHome
· 07-20 21:16
Lagi melihat smart contract Dianggap Bodoh
Lihat AsliBalas0
DYORMaster
· 07-20 20:49
Tampilannya bagus tapi tidak berguna, tidak ada yang memeriksa kodenya.
Lihat AsliBalas0
DecentralizedElder
· 07-20 20:47
Kalau sudah dibawa ya sudah, proyek ini memang sangat buruk.
Kekurangan penyimpanan transien menyebabkan proyek Perdagangan Margin mengalami perampokan on-chain senilai 300.000 dolar.
Residual Mematikan: Kasus Perampokan $300.000 di on-chain yang Diterbitkan oleh Penyimpanan Transien
Pada 30 Maret 2025, sebuah perampokan on-chain senilai lebih dari 300.000 dolar AS terjadi di jaringan Ethereum. Menurut sistem pemantauan keamanan, proyek perdagangan terleverage SIR.trading diserang dan mengalami kerugian besar. Tim keamanan telah melakukan analisis mendalam terhadap peristiwa ini dan sekarang mengumumkan hasil penyelidikan sebagai berikut.
Latar Belakang Peristiwa
Versi Solidity 0.8.24 yang diluncurkan pada Januari 2024 memperkenalkan fitur penyimpanan sementara (transient storage). Ini adalah lokasi penyimpanan data baru yang dirancang untuk memberikan cara penyimpanan sementara yang efisien biaya dan efektif selama transaksi bagi para pengembang. Penyimpanan sementara diimplementasikan melalui dua instruksi EVM baru, TSTORE dan TLOAD, yang memiliki biaya gas rendah, ketahanan dalam transaksi, dan kemampuan untuk secara otomatis menghapus.
Alasan Serangan
Penyebab mendasar dari peristiwa ini adalah bahwa nilai yang digunakan dalam fungsi tstore untuk penyimpanan sementara tidak dihapus setelah pemanggilan fungsi selesai. Penyerang memanfaatkan karakteristik ini untuk membangun alamat jahat tertentu yang dapat melewati pemeriksaan izin, berhasil mentransfer token.
Proses Serangan
Penyerang membuat dua token jahat A dan B, dan di suatu DEX membuat kolam untuk kedua token tersebut dengan 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 secara berurutan dalam penyimpanan sementara.
Penyerang membuat kontrak jahat yang alamatnya sama dengan jumlah minting yang disimpan secara transien sebelumnya.
Penyerang memanggil fungsi uniswapV3SwapCallback dari kontrak Vault secara langsung melalui kontrak jahat tersebut untuk mengeluarkan token. Karena nilai dalam penyimpanan transien tidak dibersihkan, pemeriksaan identitas dilalui secara salah.
Terakhir, penyerang memanggil fungsi uniswapV3SwapCallback dari kontrak Vault melalui serangan kontrak (token A), untuk mengeluarkan token lain dari kontrak Vault (WBTC, WETH) dan mendapatkan keuntungan.
Analisis Aliran Dana
Menurut data dari alat analisis on-chain, penyerang mencuri sekitar 300.000 dolar aset, termasuk 17.814,8626 USDC, 1,4085 WBTC, dan 119,871 WETH. Selanjutnya, penyerang menukar dan mentransfer aset-aset ini:
Perlu dicatat bahwa sumber dana awal penyerang berasal dari 0,3 ETH yang ditransfer dari jaringan anonim tertentu.
Ringkasan dan Saran
Serangan ini memanfaatkan sifat penyimpanan sementara yang tetap tidak berubah selama seluruh transaksi, berhasil menghindari verifikasi izin fungsi panggilan balik. Untuk mencegah kejadian serupa, disarankan kepada pihak proyek:
Kejadian ini kembali mengingatkan kita untuk berhati-hati saat mengadopsi teknologi baru, dengan melakukan evaluasi menyeluruh terhadap dampak keamanannya. Sementara itu, audit keamanan yang berkelanjutan dan manajemen risiko sangat penting untuk melindungi aset pengguna.