Reentrancy attack mengeksploitasi kerentanan dalam kode smart contract di mana sebuah fungsi melakukan panggilan eksternal ke kontrak lain sebelum statusnya sendiri sepenuhnya diperbarui — memungkinkan kontrak yang dipanggil (yang dikendalikan penyerang) untuk “masuk kembali” ke fungsi asli dan mengulangi panggilan sebelum invokasi pertama selesai; serangan reentrancy paling terkenal adalah hack The DAO pada Juni 2016, yang menguras 3,6 juta ETH dan secara langsung memicu hard fork Ethereum.
Cara Kerja
Pola Rentan: Fungsi Withdraw
Pertimbangkan kontrak withdrawal yang rentan dan disederhanakan:
“`solidity
// RENTAN – JANGAN DIGUNAKAN
mapping(address => uint) public balances;
function withdraw(uint amount) public {
require(balances[msg.sender] >= amount);
// Langkah 1: Kirim ETH ke pemanggil
(bool sent, ) = msg.sender.call{value: amount}(“”);
require(sent);
// Langkah 2: Update saldo SETELAH mengirim (URUTAN SALAH)
balances[msg.sender] -= amount;
}
“`
Langkah Serangan:
- Penyerang deposit 1 ETH →
balances[penyerang] = 1 ETH - Penyerang memanggil
withdraw(1 ETH) - Kontrak memeriksa:
balances[penyerang] >= 1 ETH✓ - Kontrak mengirim 1 ETH ke penyerang…
- Transfer ETH memicu fungsi
receive()penyerang - Fungsi
receive()segera memanggilwithdraw(1 ETH)lagi - Kontrak memeriksa lagi:
balances[penyerang] >= 1 ETH— MASIH BENAR (Langkah 2 belum dieksekusi!) - Kontrak mengirim 1 ETH lagi…
- Loop ini berlanjut sampai kontrak terkuras atau gas habis
Perbaikan — Pola Checks-Effects-Interactions:
Selalu perbarui status kontrak sebelum melakukan panggilan eksternal. Ini dinamakan pola CEI:
“`solidity
function withdraw(uint amount) public {
require(balances[msg.sender] >= amount);
balances[msg.sender] -= amount; // UPDATE DULU
(bool sent, ) = msg.sender.call{value: amount}(“”); // KEMUDIAN KIRIM
require(sent);
}
“`
Sejarah
- Juni 2016 — Hack The DAO: penyerang menguras 3,6 juta ETH (~$60 juta) dari dana venture terbesar Ethereum melalui reentrancy.**
- Juli 2016 — Hard fork Ethereum: komunitas memilih untuk mem-fork Ethereum untuk membalikkan hack; minoritas menolak, mempertahankan chain asli sebagai Ethereum Classic.**
- 2020 — Serangan reentrancy Uniswap + Lendf.me: $25 juta diuras melalui varian reentrancy cross-function.**
- 2023 — Curve Finance exploit: varian reentrancy di Vyper (kompiler bahasa smart contract) mempengaruhi beberapa pool Curve.**
Kesalahpahaman Umum
“Reentrancy hanya mempengaruhi kontrak lama yang buruk.”
Bahkan kontrak yang diaudit dapat memiliki kerentanan reentrancy dalam varian yang lebih canggih (cross-function reentrancy, read-only reentrancy). Serangan Curve Finance 2023 mengeksploitasi bug compiler di Vyper, bukan kode Solidity. Pola CEI dan ReentrancyGuard tetap penting untuk semua kontrak baru.
Kritik
- Bug yang sudah diketahui sejak 2016 tapi masih terjadi: DAO hack 2016 adalah contoh reentrancy attack terbesar dan paling terkenal dalam sejarah kripto. Meskipun sudah 8+ tahun berlalu dan solusi sudah diketahui dengan baik, reentrancy attack masih menjadi penyebab hack signifikan secara reguler.
- Audit tidak selalu mendeteksinya: Banyak kontrak yang diaudit oleh firma keamanan terkemuka masih mengandung kerentanan reentrancy yang tidak terdeteksi — terutama dalam kasus reentrancy lintas fungsi atau reentrancy read-only yang lebih kompleks.
- Celah antara dokumentasi dan implementasi: Developer yang memahami reentrancy di teori terkadang masih membuat kesalahan saat implementasi — terutama dalam pola pewarisan kontrak yang kompleks atau saat mengintegrasikan kode pihak ketiga.
Sentimen Media Sosial
- r/ethereum / r/ethdev: Reentrancy adalah topik wajib dalam komunitas developer Ethereum. Setiap reentrancy hack baru mendapat analisis mendalam dan dijadikan bahan pembelajaran. Penggunaan ReentrancyGuard dari OpenZeppelin direkomendasikan sebagai standar minimum.
- X/Twitter: Postmortem reentrancy hack mendapat perhatian besar dari komunitas keamanan kripto. Rekt.news dan peneliti keamanan seperti samczsun mendapat pengakuan luas untuk analisis mereka.
- Telegram (komunitas developer Indonesia): Reentrancy adalah kerentanan yang dikenal baik oleh developer smart contract Indonesia — menjadi bagian standar dari kurikulum pembelajaran Solidity dan audit kontrak.
Terakhir diperbarui: 2026-04
Istilah Terkait
Lihat Juga
- Mengapa Audit Smart Contract Gagal: Apa yang Post-Mortem Ungkapkan
- Bagaimana Bridge Kripto Bekerja — Dan Mengapa Selalu Jadi Target Hacker
- Tukar kripto dengan ChangeNOW
Sumber
- OpenZeppelin — Reentrancy Guard — solusi standar industri untuk mencegah reentrancy attack.
- Consensys — Reentrancy Attack Explained — analisis teknis tentang reentrancy attack dan praktik terbaik pencegahannya.
- Rekt.news — Reentrancy Hacks Database — database komprehensif hack kripto termasuk yang disebabkan reentrancy attack.