All articles
Web3 FoundationsJuly 27, 20269 min read

Permit phishing: how a gasless signature drains your wallet

A security auditor breaks down permit and signature phishing: how EIP-2612 permit and Permit2 turn a gasless sign-in into a full drain, and how to stay safe.

By Carlos (Bloqarl)

A site asks you to "sign in with your wallet" or "sign to verify you own this address." It even reassures you: it is free, it is gasless, no transaction, just a signature. That framing is designed to switch off your caution, because everyone knows signatures are how you log in to Web3 apps. You sign. No gas is spent, no transaction appears in your history, nothing looks like it happened. And that is precisely the moment your wallet can be emptied.

This is permit phishing, also called signature phishing, and it is more dangerous than the approval scams most people have learned to watch for. With a normal approval, at least a transaction shows up. With a permit, the theft is authorized entirely off-chain, by a signature that costs nothing and leaves no trace on your balance until the attacker decides to use it. As a security auditor, this is the one I see catch experienced users, not just beginners, because it defeats the instinct that "if no gas moved, nothing dangerous happened." A gasless wallet signature can carry the full power of an on-chain transaction. Understanding why is the difference between signing a login and signing away your funds.

TL;DR

  • Permit phishing (signature phishing) tricks you into signing a gasless off-chain message that authorizes an attacker to move your tokens — no transaction, no gas, no immediate trace.
  • It abuses EIP-2612 permit and Uniswap's Permit2, real standards built to make token approvals cheaper and smoother.
  • Because it is gasless and framed as a "sign-in" or "verify," it slips past people who would reject an obvious approval transaction.
  • A crypto whale lost $55.47M in DAI in August 2024 to a single malicious signature (The Block); wallet drainers stole about $494M across 2024 (Scam Sniffer).
  • Your defense: treat every signature like a transaction, use a clear-signing wallet, and confirm on hardware before you sign typed data you do not fully understand.

What is permit phishing and signature phishing?

Permit phishing is a scam that tricks you into signing a gasless off-chain message — an EIP-2612 permit or a Permit2 approval — that grants an attacker permission to move your tokens, which they then redeem on-chain to drain your wallet. Signature phishing is the broader name for the same idea: any phishing attack whose payload is a signature rather than a transaction.

Here is the mechanic that makes it work. There are two things a wallet can sign. A transaction changes state on-chain and costs gas — sending tokens, calling a contract. A signature is just a cryptographically signed message; on its own it costs nothing and touches nothing. Most "sign in with wallet" flows use harmless signatures to prove you control an address. Permit phishing exploits the fact that some signatures are not harmless at all — a permit signature is a fully valid, off-chain authorization to spend your tokens. The scam hides a spending permission inside something that looks like a login.

How does EIP-2612 permit actually work?

EIP-2612 added a permit function to ERC-20 tokens so you can approve a spender with a signature instead of a transaction. Normally, granting an approval is itself an on-chain transaction that costs gas. permit moves that step off-chain: you sign a structured EIP-712 message containing an owner, a spender, a value (amount), a deadline, and a nonce. That signature is the approval. Anyone holding it can submit it on-chain to activate the allowance, and then move your tokens.

That is genuinely useful. It saves a transaction, saves gas, and makes onboarding smoother — you sign once and the app sponsors the on-chain step. But read what you just authorized: a signed permit with an unlimited value and a far-off deadline hands the spender the right to drain that token from your wallet, gaslessly, at any point before the deadline. The attacker does not need a second confirmation from you. They already have your signature.

What is Uniswap Permit2 and why does it matter here?

Permit2 is a standalone smart contract from Uniswap that brings permit-style, signature-based approvals to every ERC-20 token — including the many that never implemented EIP-2612 natively, like older versions of USDC, USDT, and WETH (revoke.cash). It is widely integrated and, used legitimately, it is a real UX improvement: you approve the Permit2 contract once, then authorize individual apps with cheap off-chain signatures.

For an attacker, Permit2 matters for one reason: it normalizes the exact behavior the scam depends on. Because so many legitimate apps now ask you to sign Permit2 messages, signing typed data to "approve" a token no longer feels unusual. The phishing signature blends into a flow you have performed dozens of times. That is why signature phishing has scaled — the malicious ask looks identical to the honest one, and both are gasless.

Why can a gasless "sign-in" signature drain everything?

Because gasless does not mean powerless. The signature you produce is a portable, valid authorization, and the attacker pays the gas to redeem it — which is why the cost never lands on you as a warning sign. When your wallet shows a plain "signature request" with no ETH leaving and no gas fee, your brain files it under "safe." The attacker is counting on exactly that reflex.

Play out the scenario from the permit phishing drill in Defense: a "check your eligibility" site says sign in with your wallet, it's free and gasless, no transaction, just a signature to prove you own the address. If your wallet is blind-signing, you see an opaque request and a reassuring label. What you are actually signing is a permit naming an unknown spender, an unlimited amount, and a 30-day deadline — permission to spend all of your USDC. Sign it, and the attacker holds a valid approval. They submit it themselves and sweep your balance in one transaction. You never saw a "transfer" prompt, because you already gave them the right to transfer.

This is the same authorize-now, drain-later skeleton as approval phishing, with the danger dialed up: there is no transaction at signing time to make you hesitate. If you have not read that piece yet, read it — the two attacks share a defense mindset, and the wider how Web3 users actually get hacked pillar shows where both sit among the delivery tricks that put these pages in front of you.

What happened to the $55M DAI whale?

On August 20, 2024, a crypto whale lost $55.47 million — 55,473,618 DAI — to a single malicious signature, in an attack attributed to the Inferno Drainer phishing kit (The Block, Halborn). The victim was tricked into signing a message that transferred control of the DSProxy contract holding their Maker vault. Once the attacker controlled it, they reset the owner to their own address and minted out the DAI. It was, for a period, the largest single wallet-drainer theft of the year, in a year where drainers took roughly $494M in total (Scam Sniffer 2024 report).

The technical detail — DSProxy ownership rather than a literal ERC-2612 permit — matters less than the shape, and the shape is the lesson: one signature the victim did not fully read handed over standing authority, and the drain followed on the attacker's schedule. Whether the payload is a permit, a Permit2 approval, or a proxy-ownership transfer, the failure point is identical. A signature was treated as harmless because it was gasless. As an auditor, that is the single assumption I want you to delete.

How do I protect myself from signature phishing?

You defend against permit phishing by refusing to treat any signature as automatically safe. A few concrete habits:

  • Treat every signature like a transaction. Before you sign, ask what it authorizes. A genuine "sign-in" proves address ownership and grants no spending power. If a signature names a spender, a value/amount, or a deadline, it is an approval — not a login.
  • Use a clear-signing wallet. Wallets like Rabby, and hardware wallets that support clear-signing, decode typed data into human-readable terms so you can see "allow 0xBAD… to spend all your USDC" instead of an opaque hash. Turn clear-signing on and blind-signing off.
  • Confirm on hardware. For any meaningful balance, a hardware wallet that shows the decoded request on its own screen is your last line of defense against a compromised or deceptive front-end.
  • Reach apps yourself. Type the URL or use a bookmark. Never sign anything you arrived at through a DM, ad, or "you're eligible" message.
  • Revoke what you can. Off-chain permit signatures cannot be revoked before they are used, but Permit2 and standard allowances can — check and cancel them at revoke.cash. And if you suspect you signed a bad message, move funds to a fresh wallet rather than hoping the signature expires.

For the wider scam landscape these signatures live inside, common crypto scams maps the lures, and the permit phishing drill lets you practice catching one with a live wallet prompt before it costs you anything real.

Related questions

Is a gasless signature safe to sign? Not automatically. Gasless only means you pay no gas at signing time — it says nothing about what the signature authorizes. A permit or Permit2 signature is a fully valid, off-chain approval that lets someone spend your tokens, and the attacker pays the gas to redeem it. Always read what a signature grants; if it names a spender, an amount, or a deadline, it is an approval, not a harmless login.

What is the difference between approval phishing and permit phishing? Both trick you into authorizing an attacker to move your tokens, then drain later. Approval phishing uses an on-chain transaction (approve, increaseAllowance, setApprovalForAll) that costs gas and appears in your history. Permit phishing uses a gasless off-chain signature (EIP-2612 permit or Permit2), so nothing shows up until the attacker redeems it. Permit phishing is sneakier precisely because there is no transaction at signing time to make you pause.

Can I revoke a permit signature after I sign it? Usually not before it is used. A raw off-chain permit signature is valid until its deadline and cannot be cancelled the way an on-chain allowance can. This is why permit phishing is so dangerous. Permit2 approvals and standard token allowances can be revoked at revoke.cash, but if you signed a raw permit to an attacker, the safest move is to transfer your funds to a new wallet immediately rather than wait for the deadline.

How did the $55 million DAI whale get drained by one signature? On August 20, 2024, the victim signed a malicious message that transferred control of the DSProxy contract holding their Maker vault, letting the attacker reset ownership and mint out 55,473,618 DAI — about $55.47M, using the Inferno Drainer kit. It shows the core of signature phishing: a single unread signature handed over standing authority, and the drain followed on the attacker's schedule, with no separate transfer prompt.

What is clear-signing and why does it matter? Clear-signing means your wallet decodes a signature request into plain language — "allow this address to spend all your USDC" — instead of showing an opaque hash you cannot evaluate. Blind-signing shows the hash and hides the danger. Turning on clear-signing, ideally confirmed on a hardware wallet's own screen, is the most effective defense against permit and signature phishing, because it reveals the real ask hiding behind a friendly "sign in" label.

Tagged

Wallet SecurityCrypto ScamsWeb3 Security