Keamanan Aset

Bahaya Approval Token Tak Terbatas yang Anda Tandatangani

Approve token unlimited berarti kontrak bisa menguras seluruh saldo, bukan hanya jumlah transaksi. Kenali cara kerjanya dan cara membatasi eksposur.

Keamanan WalletDeFiToken Approval

Satu tanda tangan “Approve” di dompet Anda bisa memberi sebuah kontrak izin menguras seluruh saldo token tertentu — bukan cuma sejumlah yang sedang Anda transaksikan — dan izin itu tetap menempel di dompet Anda sampai dicabut manual, bertahun-tahun kemudian sekalipun.

Ini bukan bug. Ini cara kerja standar ERC-20 yang dimanfaatkan pihak jahat dan kadang dipakai ceroboh oleh dApp yang sah.

Bagaimana Mekanisme Approval Bekerja

Token ERC-20 tidak bisa langsung “ditarik” oleh smart contract lain tanpa izin eksplisit dari pemilik. Izin ini diberikan lewat fungsi approve, yang menetapkan berapa banyak token yang boleh dipindahkan kontrak tersebut lewat transferFrom — kapan saja, tanpa perlu tanda tangan tambahan dari Anda.

Masalahnya ada di angka yang diminta. Banyak dApp — termasuk yang legitimate seperti DEX dan protokol lending — meminta approval dengan nilai maksimum yang secara teknis “tak terbatas” (angka 2^256-1), supaya Anda tidak perlu approve ulang setiap kali bertransaksi. Ini nyaman, tapi artinya kontrak tersebut punya wewenang menarik seluruh saldo token itu, selamanya, sampai Anda mencabutnya.

Kalau kontrak itu di-hack di kemudian hari, atau kalau Anda baru sadar approval itu sebenarnya diberikan ke situs phishing yang meniru dApp asli, dana Anda bisa dikuras dalam satu transaksi — bahkan berbulan-bulan setelah approval awal ditandatangani, tanpa Anda melakukan apa pun lagi selain approve itu di masa lalu. Ini beda dari pencurian seed phrase: pemilik dompet masih memegang kunci, tapi kontrak pihak ketiga punya hak menggerakkan isinya.

Lihat definisi teknisnya di kamus infinite approval dan bagaimana pola ini disalahgunakan di kamus approval scam.

Kenapa Approval Unlimited Jadi Default di Banyak dApp

Alasan teknisnya masuk akal: kalau setiap transaksi swap atau stake harus diawali approve dengan jumlah persis, pengguna harus membayar gas dua kali — sekali untuk approve, sekali untuk transaksi utamanya — setiap kali jumlah transaksi berbeda dari approval sebelumnya. Developer dApp menetapkan unlimited supaya pengguna cukup approve sekali, lalu bisa bertransaksi berkali-kali tanpa gas tambahan untuk approval ulang.

Ini keputusan desain yang wajar untuk protokol yang diaudit dan punya reputasi panjang. Masalahnya muncul ketika kebiasaan “approve unlimited lalu lanjut” ini dibawa pengguna ke situs yang belum tentu sama kredibelnya — atau ketika protokol yang tadinya legitimate mengalami eksploitasi kontrak di kemudian hari, sehingga approval lama yang masih aktif ikut jadi celah.

Berdasarkan laporan yang dipublikasikan sejumlah firma keamanan blockchain, sebagian besar dompet aktif menyimpan puluhan approval yang sudah tidak pernah dipakai bertahun-tahun, banyak di antaranya masih berstatus unlimited terhadap kontrak yang penggunanya sendiri sudah lupa pernah interaksi dengannya. Approval yang “tidur” seperti ini tidak berbahaya selama kontrak penerimanya tetap aman — tapi begitu kontrak itu di-hack, dieksploitasi, atau kepemilikannya berpindah ke pihak jahat, seluruh dompet yang masih memberi izin ke kontrak tersebut ikut terekspos tanpa peringatan apa pun.

Red Flag yang Bisa Anda Cek Hari Ini

  • Popup wallet menampilkan jumlah approval yang jauh lebih besar dari nilai transaksi yang sedang Anda lakukan, atau tertulis “unlimited”/angka sangat panjang.
  • dApp tidak menyediakan opsi mengubah jumlah approval — hanya tombol “Approve” tanpa detail spending cap.
  • Anda diminta approve token sebelum sempat melihat apa sebenarnya yang akan Anda lakukan di situs tersebut (swap, stake, atau lainnya belum jelas).
  • Situs baru atau tidak dikenal meminta approval untuk token bernilai besar di awal interaksi, padahal transaksi sesungguhnya kecil.
  • Anda tidak ingat kapan terakhir kali mengecek daftar approval aktif di dompet Anda — kalau sudah lebih dari beberapa bulan, itu sendiri sudah jadi tanda peringatan.

Langkah Mitigasi

  1. Baca angka approval sebelum menandatangani. Sebagian besar wallet modern (MetaMask, Rabby) menampilkan opsi mengubah jumlah dari “unlimited” ke jumlah spesifik — gunakan itu setiap kali memungkinkan, terutama untuk token bernilai besar.
  2. Batasi approval sesuai kebutuhan transaksi. Kalau Anda hanya perlu swap 100 USDC, jangan biarkan default approval untuk seluruh saldo Anda.
  3. Audit approval aktif secara berkala. Jadikan bagian dari rutinitas keamanan wallet Anda — lihat panduan lengkapnya di security checklist sebelum DeFi. Alat pengecekan approval seperti revoke.cash bisa membantu melihat daftar izin yang masih aktif dan mencabut yang tidak diperlukan.
  4. Pisahkan dompet berdasarkan fungsi. Gunakan dompet dengan saldo kecil untuk mencoba dApp baru atau ikut airdrop, dan simpan aset utama di dompet yang jarang memberi approval.
  5. Curigai dApp yang meminta approval sebelum menjelaskan alur transaksinya. Kalau urutan interaksi terasa aneh — approve dulu, jelaskan nanti — hentikan dan cek ulang situsnya. Lihat pola serupa di bahaya connect wallet ke dApp tidak dikenal.
  6. Jangan biarkan approval lama menumpuk. Setiap approval yang tidak lagi Anda pakai adalah pintu terbuka yang tidak perlu ada — mencabutnya tidak menghapus riwayat transaksi, hanya menutup akses ke depan.
  7. Prioritaskan audit untuk token bernilai besar dan stablecoin. Kalau Anda tidak sempat mengaudit semua approval sekaligus, mulai dari kontrak yang menyimpan izin terhadap token bernilai paling besar di dompet Anda — itu yang paling menarik bagi penyerang.
  8. Perhatikan protokol yang jarang Anda pakai lagi. dApp yang pernah populer tapi sudah lama tidak Anda buka berisiko lebih tinggi kalau kontraknya belakangan dieksploitasi tanpa Anda sadari, karena approval lama tetap aktif meski aktivitas Anda di sana sudah berhenti.

Tidak ada cara membuat approval sepenuhnya bebas risiko selama standar token bekerja seperti ini. Yang bisa Anda lakukan adalah mengecilkan jumlah yang dipertaruhkan dan memperpendek umur approval yang tidak lagi relevan.

Kalau Sudah Terlanjur

Kalau Anda baru sadar sudah memberi approval unlimited ke kontrak yang mencurigakan, atau saldo Anda mulai berkurang tanpa transaksi yang Anda lakukan sendiri, jangan tunggu — cabut approval tersebut secepatnya dan pindahkan sisa aset ke dompet baru sebelum mengecek lebih jauh. Langkah konkretnya ada di situasi approval scam, wallet mau drained.

⚠️ Disclaimer: Artikel ini bersifat edukatif, bukan saran keuangan atau investasi personal.

Mau Masuk Web3 Tanpa Rekening Bank?

Elite Vault WhaleX: join membership via USDC di Base Network — akses penuh tanpa proses bank tradisional.

Lihat Elite Vault →

Pertanyaan Umum

Kenapa approval token tak terbatas berbahaya?

Karena izin unlimited memberi smart contract hak menarik seluruh saldo token tersebut kapan saja, bukan hanya sejumlah yang Anda transaksikan saat itu — dan izin ini tetap aktif sampai Anda mencabutnya sendiri.

Apakah semua approval otomatis unlimited?

Tidak, tapi banyak dApp menetapkan unlimited sebagai default demi efisiensi gas, sehingga pengguna sering menandatangani tanpa sadar mengubah jumlahnya ke angka yang dibatasi.