Approval phishing: why your wallet can be drained without a signature

How one click on Allow can become full access to your assets

||
Updated

Why a wallet can be drained “without a signature”

Approval phishing (or ice phishing) is not about stealing a seed phrase and does not require breaking into the wallet. The attack abuses legitimate permission functions: the user confirms Approve (a transaction that records the right to spend tokens for a specific address) or SetApprovalForAll (enabling an operator that can transfer all NFTs in the owner’s collection) once, after which a smart contract receives the right to move assets without new confirmations.

Goal of this guide: explain how permissions work (approval is the act of granting rights, allowance is the recorded spending limit), break down the main approval phishing scenarios, show how to inspect granted rights across EVM networks, and explain how revoking permissions works so that after the transaction the spender/operator address no longer has the right to spend assets.

EVM is a group of compatible blockchain networks that use the same smart-contract execution rules, where token and NFT management is built around a permission system. In these networks approve, allowance and setApprovalForAll are standard access mechanisms, so a single granted permission can remain valid for a long time and be used without a repeated signature. This long life of permissions is exactly why approval phishing attacks are especially effective on EVM networks.

The main vulnerability here is the expectation that every spend will require a separate signature. In a wallet interface the signature looks like an ordinary step (“allow”, “connect”, “confirm for swap”), so the user confirms not a transfer, but a grant of rights that is stored in the contract and used later without another confirmation window.

An unnecessary allowance (a limit recorded in the contract that defines how many tokens may be spent) for a stablecoin or an active setApprovalForAll (operator status for an entire NFT collection) creates long-lived access to assets: token spending through transferFrom (an ERC-20 function that lets a contract spend tokens from the owner’s address within the allowance without a new signature) or NFT transfer by an operator is possible at any moment until the permission is revoked.

If you assess DeFi risk more broadly than approvals, add separate attack surfaces to your checklist: dApp frontends, bridges, MEV, keys and operational mistakes. DeFi security guide: threat map and checklist .

Approval phishing uses permission grants through approve/permit (creating or changing an allowance) or setApprovalForAll, not a “hack” of the protocol. One signature is enough for a rights record to appear in the contract, allowing assets to be spent later without the owner’s participation.

eb02ee68 5e4e 42c1 adad 5b4f6f5659f7
The illustration shows approval phishing: the user grants a permission, after which tokens are withdrawn through an active spending right without a new signature.

One approve/permit signature or setApprovalForAll creates a rights record in a contract; token withdrawal or NFT transfer can happen later, without a new confirmation window, while the permission remains active.

What approval phishing is and why its “honesty” is dishonest

Key terms in this section:

  • Spender is the smart-contract address allowed to spend the owner’s ERC-20 tokens within an allowance through transferFrom.
  • Operator is an address that has received the right to transfer the owner’s NFTs through setApprovalForAll, without a limit on the number of collection tokens.
  • Allowance is a value in an ERC-20 contract that defines the maximum number of tokens the spender may spend.
  • Revoke is a transaction that resets an allowance or disables an operator, ending the right to spend or transfer assets.

Approval phishing uses normal permission mechanisms: the grant of rights looks legitimate, does not cause an immediate loss of funds and therefore is often not perceived as a risk at the moment of signing.

Approval phishing is an attack in which a user is persuaded to grant a permission (approval/allowance) to manage tokens or NFTs, and that right is then used to withdraw assets. The dangerous action is disguised as a familiar interface step: “confirm for swap”, “allow for mint”, “sign for claim”, “grant access for deposit”.

Unlike key theft, the attacker does not need the private key and does not need a direct transfer of funds. It is enough for the user to once grant a specific address the right to spend assets: a spender for ERC-20 tokens or an operator for NFTs. After that, the withdrawal is performed without new wallet windows and without repeated confirmations by the owner.

At the blockchain level, the transactions look valid: the user really changed the contract state and granted rights to a specific address. That is why the wallet is not formally “hacked”: assets leave through previously granted permissions, not through a bypass of the signature.

Approve usually does not transfer funds immediately. It records an allowance limit in the token contract, after which the spender can call transferFrom. The risk materializes later, when the right is used for spending.

While the balance has not changed, the signature is often perceived as safe. With unlimited approval or setApprovalForAll, an attacker can withdraw current assets and any future deposits until the allowance is reset or the operator status is disabled.

In simple terms: approve is not a transfer, but a grant of spending rights to a specific address. Approval phishing means the user is tricked into granting that right to an attacker-controlled address while it is presented as a normal swap, mint or claim step.

Approval phishing works through valid permissions. The danger appears after the signature, when an active spending right is used without the owner’s participation.

Permissions in EVM are records of rights in contracts, not one-time actions; that is why approve can remain active for months and be used without a repeated signature.

How permissions work in EVM: allowance, spender and “infinite approve”

An EVM permission is a state record in a token or NFT contract that connects your address with a specific spender/operator address. This record defines who can spend tokens through transferFrom or transfer NFTs as an operator, and it remains valid until the owner changes it with a new transaction.

  1. ERC-20: approve → allowance → transferFrom
    • The user calls approve(spender, amount) and specifies the spender address.
    • The token contract stores the allowance limit — the maximum number of tokens the spender can spend.
    • The spender calls transferFrom and spends tokens without new signatures until the allowance becomes 0 or is exhausted.
    • The contract checks allowance during transferFrom; it does not request the owner’s signature for every spend.
  2. Allowance is tied to owner → spender → token
    • The permission exists only for a specific token and a specific spender.
    • An approve for USDT does not grant access to USDC and does not extend to other contracts.
    • Every new token or new spender requires a separate approve.
  3. Unlimited approval is the maximum allowance value
    • With unlimited approve, the allowance stores the maximum numeric value.
    • The spender receives the right to spend tokens from that contract within this value, including future deposits to the address.
    • The permission remains active until a revoke transaction, even if the service is no longer used.
  4. NFT: setApprovalForAll is operator status without a limit
    • setApprovalForAll(operator, true) enables operator status for the owner’s entire NFT collection.
    • This is not a limit by quantity or value: the right remains until setApprovalForAll(operator, false) is sent.
    • If the operator is compromised, NFTs can be withdrawn without new owner confirmations.

Unlimited approve for ERC-20 increases the maximum amount that can be spent through transferFrom until the allowance is reset. SetApprovalForAll for NFTs enables an operator for the whole collection and remains active until the status is switched to false.

EVM permissions are long-lived rights records in contracts. One approve can work for months, unlimited increases the available spending limit, and setApprovalForAll removes quantity limits for the NFT operator.

A permit signature (for example EIP-2612) gives an application the right to set allowance through a signed message; the application then uses that signature in a transaction that grants rights and performs the action in one call.

Permit, Permit2 and message signatures: how permissions are granted without a separate approve and why attackers use this

In addition to ordinary approve, EVM has ways to grant permission without a separate transaction. The user simply signs a message, and the application uses that signature in its own transaction, which both grants the spending right and performs the action — swap, deposit or claim. These mechanics are called permit and extensions such as Permit2.

From a UX point of view, this looks like fewer steps: there is no separate approve transaction and no gas is required for a separate approve call. The technical consequence is the same: a spending right appears in the contract, and that right may remain active beyond a single operation if the signature parameters set a broad limit or a long expiration.

The two confirmation types users most often confuse:

  • Transaction (on-chain): approve / revoke / transfer — sent to the network, requires gas and changes contract state.
  • Message signature (off-chain): permit and similar mechanics — no gas is needed at signing time, but they let an application install the same access rights.
⚙️ Mechanism🧾 What you grant📍 Where it appears⚠️ Key risk
Approve (ERC-20)Token spending limit for a spenderDEX, lending, farming, bridgesUnlimited allowance remains active until revoke
Permit (EIP-2612 and analogues)Permission through a signature without a separate approve“One-click” swaps, aggregators, DeFi interfacesThe signature looks “safe” but sets real rights
SetApprovalForAll (NFT)Global access to the entire collectionMarketplaces, mints, gaming dAppsNFTs can be transferred without repeated confirmations

Key nuance: approve and permit lead to the same result — a specific address receives the right to manage the owner’s assets. The confirmation form differs: an on-chain transaction or a message signature that is later used inside a transaction.

Pre-sign checklist (30 seconds): a quick filter to see whether a signature grants spending rights.

  • What is being confirmed? Permit or approve means an access grant.
  • Who receives access? Look at the spender or operator in the parameters, not at the site design.
  • What is the limit? Unlimited on liquid tokens increases the available spending amount.
  • Is there setApprovalForAll? For NFTs this is full operator status over the collection.
  • Is there urgency? Time pressure is often used to make people sign without checking parameters.

Permit and “gasless signatures” change only the form of confirmation. A message signature can install access rights to tokens or NFTs just like approve, so signature parameters must be read as permission grants.

In typical approval phishing schemes, the user is led to sign approve/permit or setApprovalForAll under the pretext of “Claim”, “Mint” or “Deposit”, and the active right is then used for spending.

Typical approval phishing schemes: how you are led to the “right” signature

These schemes use familiar interfaces and standard workflows, which makes the grant of permissions look like an ordinary service step.

Almost all attacks follow the same logic: first the user is brought to a page that looks like a dApp interface, then the page requests a signature that grants a spending right or operator right, and after that the active permission is used to withdraw assets without new confirmations.

The key feature is the absence of a direct request to send a transfer. Instead of a transfer, the site requests approve/permit or setApprovalForAll: a contract-state change that creates the right to manage the owner’s assets.

  1. Clone of a popular service
    • A fake domain or advertising link leads to a visually similar copy of a DEX or marketplace.
    • The interface requests approve “for swap” or setApprovalForAll “for NFT listing”.
    • The signature parameters contain a spender/operator that does not belong to the real service.
  2. Compromise of official channels
    • A link is posted in Discord, Telegram or X on behalf of the project or a moderator.
    • Urgency triggers are used: “contract bug”, “mint migration”, “last chance”.
    • The link leads to a page that requests approve/permit for the attacker’s address.
  3. Social engineering through “support”
    • The attacker sends a private message pretending to be service support.
    • A signature is requested under the pretext of “canceling a stuck transaction”.
    • In practice, the user signs a permit or grants approve to a third-party address.
  4. Substitution of the signature meaning
    • The wallet window displays a technical call without clear explanation from the interface.
    • The user confirms without checking the spender/operator address and the limit.
    • The risk is highest when the interface does not show the spender, limit or permission type.

Example: a user connects a wallet to an “airdrop” page, clicks Claim and signs an unlimited approve for a stablecoin. The balance does not change, but later, when funds arrive, the spender withdraws tokens through transferFrom without a new signature request.

These attacks do not require an immediate withdrawal. The attacker can wait for the balance to grow or for liquidity to arrive and then use the active permission.

Typical approval phishing schemes disguise a grant of rights as familiar actions. While allowance or operator status is active, the attacker can use it at any moment without new owner confirmations.

Allowance and setApprovalForAll do not have an expiration date: the rights record remains in the contract until the owner sends a transaction that resets the allowance or disables the operator.

Common user mistakes: why approvals accumulate and become a threat

The danger of approvals is rarely felt at the moment of signing because approve usually does not change the balance. The risk appears later, when an active permission is used for spending, and becomes stronger if such permissions remain across several networks and several tokens.

The most common mistake: unlimited approvals for stablecoins and liquid tokens. At the moment of signing this looks like fewer steps, but technically it means a large allowance that lets the spender spend tokens through transferFrom until the allowance is reset.

The same logic applies to setApprovalForAll for NFTs. The user treats it as a one-time action for listing or minting, but an active operator status remains in the collection contract and allows NFT transfer without new owner confirmations.

A separate class of mistakes comes from trusting the brand and visual design. The user focuses on the domain, logo or layout, but permission is always granted to a specific address — spender or operator. If the interface is substituted, the design does not change the address in the signature parameters.

Another common mistake is considering the issue closed after revoke in one network. Approvals are isolated by network: allowance in Ethereum and allowance in Arbitrum are different records in different contracts, so a permission may remain active on another network.

If you move liquidity between networks, check approvals after cross-chain operations: bridges and routers often require approve for a separate spender in each network. Crypto bridges: how they work and which are safer.

Gasless signatures create additional confusion. Permit and similar mechanics are perceived as “soft” confirmations, but the result is the same: the application receives the ability to install a permission that is then used for spending.

Mistakes become more dangerous when one wallet is used at the same time for storage, active trading and experiments. In that mode, one unnecessary spender/operator creates access to assets that were not part of the original operation.

The main threat of approvals is active permissions that remain in contracts after a task is complete. Unlimited allowance, an enabled NFT operator and permissions across several networks increase the amount of assets available for spending without new confirmations.

Permissions must be checked separately for each network: allowance and operator lists in Ethereum do not match Arbitrum, Optimism, Polygon or BSC, because rights records are stored in contracts on the specific network.

Where to check permissions: what exactly to inspect and in what order

Permission review is a sequence of steps by network and asset type. ERC-20 tokens and NFTs use different access mechanics, so they must be analyzed separately and closed in priority order: unknown addresses and broad limits first, then the remaining working permissions.

  1. Identify the network with the most activity
    • Permissions are not “global”: Ethereum, Arbitrum, Optimism, Polygon and BSC have separate approval lists.
    • Start with the network where liquidity is concentrated and where the latest transactions happened.
  2. Check ERC-20 approvals and reduce what is unnecessary
    • Priority goes to unknown spenders and unlimited allowance on stablecoins and liquid tokens.
    • Remove unused permissions and reduce limits to the amount needed for the current operation.
  3. Check NFT approvals separately
    • Pay special attention to setApprovalForAll for marketplaces and gaming dApps.
    • Keep an operator active only for the period when it is truly needed.
  4. Verify addresses you leave active
    • Match spender/operator addresses with trusted services by the address in the signature or explorer.
    • If an address is not recognizable, reset the allowance or disable the operator and grant a new permission only when necessary.
ApproachWhat it checksStrong sideLimitation
Network blockchain scannerERC-20 allowance and often NFT approvalsNetwork data, without trusting a dApp interfaceYou need to switch networks and analyze addresses
Revoke servicesToken and NFT permissions in the selected networkList + button to reset allowance/disable operatorCoverage depends on the network and integrations
Wallets with simulationSpender, limits, warnings before signingShows which address will receive rights before confirmationDifferent depth of approval display

What to look for in a permission list

  • Unknown spender or operator. If the address is not recognizable, it is a revoke candidate.
  • Unlimited allowance on liquid assets. A large allowance increases the available spending amount.
  • Permissions in L2s and sidechains. Approvals may remain active in networks where you have not transacted for a long time.
  • NFT operators without a current need. An active operator can transfer NFTs without new confirmations.
  • Proxy contracts and upgrades. Approve is tied to the spender address, so an old permission remains active even if the logic changes through an upgrade.

Review logic: first reset allowances for unknown addresses and remove unlimited permissions on sensitive tokens, then reduce the remaining limits to the amount needed for current operations.

Permission review should match how permissions are stored: separate networks, separate tokens, separate spenders/operators. Prioritizing unknown and unlimited permissions closes the main scenarios for spending without new confirmations.

Revoke is a transaction that sets allowance to 0 for the owner→spender→token pair or switches setApprovalForAll(operator) to false; after network confirmation, the spender/operator address loses the spending right.

How to revoke permissions correctly: tokens, NFTs and common mistakes

Revoke is an on-chain transaction that changes allowance or disables an NFT operator. As a result, the contract records a new state: a specific address no longer has the right to manage your assets. Revoke stops future spending, but does not reverse transactions that have already been executed.

Step-by-step revoke algorithm for ERC-20

  1. Identify the network. Approvals are isolated by network: Ethereum, Arbitrum, Optimism and other L2s have separate permission lists.
  2. Find the token and spender. Check the token contract address, token name and current allowance limit, especially for stablecoins and liquid assets.
  3. Perform revoke. The standard option is setting allowance to 0 through approve(spender, 0) or using a revoke button in a service.
  4. Check the result. Make sure the allowance became 0 and the permission is no longer displayed as active.

Step-by-step revoke algorithm for NFTs

  1. Open the collection operator list. Look for active setApprovalForAll entries and related operator addresses.
  2. Disable the operator. The status must be switched to false.
  3. Repeat for key collections. Check collections with the highest value and liquidity first.

Common mistake: revoke is done in one network while allowance or operator status remains active in another. If you used bridges, aggregators and multi-network dApps, check approvals in every network separately.

ERC-20 nuance: some tokens require the sequence approve(spender, 0) before setting a new allowance. In those cases, revoke starts by resetting the limit.

Revoke changes the rights record in the contract: allowance becomes 0 or the operator is disabled. For revoke to really close access, it must be performed in the correct network and for the correct token→spender or collection→operator pair.

If you granted approve/permit or setApprovalForAll to an attacker, spending can happen later, including after you top up the balance. A clear action order helps first move assets out of the scope of active permissions, then reset allowance and disable operator to close spending access.

If you already granted a dangerous approve: a quick damage-reduction plan

In this situation, the order of actions matters: first move assets away from active permissions, then reset allowance and disable operator, and only after that investigate the source of the signature.

If approval phishing is suspected, the critical point is that the granted permissions may already be usable. While allowance is above zero or operator is enabled, spending can be initiated at any moment, including after new funds arrive on the address.

  • Move assets to a “clean” address. A new wallet with a new seed phrase breaks the connection with current approvals because allowance and operator are tied to the old owner address.
  • Revoke permissions on the compromised address. Reset allowance for stablecoins and liquid tokens first, then for the remaining tokens.
  • Check NFT permissions. Disable setApprovalForAll for operators that are not needed.
  • Disconnect dApp sessions in the wallet. This does not change allowance, but removes active site sessions that may request another signature.
  • Isolate the environment. If there is a risk of a malicious extension or site substitution, use another browser or device.

Do not agree to “test transfers”, “security checks” or “fund recovery” suggested by strangers. Such requests are often used to obtain a new signature or direct transfer.

After a dangerous permission has been granted, the priority is to reduce the amount of assets reachable through allowance/operator and then reset those rights with revoke transactions. While the rights remain active, spending can happen without new confirmations.

Preventing approval phishing comes down to controlling two parameters: who receives the right (spender/operator) and how large or broad that right is (allowance or setApprovalForAll).

Prevention: how to grant permissions without becoming an easy target

Approval phishing prevention is built around permission management: separating wallet roles, limiting allowance and disabling operator after the task is complete.

Most losses are tied to active permissions that remain in contracts after an operation is finished: unlimited allowance, an enabled NFT operator and the habit of confirming signatures without checking the address. These rights records allow spending without new confirmations until revoke.

Separating wallet roles

Using one address for storage, trading and experiments makes any approve critical for the entire balance on that address. Separating addresses limits the amount of assets exposed through allowance or operator. If you choose a “storage” wallet for the long term, start with a hardware crypto wallet review and set up cold storage before active DeFi work.

🧩 Basic three-address setup

  • Storage (long term): main capital, minimum dApp interactions, no active approvals.
  • Operational address: regular DeFi activity, limited balance, scheduled allowance and operator review.
  • Experimental address: airdrops, NFTs, new projects; risk is limited to the amount stored on it.

Reducing the scope of every permission

Even when working with trusted services, consider the scenario of a spender/operator error or compromise. For ERC-20, the scope of the right is defined by allowance; for NFTs, the scope is defined by setApprovalForAll status.

  • Use exact limits. Allowance defines the maximum number of tokens a spender can spend.
  • Reset allowance after the task is complete. This ends the spending right through transferFrom.
  • Check the spender address. Permission is granted to the address in the signature parameters, not to a “site”.
  • Disable setApprovalForAll after the task. Operator should not remain active after listing or a gaming session.
  • Do not confirm because of urgency. Urgency is often used so that the signature is not inspected.

Review mode: when to check approvals

  1. After a one-off operation. If the service is not used regularly, reset allowance or disable operator after the operation is complete.
  2. For an operational DeFi address. With constant activity, review approvals once every one to two weeks and remove unnecessary permissions.
  3. For an experimental address. For new dApps and airdrops, check and close permissions after every session.

Working model: approve/permit grants a right to a specific address, allowance defines the limit, revoke changes the limit to 0 or disables the operator.

Approval prevention is active permission management: address separation, exact allowance limits and disabling operator after the task reduce the amount of assets available for spending without new confirmations.

Approve lets protocols call transferFrom without a signature for every operation; the same mechanism means an active permission can be used for spending later if it was granted to an unnecessary address.

Approve as a mechanism: strengths and built-in risks

Approve is a foundation of DeFi infrastructure: it lets protocols perform operations through transferFrom based on allowance, but makes the owner responsible for the spender address and allowance limit.

The approve mechanism is a trade-off between keeping assets on your own address and automating protocol actions. Assets remain on your address, but the contract receives the right to spend them within the allowance set in approve.

✅ Strengths of approve

  • Assets remain on the owner’s address until they are spent through transferFrom.
  • Protocols can perform operations without a signature for every step by using allowance.
  • Allowance makes it possible to limit the maximum spending amount for a specific spender.
  • Permissions are verifiable on-chain and can be reset with a revoke transaction.

❌ Built-in risks of approvals

  • A permission remains active until revoke and does not depend on closing a site or disconnecting a wallet.
  • Unlimited allowance increases the amount of tokens available for spending if the spender is compromised.
  • If approve is signed without checking the spender and limit, the right may be granted to the wrong address.
  • SetApprovalForAll for NFTs gives an operator the right to transfer the whole collection with one action.

Approve is an infrastructure mechanism for managing rights. It is convenient because transfer is executed through allowance without repeated signatures, and risky because an active permission works until revoke and can be used for spending later.

Cases and lessons: why a “correct contract” can still become a problem

Even when working with legitimate services, active approvals create risk: a vulnerability, upgrade or frontend substitution becomes dangerous if allowance is already recorded or operator is enabled in the contract.

The key property of approvals is the absence of a “lifetime”. If a permission has been granted, the contract does not need to request approve again: it uses the rights already recorded. Therefore the risk depends not only on the current service, but also on the list of approvals accumulated on the address.

🔓 Case 1: vulnerability in a legitimate protocol + unlimited approvals

A user grants unlimited approve to a protocol, and later a bug is found in the spending logic that lets the contract spend more tokens than expected.

  • The contract already has the spending right through allowance, so the attack does not require a new owner signature.
  • Unlimited allowance increases the spending amount up to the token balance on the owner’s address.
  • Users who do not make new transactions remain vulnerable until the allowance is reset.

Unlimited approve turns a protocol bug into a risk for the entire token balance on the address. Exact allowance limits maximum spending, and revoke ends the spending right.

🧩 Case 2: a proxy-contract upgrade changes access behavior

Upgradeable contracts keep the same address, but the code at that address can change after an upgrade or governance compromise.

  • Approve is tied to the spender address, not to a specific code version.
  • After an upgrade, new code may use allowance differently than the owner expected.
  • Old allowance remains active until it is reset by a transaction.

When protocols upgrade, old approvals should be reviewed because allowance remains active on the same spender address.

🧠 Case 3: frontend substitution while the brand stays familiar

The user visits a familiar site, but the interface is substituted through DNS, ads, CDN or malicious extensions.

  • The visual appearance of the interface matches what the user expects.
  • Approve or permit is granted to an address that is not the service contract.
  • Checking spender/operator in the signature reveals the substitution; brand and design do not.

Rely on the spender/operator address and allowance limit in the signature, not on the domain and page design.

🛰️ Case 4: aggregators and routers as a broad access gateway

Aggregators and routers use one spender for many routes and protocols.

  • One spender address serves many scenarios and many tokens.
  • If the spender is compromised, the risk spreads to everyone who granted it allowance.
  • Unlimited allowance increases the amount that can be spent through this address.

For routers, the allowance limit defines the maximum spending amount, and regular revoke removes old permissions that are no longer needed.

🖼️ Case 5: setApprovalForAll for NFTs remains active for years

SetApprovalForAll enables an operator for the whole collection and often stays active after the task is complete.

  • This is operator status, not a limit by number of NFTs.
  • Even without activity, the operator remains enabled in the collection contract.
  • Compromise of the operator makes it possible to transfer NFTs without a new owner signature.

Disabling setApprovalForAll through false ends the operator’s right to transfer the owner’s NFTs.

An incident becomes possible when an allowance is already recorded or an operator is enabled in the contract. At that moment, spending can be executed without a new owner signature.

In practice, incidents happen because permissions remain after completed operations. Regular review and disabling unnecessary allowances and operators limit the amount of assets available for spending without a new signature.

The FAQ helps clarify which signatures grant rights, how revoke works and why spending can happen without repeated confirmation.

FAQ about approval phishing, approve and revoke

Why do people say “drained without a signature” if I did sign something?

The signature was for granting rights, not for transferring funds. After approve, permit or setApprovalForAll, the contract receives the right to spend assets according to its logic without new owner confirmations.

Is unlimited approve always a mistake?

Unlimited approve records a very large value in allowance. This increases the maximum number of tokens the spender can spend through transferFrom until the allowance is reset.

Can revoke return stolen funds?

No. Revoke changes contract state only for the future: allowance becomes 0 or the operator is disabled. Transactions that have already been executed are not reversed.

Does deleting the wallet or “disconnecting the site” remove approvals?

No. Permissions are stored on-chain inside token and NFT contracts. Disconnecting a site or deleting an app does not change allowance or operator status in the contract.

Where exactly is approve stored?

In smart-contract state. For ERC-20 this is the allowance(owner, spender) record; for NFTs it is approvals and operators in the collection contract.

Can approve be limited to a specific amount?

Yes. The approve call passes the amount parameter, and this value defines allowance. The spender cannot spend more than the current allowance permits.

Which is more dangerous: approve for a token or setApprovalForAll for an NFT?

Usually setApprovalForAll is more dangerous because it enables an operator for the entire collection without a limit on the number of NFTs. Token approve is limited by an allowance number and can be set to an exact amount.

Do approvals need to be checked in L2s and sidechains?

Yes. Each network stores its own rights records in its own contracts. Allowance in Ethereum and allowance in Arbitrum are different values, so checking only one network does not show permissions in other networks.

Does a hardware wallet protect against approval phishing?

A hardware wallet protects the private key and signing process from theft on the device, but it does not change the meaning of the action being signed. A dangerous approve/permit or setApprovalForAll is still a grant of rights even when signed on hardware.

The FAQ comes down to one verifiable difference: a signature may grant rights (approve/permit/setApprovalForAll) rather than transfer funds. While these rights are active in the contract, spending can happen without new owner confirmations.

One mistaken approve/permit or setApprovalForAll gives an external address the right to spend tokens through allowance or transfer NFTs as an operator; while the permission is active, the wallet will not request a new signature for the spending itself.

How to protect yourself from approval phishing and keep permissions under control

Permissions are the basis of DeFi mechanics, but allowance and operator status are exactly what allow assets to be withdrawn without a repeated signature if the right was granted to an unnecessary address.

Approval phishing is abuse of legitimate rights. One approve/permit or setApprovalForAll creates an access record in a contract that lets assets be spent later without new confirmation windows.

To avoid leaving active rights on an address, keep control through concrete actions:

  • Check the access address. The important part is spender/operator in the signature and in the approvals list, not the brand or design.
  • Limit allowance. Set a task-specific limit instead of unlimited and reset allowance when the right is no longer needed.
  • Disable operator for NFTs. Do not leave setApprovalForAll enabled after the action is complete.
  • Check all networks. Allowance and operator are stored separately in each network, so review every network where a dApp was used.
  • Separate addresses by role. The balance on an address defines the maximum amount that can be spent through active rights on that address.

Treat approvals as active access rights recorded in contracts. Minimal allowance limits, disabled operators and review across all networks reduce the amount of assets available for spending without a new signature.

🔍 Smart-contract checks before connecting
A step-by-step guide: code verification, approve/permit, proxy upgrades, red flags and tools that help avoid signing dangerous permissions.

Explore more about DeFi

Find more analysis, practical guides, and reviews in our DeFi section.

Open DeFi