Ice Phishing and EIP-712 Signature Scams
Attackers trick users into signing off-chain permission messages that authorise a malicious contract to spend or transfer their tokens — without any transaction gas or obvious on-chain action.
Last reviewed: 1 June 2026
What this scam is
Ice phishing is a form of crypto wallet attack in which the attacker does not steal a private key or seed phrase, but instead deceives the user into signing a message that grants permission for a third-party contract to move tokens from the victim's wallet.
The term distinguishes this attack from 'hot' phishing (where credentials are stolen directly) — in ice phishing, the victim voluntarily grants the permission, often without realising what they are authorising.
The most common technical mechanism involves the EIP-712 standard, which enables 'permit' signatures — structured, off-chain messages that can authorise token spending without requiring an on-chain approval transaction and therefore without paying gas fees. When a user signs a permit message, they are creating a cryptographic instruction that allows a designated contract to spend a defined amount of their tokens. If the target contract is malicious, it can drain the authorised balance immediately after the signature is submitted on-chain by the attacker.
Because the signing step presents as a readable JSON-structured message rather than a transaction, many users treat it as low-risk. Wallets typically display permit signatures differently from transactions, and some older or mobile wallets display only a raw hex string with no human-readable context at all. Users accustomed to signing messages for login authentication may sign malicious permits without recognising the difference.
Ice phishing attacks have been responsible for some of the largest individual wallet drains in DeFi history, extracting millions of dollars from a single signature.
How it works
The attacker creates a fake protocol interface — a copy of a legitimate DEX, NFT marketplace, or lending protocol. The site is distributed via phishing links in Discord, Telegram, or search engine ads. When the user connects their wallet, the site immediately presents a signing request rather than a transaction.
The signing request is formatted as an EIP-712 permit message, technically granting the attacker's contract unlimited spending permission on one or more of the user's token balances, with a long or unlimited expiry. The displayed message may use misleading field names or appear to be a routine login or verification step.
Once the user signs, the signature is submitted on-chain by the attacker. The permit is now live, and the attacker's contract immediately drains the authorised token balance. Because the victim never submitted a transaction themselves, their transaction history shows nothing unusual at the time of the attack — making it harder to detect until the balance is already gone.
In NFT contexts, the same mechanism operates via the Seaport protocol's off-chain order signatures, which can be used to authorise transfer of an entire NFT collection if the signing context is spoofed.
Why this scam works
Ice phishing succeeds because signing messages is a routine part of DeFi interaction — users sign for login authentication, order creation, and routine approvals constantly. The visual difference between a login signature and a permit approval is subtle, and many wallets do not clearly distinguish between them or decode the permit fields into plain language.
The absence of a gas cost reinforces the perception that the request is low-risk. Users who are cautious about high-gas transactions may not apply the same scrutiny to 'free' signing requests.
Common red flags
- Signing request contains fields like 'spender', 'value', and 'deadline' — this is a permit, not just a login
- 'Value' in the signing request is set to a very large number (unlimited allowance)
- The request appears before you have taken any meaningful action on the site
- Wallet displays a raw hex string rather than a human-readable breakdown of the signing request
- The site was reached via a Discord link, search ad, or social media post rather than a bookmark
- Deadline field shows a timestamp far in the future — granting a long-lived permission
Sanitized example messages
Illustrative, sanitized examples. Personal details are replaced with placeholders such as [phone number] and [fake link].
To verify your wallet and claim your airdrop, please sign the message below. This is free and does not cost gas.
Sign this message to authenticate your session on [fake DEX name]. No transaction required.
To access your NFT staking rewards, approve this signature request. Your assets remain in your wallet.
Security verification required. Sign the message to prove ownership and continue: [drainer permit].
Common variations
- Seaport order signature scam — off-chain NFT listing used to authorise bulk NFT transfer
- Permit2 exploit — Uniswap's Permit2 contract used as an intermediary to batch approvals
- Fake protocol migration — users asked to sign permits to migrate to a new contract version
How to verify before you act
When any interface asks you to sign a message, read every field before signing. If you see fields named 'spender', 'value', 'deadline', 'owner', or 'nonce', this is a permit signature — it is granting token spending authority. Check that the 'spender' address matches the legitimate protocol's verified contract address. Use a hardware wallet that displays the full decoded signing request. Use a wallet simulation tool such as Wallet Guard or Fire to preview what any signature will authorise.
Payment methods used
- Cryptocurrency
- Bank/wire transfer
- Gift cards
- Money transfer services
- Payment apps to 'friends & family'
Who is usually targeted
- DeFi users interacting with new or unfamiliar protocols
- NFT holders using marketplace interfaces
- Wallet users who treat signing requests as routine
- Airdrop claimants directed to fake claim sites
What to do immediately
- If you signed a suspicious message, immediately check your token approvals on Revoke.cash and revoke any you do not recognise
- If tokens have already been drained, the transfer is irreversible — document all transaction hashes
- Report the fake site URL to your wallet provider and to the legitimate protocol team
- Report the phishing link to the platform where you encountered it
- Transfer any remaining assets in the affected wallet to a new wallet address as a precaution
How to prevent it
- Read every field in a signing request before approving — treat permits with the same scrutiny as transactions
- Use a hardware wallet that decodes and displays human-readable signing request fields
- Install a wallet simulation browser extension to preview signing requests
- Never sign a message presented immediately upon connecting your wallet to an unfamiliar site
- Regularly revoke unnecessary approvals and permits using Revoke.cash
Evidence to preserve
- The URL of the fake site where you signed
- The full content of the signing request if captured
- Transaction hashes for any subsequent on-chain drain
- The contract address that received the permit approval
- Screenshots of the site interface and any messages that directed you there
Where to report it
- Action Fraud (UK) — UK national fraud & cybercrime reporting centre
- FTC ReportFraud (US) — US Federal Trade Commission fraud reports
- FBI IC3 (US) — US Internet Crime Complaint Center
- Scamwatch (Australia) — Australian competition & consumer reporting
- Your bank's fraud line — Use the number on the back of your card or in your banking app — never a number the caller gives you
Always verify reporting routes and emergency contacts on the official government or agency website for your country.
Frequently asked questions
What is the difference between a transaction and a signing request?
A transaction submits an action directly to the blockchain and costs gas. A signing request creates a cryptographic authorisation that can be submitted on-chain later by anyone who holds the signature. Permit signatures are signing requests that grant token spending authority. Both can result in loss of funds if the target contract is malicious — treat them with equal caution.
I signed something and my tokens are gone — can I reverse it?
No. Once a permit has been submitted on-chain and the drain executed, the transaction is irreversible. Go immediately to Revoke.cash to revoke the permit for the drainer contract to prevent further drainage. Move any remaining assets to a new wallet. Report to your national fraud authority with all transaction evidence.