Kerentanan penyimpanan sementara menyebabkan proyek on-chain diserang sebesar 300.000 dolar AS, saran pencegahan dari para ahli.

robot
Pembuatan abstrak sedang berlangsung

Analisis Insiden Serangan $300.000 yang Disebabkan oleh Kerentanan Penyimpanan Sementara di On-Chain

Pada 30 Maret 2025, sebuah proyek perdagangan leveraj on-chain diserang, menyebabkan kerugian aset lebih dari 300.000 dolar. Tim keamanan telah melakukan analisis mendalam terhadap peristiwa ini, dan berikut adalah hasilnya:

Latar Belakang

Serangan terjadi di jaringan Ethereum, menargetkan sebuah proyek perdagangan dengan leverage. Penyerang memanfaatkan celah terkait penyimpanan transien dalam kontrak proyek tersebut.

Dampak Fatal: Sebuah Perampokan 300.000 Dolar AS di on-chain yang Dipicu oleh Penyimpanan Transien

Pengetahuan Dasar

Versi Solidity 0.8.24 memperkenalkan fitur penyimpanan sementara (transient storage), yang merupakan lokasi penyimpanan data baru. Ciri-ciri utamanya meliputi:

  • Biaya gas rendah: Operasi TSTORE dan TLOAD mengkonsumsi tetap 100 gas
  • Persistensi dalam transaksi: Data tetap valid selama periode transaksi.
  • Pembersihan otomatis: secara otomatis direset ke nol setelah transaksi selesai

Dampak Mematikan: Sebuah perampokan $300.000 di on-chain yang dipicu oleh penyimpanan transien

Penyebab Kerentanan

Penyebab mendasar dari serangan ini adalah bahwa nilai yang disimpan secara transien menggunakan tstore dalam kontrak tidak dihapus setelah pemanggilan fungsi selesai. Ini memungkinkan penyerang memanfaatkan fitur ini untuk membangun alamat tertentu, melewati pemeriksaan izin, dan mengeluarkan token.

Kekurangan Fatal: Sebuah Perampokan 300.000 Dolar AS di on-chain yang Diakibatkan oleh Penyimpanan Transien

Proses Serangan

  1. Penyerang membuat dua token jahat A dan B, dan menciptakan kumpulan likuiditas untuk mereka di suatu DEX.
  2. Panggil fungsi initialize dari kontrak tujuan untuk membuat pasar perdagangan dengan leverage menggunakan token A sebagai jaminan dan token B sebagai token utang.
  3. Memanggil fungsi mint untuk menyimpan token B yang dicetak sebagai token leverage, di mana dua operasi penyimpanan sementara dilakukan selama proses tersebut.
  4. Buat kontrak jahat yang memiliki alamat yang sama dengan nilai penyimpanan transien kedua.
  5. Dengan memanggil fungsi callback kontrak target melalui kontrak jahat ini, melewati pemeriksaan izin untuk mentransfer token.
  6. Terakhir, dengan menyerang kontrak (token A) kembali memanggil fungsi callback, mentransfer token lain (seperti WBTC, WETH) untuk mendapatkan keuntungan.

Dampak Mematikan: Sebuah Perampokan 300.000 Dolar AS di On-chain yang Dipicu oleh Penyimpanan Transien

Dampak Mematikan: Sebuah Perampokan $300.000 yang Dipicu oleh Penyimpanan Transien

Dampak Mematikan: Sebuah perampokan senilai 300 ribu dolar yang dipicu oleh penyimpanan sementara di on-chain

Dampak Fatal: Sebuah Perampokan 300 Ribu Dolar yang Dipicu oleh Penyimpanan Transien

Kejahatan on-chain senilai 300.000 dolar yang disebabkan oleh penyimpanan transien

Kekurangan Fatal: Sebuah Perampokan $300.000 di链上 yang Dipicu oleh Penyimpanan Transien

Dampak Mematikan: Sebuah Perampokan $300.000 di on-chain yang Dipicu oleh Penyimpanan Transien

Residue Mematikan: Sebuah Perampokan $300.000 yang Dipicu oleh Penyimpanan Transien

Dampak Mematikan: Sebuah Perampokan $300.000 on-chain yang Dipicu oleh Penyimpanan Transien

Dampak Mematikan: Sebuah Pencurian Senilai 300 Ribu Dolar yang Dipicu oleh Penyimpanan Transien

Dampak Fatal: Sebuah Perampokan 300 Ribu Dolar di On-Chain yang Dipicu oleh Penyimpanan Transien

Residue Mematikan: Sebuah Perampokan 300.000 Dolar AS di On-Chain yang Dipicu oleh Penyimpanan Transien

Analisis Aliran Dana

Penyerang berhasil mencuri sekitar 300.000 dolar aset, termasuk:

  • 17.814,8626 USDC
  • 1.4085 WBTC
  • 119.871 WETH

Kemudian, penyerang menukar WBTC dan USDC menjadi WETH, dan akhirnya mentransfer 193.1428 WETH ke suatu layanan pencampuran.

Modal awal penyerang (0,3 ETH) juga berasal dari layanan pencampuran koin tersebut.

Residue Mematikan: Sebuah Perampokan 300.000 Dolar AS di Chain yang Dipicu oleh Penyimpanan Transien

Kejahatan on-chain senilai 300.000 dolar yang disebabkan oleh penyimpanan transien

Ringkasan dan Saran

Inti dari serangan ini adalah memanfaatkan sifat penyimpanan sementara yang menjaga nilai tetap selama periode transaksi, sehingga dapat melewati verifikasi izin kontrak. Untuk mencegah serangan serupa, disarankan kepada pihak proyek:

  1. Segera setelah pemanggilan fungsi selesai, gunakan tstore(key, 0) untuk menghapus nilai dalam penyimpanan sementara.
  2. Memperkuat audit kode kontrak dan pengujian keamanan.
  3. Gunakan fitur bahasa baru dengan hati-hati, dan pahami potensi risikonya.
WBTC-0.3%
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.
  • Hadiah
  • 6
  • Bagikan
Komentar
0/400
PensionDestroyervip
· 7jam yang lalu
Lagi ada suckers yang mengirim.
Lihat AsliBalas0
TestnetFreeloadervip
· 7jam yang lalu
Aduh, ini gratisan banget ya, sampai proyek sendiri saja tidak bisa dipegang.
Lihat AsliBalas0
LootboxPhobiavip
· 7jam yang lalu
Sial, sial, ada saudara lain yang terkena masalah.
Lihat AsliBalas0
BearMarketMonkvip
· 7jam yang lalu
Mengambil keuntungan juga telah menarik kontrak.
Lihat AsliBalas0
DeFiAlchemistvip
· 7jam yang lalu
ah, lagi-lagi domba korban untuk seni gelap eksploitasi kontrak pintar... *mengatur bola kristal* kerentanan penyimpanan sementara ini seperti retakan dalam segel hermetik alkimia protokol
Lihat AsliBalas0
TestnetNomadvip
· 7jam yang lalu
Sangat buruk, saya telah dicabuti lagi.
Lihat AsliBalas0
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)