Proyek Ethereum mengalami serangan senilai 300.000 dolar AS, cacat penyimpanan sementara menjadi penyebab utamanya.

robot
Pembuatan abstrak sedang berlangsung

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

Kejahatan On-Chain Senilai $300.000 yang Dihasilkan oleh Penyimpanan Transien

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.

Sisa Mematikan: Sebuah Perampokan On-Chain senilai 300.000 dolar yang dipicu oleh Penyimpanan Transien

Proses Serangan

  1. 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.

  2. 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.

  3. 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.

  4. Penyerang membuat kontrak jahat dengan alamat yang sama dengan nilai penyimpanan sementara kedua.

  5. 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.

  6. 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.

Sisa Mematikan: Sebuah Perampokan On-Chain Senilai $300.000 yang Dipicu oleh Penyimpanan Transien

Dampak Fatal: Sebuah Perampokan On-Chain Senilai $300.000 yang Dipicu oleh Penyimpanan Transien

Kejahatan On-Chain Senilai 300 Ribu Dolar yang Dipicu oleh Penyimpanan Transien

Residue Mematikan: Sebuah Perampokan On-Chain Senilai 300 Ribu Dolar yang Disebabkan oleh Penyimpanan Transien

Sisa Mematikan: Sebuah Perampokan On-Chain Senilai 300 Ribu Dolar yang Dipicu oleh Penyimpanan Transien

Kep residue mematikan: Sebuah perampokan on-chain senilai 300.000 dolar yang disebabkan oleh penyimpanan transien

Sisa Mematikan: Sebuah Perampokan On-Chain senilai $300,000 yang Dipicu oleh Penyimpanan Transien

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

Dampak Mematikan: Sebuah Perampokan Senilai 300 Ribu Dolar di Blockchain yang Dipicu oleh Penyimpanan Transien

Kejahatan On-Chain Senilai 300 Ribu Dolar yang Dipicu oleh Penyimpanan Transien

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

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.

Residu Mematikan: Sebuah Perampokan On-Chain Senilai $300.000 yang Dipicu oleh Penyimpanan Transien

Dampak Mematikan: Sebuah Perampokan On-Chain Senilai 300.000 Dolar yang Dipicu oleh Penyimpanan Transien

Dampak Mematikan: Sebuah Perampokan On-Chain Senilai $300,000 yang Dipicu oleh Penyimpanan Transien

Residue Mematikan: Sebuah Perampokan On-Chain Senilai $300.000 yang Dipicu oleh Penyimpanan Transien

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.

Lihat Asli
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.
  • Hadiah
  • 3
  • Bagikan
Komentar
0/400
CommunitySlackervip
· 13jam yang lalu
Satu lagi proyek yang menjadi mesin penarikan.
Lihat AsliBalas0
BlockchainDecodervip
· 13jam yang lalu
Dari sudut pandang teknis, ini adalah penggunaan penyimpanan transien yang tidak tepat.
Lihat AsliBalas0
StealthMoonvip
· 13jam yang lalu
Apakah ini lagi-lagi celah penyimpanan sementara? Harap lebih waspada.
Lihat AsliBalas0
  • Sematkan
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)