Token Approval Phishing: The Silent Wallet Drainer
Approval phishing drains wallets without ever touching your seed phrase. You sign a permission, and later the attacker moves your tokens. Here is how it works and how to defend against it.
Dive Deeper with AI
Click → prompt copied → paste in AI chat
Approval phishing drains a wallet without ever touching the seed phrase. When you "approve" a token to a smart contract, you grant that contract permission to move those tokens on your behalf. Scammers trick you into approving a malicious contract, then transfer everything out later, at a time of their choosing. Nothing about your recovery phrase is exposed — the theft is a permission you signed yourself.
That is the short answer. The rest of this page explains the machinery behind that permission, why some approvals look completely harmless, and how to shut the door.
Why an approval is not the same as a transfer
On Ethereum and every EVM chain, ERC-20 tokens do not sit "in" your wallet the way cash sits in a pocket. Balances live inside the token contract, mapped to your address. To let a dApp — a DEX, a lending market, a mint page — move your tokens, you send an approve transaction that sets an allowance: an amount the spender contract is permitted to pull from you.
This is normal and necessary. Uniswap cannot swap your USDC until you approve it. The problem is that the allowance persists after the trade. It stays live until you revoke it or spend it down. And if the spender is malicious, the allowance is a standing withdrawal right over your balance.
For NFTs the equivalent is setApprovalForAll. Instead of an amount, it flips a boolean that grants a contract permission to move every NFT you hold in that collection — present and future. One signature, the whole collection.
Unlimited approvals and gasless signatures
Two design conveniences make this far more dangerous than it needs to be.
The first is the unlimited approval. To avoid paying gas for a new approval before every trade, most dApps default to requesting 2^256 - 1 — effectively an infinite allowance. Convenient, and also a blank cheque. If that spender is ever compromised or was malicious to begin with, it can drain the entire balance of that token, not just the amount you meant to trade.
The second is Permit and Permit2. These let you approve tokens by signing an off-chain message instead of sending an on-chain transaction — a gasless approval. This is precisely why they are dangerous. A malicious site presents what looks like a harmless "sign to continue" or "sign to log in" prompt. There is no gas fee, no obvious transfer, nothing that screams transaction. But that signature is a valid, reusable permission that lets the attacker's contract pull your tokens later. Many drainer kits now lead with Permit2 signatures for exactly this reason.
How the scam reaches you
The contract is only half of it. The attacker still has to get you in front of the approve prompt believing it is legitimate. The common delivery methods:
- Fake mint sites — a "limited drop" with a countdown, where the mint button actually requests
setApprovalForAllor a Permit signature. - Fake airdrop claims — "you are eligible, connect and claim," where claiming approves a drainer.
- Cloned dApps — a pixel-perfect copy of a real exchange or bridge on a lookalike domain, often pushed through ads or a hijacked Discord.
- "Wallet validation" prompts — a pop-up claiming your wallet must be "verified," "synced," or "revalidated," which is just an approval in disguise.
The through-line is urgency plus a request to sign. See phishing website clones for how the front end is faked, and wallet drainer kits for the industry behind the back end.
What each signature actually grants
| Signature / approval type | What it grants | Risk |
|---|---|---|
ERC-20 approve (limited) | Spender can pull up to a set amount of one token | Capped at that amount |
ERC-20 approve (unlimited) | Spender can pull the entire balance of one token, indefinitely | Full loss of that token |
| Permit / Permit2 signature | Off-chain, gasless approval — same power as approve, often unlimited | High: looks like a harmless signature |
setApprovalForAll (NFT) | Spender can move every NFT in a collection, now and future | Full loss of that collection |
| Plain transfer transaction | Moves a specific amount once | You see exactly what leaves |
The pattern: the more a request hides what it authorizes — no amount, no visible transfer, no gas — the more it deserves suspicion.
How to defend against it
- Read what you are signing. Modern wallets decode approvals and Permit messages. If a prompt shows
setApprovalForAll, an unlimited amount, or a spender you do not recognize, stop. - Prefer limited approvals. When a dApp lets you set a custom allowance, approve only what the trade needs. It costs a little more gas over time and removes the blank cheque.
- Use an approval-revoke tool. Services in this category — revoke.cash and the block-explorer token-approval checkers (for example Etherscan's) — list every allowance your address has granted and let you revoke them.
- Revoke stale approvals periodically. Approvals from dApps you no longer use are pure standing risk. Clear them.
- Mint from a separate hot wallet. Keep a wallet with a small balance for minting and claiming. If it approves something bad, the loss is bounded. Never mint from the wallet holding your main funds.
The honest limits
Revoking is not free. Each revocation is an on-chain transaction and costs gas, which is why people let approvals accumulate.
More importantly, this defends against future theft only. If a drainer has already pulled your tokens, revoking does nothing — an executed transfer cannot be reversed. The window to act is before the attacker triggers the pull, not after.
And a point that surprises people: a hardware wallet does not stop this. Hardware wallets protect the private key from extraction. They do not stop you from signing a malicious approval, because you are willingly signing it. The device shows the prompt; you confirm it. The only defense is understanding what the prompt authorizes — which is also the last line of defense for your seed phrase security.
FAQ
Can approval phishing steal my crypto without my seed phrase? Yes. That is the whole mechanism. You never reveal the phrase. You sign an approval or a Permit message that grants a contract permission to move your tokens, and the attacker uses that permission later. The seed phrase stays private the entire time.
What is an unlimited approval? An allowance set to the maximum possible value, so the spender contract can move your entire balance of that token, repeatedly, with no cap and no expiry. Many dApps request it by default to save you gas — but it is a blank cheque if the spender turns out to be malicious.
Are gasless Permit signatures dangerous? They can be. A Permit or Permit2 signature carries the same authority as an on-chain approval but arrives as a plain "sign this message" prompt with no gas fee, so it looks harmless. Treat any signature request that mentions a token, a spender, or a Permit as seriously as a transaction.
How do I revoke token approvals? Connect your wallet to an approval-revoke tool such as revoke.cash, or use your block explorer's token-approval checker (for example on Etherscan). Review the list of allowances your address has granted, and revoke anything unlimited, unfamiliar, or belonging to a dApp you no longer use. Each revocation costs gas.
Read also
Wallet Drainer Kits: The Scam-as-a-Service Economy
A wallet drainer is malicious code sold as a ready-made kit that empties your wallet the moment you sign a crafted transaction. Here is how the business works and how to defend against it.
Fake Airdrop Scams and How to Spot Them
A fake airdrop dangles free tokens to get you onto a site that drains your wallet — through a malicious approval, an upfront fee, or a poisoned scam token already sitting in your address. Here is how each variant works and how to stay clean.
Cold vs Hot Wallets: When Each One Makes Sense
A hot wallet is online and convenient; a cold wallet keeps keys offline and safe. The real decision is matching your exposure to how often you actually need access.