Token Approval Exploit

Token approval exploit terjadi ketika pengguna menandatangani transaksi approve() yang memberikan allowance ERC-20 — sering kali tak terbatas — kepada smart contract berbahaya atau yang kemudian disusupi, yang kemudian dapat memanggil transferFrom() untuk menarik semua token yang disetujui dari dompet pengguna.

Persetujuan itu sendiri bersifat on-chain dan permanen sampai dicabut. Sebagian besar pengguna tidak pernah memantau persetujuan yang ada, menyisakan jutaan dolar yang terus-menerus berisiko dari interaksi masa lalu dengan protokol yang dieksploitasi.


Cara Kerja Persetujuan ERC-20

Standar ERC-20 memerlukan proses dua langkah untuk transfer token yang dimulai kontrak:

  1. approve(spender, amount) — Pengguna memberikan izin alamat kontrak (spender) untuk memindahkan hingga amount token atas nama mereka. Dipanggil sekali.
  2. transferFrom(from, to, amount) — Kontrak yang disetujui dapat memanggil ini kapan saja untuk memindahkan token dari dompet pengguna ke alamat mana pun, hingga jumlah yang disetujui.

Sebagian besar antarmuka DeFi menggunakan type(uint256).max — efektif tak terbatas — untuk parameter amount sehingga pengguna tidak perlu menyetujui lagi pada interaksi berikutnya. Kompromi UX ini menciptakan risiko persisten.

Vektor Serangan

1. Persetujuan Tak Terbatas + Eksploitasi Kemudian:

Pengguna menyetujui protokol DeFi yang sah (mis. DEX, platform pinjaman). Protokol kemudian dieksploitasi atau memiliki bug. Kontrak eksploitasi penyerang memanggil transferFrom() menggunakan persetujuan tak terbatas korban yang ada untuk menguras dompet mereka — tanpa pengguna menandatangani apa pun yang baru.

2. Phishing + Pengosongan Langsung:

Pengguna diarahkan ke situs phishing dan ditipu untuk menyetujui kontrak berbahaya. Penyerang langsung menguras semua token yang disetujui melalui transferFrom().

3. Serangan Tanda Tangan Permit (tanpa gas):

Token yang mematuhi EIP-2612 (ERC-20 dengan permit) memungkinkan persetujuan melalui tanda tangan off-chain — tanpa biaya gas, tanpa transaksi on-chain. Penyerang menyajikan permintaan penandatanganan palsu; pengguna menandatangani apa yang tampak sebagai pesan tidak berbahaya; penyerang mengirimkan permit on-chain, langsung mendapatkan allowance tak terbatas.

Cara Melindungi Diri

  • Cabut persetujuan yang tidak terpakai menggunakan Revoke.cash, Etherscan Token Approvals, atau Rabby Wallet
  • Gunakan persetujuan terbatas — hanya setujui jumlah tepat yang dibutuhkan per transaksi
  • Periksa URL sebelum menandatangani — phishing bergantung pada perhatian yang tidak penuh
  • Audit persetujuan secara berkala — terutama setelah protokol yang Anda gunakan dieksploitasi

Kritik

  • Masalah desain UX — Default “approve unlimited” adalah pilihan UX yang secara sadar dibuat oleh tim protokol demi kenyamanan pengguna; industri diketahui bahaya ini dan tidak mengubahnya secara mengejutkan.
  • Beban pada pengguna — Meminta pengguna biasa untuk melacak dan mencabut persetujuan ERC-20 di puluhan protokol adalah standar keamanan yang tidak realistis.
  • Skala masalah — Ratusan juta dolar telah dicuri melalui vektor persetujuan token; ini adalah salah satu metode serangan kripto paling umum.

Sentimen Media Sosial

Di X/Twitter, peringatan tentang approval exploit sering muncul setelah setiap eksploitasi DeFi besar. Di Telegram kripto Indonesia, scam approval adalah salah satu metode yang paling sering diperingatkan oleh komunitas dan moderator grup. Terakhir diperbarui: 2026-04

Istilah Terkait

Lihat Juga

Sumber

  • Revoke.cash: alat pencabutan persetujuan token dengan panduan cara menggunakannya (https://revoke.cash) — sumber daya langsung untuk melindungi diri dari approval exploit.
  • OpenZeppelin: dokumentasi ERC-20 approve() dan transferFrom() beserta peringatan keamanan (https://docs.openzeppelin.com/contracts/4.x/erc20) — referensi teknis standar.
  • Rekt.news: rekaman kasus approval exploit yang mengakibatkan kerugian jutaan dolar (https://rekt.news) — studi kasus nyata dari berbagai insiden keamanan berbasis approval.