Phishing de aprovação: por que sua carteira pode ser esvaziada sem uma assinatura

Como um clique em Permitir pode se tornar acesso total aos seus ativos

||
Atualizado

Por que uma carteira pode ser esgotada “sem assinatura”

Phishing de aprovação (ou phishing de gelo) não se trata de roubar uma frase-semente e não exige arrombamento da carteira. O ataque abusa de funções de permissão legítimas: o usuário confirma Approve (uma transação que registra o direito de gastar tokens para um endereço específico) ou DefinirAprovaçãoParaTodos (habilitando um operator que pode transferir todos os NFTs da coleção do proprietário) uma vez, após a qual um contrato inteligente recebe o direito de mover ativos sem novas confirmações.

Objetivo deste guia: explicar como funcionam as permissões (aprovação é o ato de outorga de direitos, allowance é o limite de gastos registrado), decompor o principal phishing de aprovação cenários, mostrar como inspecionar direitos concedidos em redes EVM, e explicar como funciona a revogação de permissões para que após a transação o endereço spender/operator não tenha mais o direito de gastar ativos.

EVM é um grupo de redes blockchain compatíveis que usam as mesmas regras de execução de contratos inteligentes, onde o gerenciamento de token e NFT é construído em torno de um sistema de permissão. Nessas redes approve, allowance e setApprovalForAll são mecanismos de acesso padrão, portanto, uma única permissão concedida pode permanecer válida por um longo período e ser usada sem assinatura repetida. Essa longa vida útil das permissões é exatamente a razão pela qual os ataques de phishing de aprovação são especialmente eficazes em redes EVM.

A principal vulnerabilidade aqui é a expectativa de que cada gasto exija uma assinatura separada. Na interface de uma carteira, a assinatura parece uma etapa comum (“permitir”, “conectar”, “confirmar para troca”), então o usuário confirma não uma transferência, mas uma concessão de direitos que é armazenado no contrato e usado posteriormente sem outra janela de confirmação.

Um allowance desnecessário (um limite registrado no contrato que define quantos tokens podem ser gastos) para uma stablecoin ou um ativo setApprovalForAll (status operator para uma coleção NFT inteira) cria acesso duradouro aos ativos: gastos simbólicos através transferFrom (uma função ERC-20 que permite que um contrato gaste tokens do endereço do proprietário dentro de allowance sem uma nova assinatura) ou a transferência NFT por um operator é possível a qualquer momento até que a permissão seja revoked.

Se você avaliar o risco DeFi de forma mais ampla do que as aprovações, adicione superfícies de ataque separadas à sua lista de verificação: Frontends dApp, pontes, MEV, chaves e erros operacionais. Guia de segurança DeFi: mapa de ameaças e lista de verificação .

O phishing de aprovação usa concessões de permissão por meio de approve/permit (criando ou alterando um allowance) ou setApprovalForAll, não é um “hack” do protocolo. Uma assinatura é suficiente para que um registro de direitos apareça no contrato, permitindo que os ativos sejam gastos posteriormente sem a participação do proprietário.

eb02ee68 5e4e 42c1 adad 5b4f6f5659f7
A ilustração mostra phishing de aprovação: o usuário concede uma permissão, após a qual os tokens são retirados por meio de um direito de gasto ativo sem uma nova assinatura.

Uma assinatura approve/permit ou setApprovalForAll cria um registro de direitos em um contrato; a retirada do token ou transferência NFT pode acontecer posteriormente, sem uma nova janela de confirmação, enquanto a permissão permanece ativa.

O que é phishing de aprovação e por que sua “honestidade” é desonesta

Termos-chave nesta seção:

  • Gastador é o endereço do contrato inteligente com permissão para gastar os tokens ERC-20 do proprietário dentro de um allowance através transferFrom.
  • Operador é um endereço que recebeu o direito de transferir o NFTs do proprietário através setApprovalForAll, sem limite no número de tokens de coleta.
  • Subsídio é um valor em um contrato ERC-20 que define o número máximo de tokens o spender pode gastar.
  • Revoke é uma transação que redefine um allowance ou desativa um operator, acabar com o direito de gastar ou transferir ativos.

O phishing de aprovação utiliza mecanismos normais de permissão: a concessão de direitos parece legítima, não causa uma perda imediata de fundos e, portanto, muitas vezes não é percebida como um risco no momento da assinatura.

Phishing de aprovação é um ataque no qual um usuário é persuadido a conceder um permissão (aprovação/allowance) para gerenciar tokens ou NFTs, e esse direito é então usado para retirar ativos. A ação perigosa está disfarçada como uma etapa familiar da interface: “confirmar para troca”, “permitir cunhagem”, “assinar para reivindicação”, “conceder acesso para depósito”.

Ao contrário do roubo de chaves, o invasor não precisa da chave privada e não precisa de transferência direta de fundos. Basta que o usuário uma vez conceder a um endereço específico o direito de gastar ativos: um spender para tokens ERC-20 ou um operator para NFTs. Depois disso, o saque é realizado sem novas janelas de carteira e sem repetidas confirmações por parte do proprietário.

No nível do blockchain, as transações parecem válidas: o usuário realmente alterou o estado do contrato e concedeu direitos a um endereço específico. É por isso que a carteira não é formalmente “hackeada”: os ativos saem através de permissões previamente concedidas, e não através de um desvio da assinatura.

Approve normalmente não transfere fundos imediatamente. Ele registra um limite allowance no contrato de token, após o qual spender pode chamar transferFrom. O risco se materializa mais tarde, quando o direito é utilizado para gastos.

Embora o saldo não tenha mudado, a assinatura é muitas vezes considerada segura. Com aprovação ilimitada ou setApprovalForAll, um invasor pode retirar ativos circulantes e quaisquer depósitos futuros até que allowance seja redefinido ou o status operator seja desativado.

Em termos simples: approve não é uma transferência, mas uma concessão de direitos de gastos para um endereço específico. Phishing de aprovação significa que o usuário é induzido a conceder esse direito a um endereço controlado pelo invasor enquanto ele é apresentado como uma etapa normal de troca, cunhagem ou reivindicação.

O phishing de aprovação funciona por meio de permissões válidas. O perigo surge após a assinatura, quando um direito de gasto ativo é utilizado sem a participação do titular.

As permissões em EVM são registros de direitos em contratos, e não ações únicas; é por isso que approve pode permanecer ativo por meses e ser usado sem assinatura repetida.

Como funcionam as permissões em EVM: allowance, spender e “approve infinito”

Uma permissão EVM é um registro de estado em um token ou contrato NFT que conecta seu endereço a um endereço spender/operator específico. Este registro define quem pode gastar tokens através transferFrom ou transfira NFTs como operator, e ele permanecerá válido até que o proprietário o altere com uma nova transação.

  1. ERC-20: approve → allowance → transferFrom
    • O usuário chama approve(spender, valor) e especifica o endereço spender.
    • O contrato de token armazena o allowance limit — o número máximo de tokens que spender pode gastar.
    • As chamadas spender transferFrom e gasta tokens sem novas assinaturas até que allowance se torne 0 ou se esgote.
    • O contrato verifica allowance durante transferFrom; não solicita a assinatura do proprietário para cada gasto.
  2. A permissão está vinculada ao proprietário → spender → token
    • A permissão existe apenas para um token específico e um spender específico.
    • Um approve para USDT não concede acesso ao USDC e não se estende a outros contratos.
    • Cada novo token ou novo spender requer um approve separado.
  3. Aprovação ilimitada é o valor máximo allowance
    • Com approve ilimitado, o allowance armazena o valor numérico máximo.
    • O spender recebe o direito de gastar tokens desse contrato dentro deste valor, incluindo depósitos futuros no endereço.
    • A permissão permanece ativa até uma transação revoke, mesmo que o serviço não seja mais usado.
  4. NFT: setApprovalForAll é o status operator sem limite
    • setApprovalForAll(operator, verdadeiro) ativa o status operator para toda a coleção NFT do proprietário.
    • Não se trata de um limite por quantidade ou valor: o direito permanece até setApprovalForAll(operator, falso) é enviado.
    • Se o operator estiver comprometido, o NFTs poderá ser retirado sem confirmações do novo proprietário.

approve ilimitado para ERC-20 aumenta o valor máximo que pode ser gasto por meio transferFrom até que allowance seja redefinido. DefinirAprovaçãoParaTodos para NFTs ativa um operator para toda a coleção e permanece ativo até que o status seja alterado para falso.

As permissões EVM são registros de direitos de longa duração em contratos. Um approve pode funcionar por meses, ilimitado aumenta o limite de gastos disponíveis e setApprovalForAll remove os limites de quantidade para NFT operator.

Uma assinatura permit (por exemplo, EIP-2612) dá a um aplicativo o direito de definir allowance por meio de uma mensagem assinada; o aplicativo então usa essa assinatura em uma transação que concede direitos e executa a ação em uma chamada.

Permissão, Permit2 e assinaturas de mensagens: como as permissões são concedidas sem um approve separado e por que os invasores usam isso

Além do approve comum, o EVM possui maneiras de conceder permissão sem uma transação separada. O usuário simplesmente assina uma mensagem, e o aplicativo usa essa assinatura em sua própria transação, que concede o direito de gastar e executa a ação – troca, depósito ou reivindicação. Essa mecânica é chamada permit e extensões como Permit2.

Do ponto de vista UX, isso parece menos etapas: não há nenhuma transação approve separada e nenhum gás é necessário para uma chamada approve separada. A consequência técnica é a mesma: um direito de gasto aparece no contrato, e esse direito pode permanecer ativo além de uma única operação se os parâmetros de assinatura estabelecerem um limite amplo ou uma expiração longa.

Os dois tipos de confirmação que os usuários confundem com mais frequência:

  • Transação (on-chain): approve / revoke / transferência — enviado para a rede, requer gás e altera o estado do contrato.
  • Assinatura da mensagem (fora da cadeia): permit e mecânica semelhante – nenhum gás é necessário no momento da assinatura, mas permitem que um aplicativo instale os mesmos direitos de acesso.
⚙️ Mecanismo🧾 O que você concede📍 Onde aparece⚠️ Risco principal
Approve (ERC-20)Limite de gasto de token para um spenderDEX, empréstimos, agricultura, pontesallowance ilimitado permanece ativo até revoke
Permissão (EIP-2612 e análogos)Permissão por meio de assinatura sem approve separadoTrocas de “um clique”, agregadores, interfaces DeFiA assinatura parece “segura”, mas estabelece direitos reais
SetApprovalForAll (NFT)Acesso global a toda a coleçãoMercados, balas, jogos dAppsNFTs pode ser transferido sem confirmações repetidas

Nuance principal: approve e permit levam ao mesmo resultado – um endereço específico recebe o direito de administrar os ativos do proprietário. O formulário de confirmação é diferente: uma transação em cadeia ou uma assinatura de mensagem que é posteriormente usada dentro de uma transação.

Lista de verificação pré-assinatura (30 segundos): um filtro rápido para ver se uma assinatura concede direitos de gasto.

  • O que está sendo confirmado? Permissão ou approve significa uma concessão de acesso.
  • Quem recebe acesso? Observe spender ou operator nos parâmetros, não no design do site.
  • Qual é o limite? Ilimitado em tokens líquidos aumenta o valor de gasto disponível.
  • Existe setApprovalForAll? Para NFTs, esse é o status operator completo na coleção.
  • Existe urgência? A pressão do tempo é frequentemente usada para fazer as pessoas assinarem sem verificar os parâmetros.

Permissão e “assinaturas sem gás” alteram apenas a forma de confirmação. Uma assinatura de mensagem pode instalar direitos de acesso a tokens ou NFTs, assim como approve, portanto, os parâmetros de assinatura devem ser lidos como concessões de permissão.

Em esquemas típicos de phishing de aprovação, o usuário é levado a assinar approve/permit ou setApprovalForAll sob o pretexto de “Reivindicação”, “Mint” ou “Depósito”, e o direito ativo é então utilizado para gastos.

Esquemas típicos de phishing de aprovação: como você é levado à assinatura “certa”

Esses esquemas usam interfaces familiares e fluxos de trabalho padrão, o que faz com que a concessão de permissões pareça uma etapa de serviço comum.

Quase todos os ataques seguem a mesma lógica: primeiro o usuário é levado a uma página que se parece com uma interface dApp, depois a página solicita uma assinatura que concede um direito de gasto ou direito operator, e depois disso a permissão ativa é usada para retirar ativos sem novas confirmações.

A principal característica é a ausência de solicitação direta de envio de transferência. Em vez de uma transferência, o site solicita approve/permit ou setApprovalForAll: uma mudança de estado contratual que cria o direito de administrar os ativos do proprietário.

  1. Clone de um serviço popular
    • Um domínio falso ou link de publicidade leva a uma cópia visualmente semelhante de um DEX ou mercado.
    • A interface solicita approve “para troca” ou setApprovalForAll “para listagem NFT”.
    • Os parâmetros de assinatura contêm um spender/operator que não pertence ao serviço real.
  2. Comprometimento dos canais oficiais
    • Um link é postado em Discord, Telegram ou X em nome do projeto ou de um moderador.
    • São utilizados gatilhos de urgência: “bug de contrato”, “migração mint”, “última chance”.
    • O link leva a uma página que solicita approve/permit o endereço do invasor.
  3. Engenharia social através de “apoio”
    • O invasor envia uma mensagem privada fingindo ser o suporte do serviço.
    • A assinatura é solicitada sob o pretexto de “cancelar uma transação travada”.
    • Na prática, o usuário assina um permit ou concede approve a um endereço de terceiro.
  4. Substituição do significado da assinatura
    • A janela da carteira exibe uma chamada técnica sem explicação clara da interface.
    • O usuário confirma sem verificar o endereço spender/operator e o limite.
    • O risco é maior quando a interface não mostra spender, limite ou tipo de permissão.

Exemplo: um usuário conecta uma carteira a uma página de “airdrop”, clica em Reivindicar e assina um approve ilimitado para uma moeda estável. O saldo não muda, mas posteriormente, quando os fundos chegam, o spender retira tokens através transferFrom sem uma nova solicitação de assinatura.

Estes ataques não exigem uma retirada imediata. O invasor pode esperar o saldo crescer ou a chegada da liquidez e então usar a permissão ativa.

Esquemas típicos de phishing de aprovação disfarçam a concessão de direitos como ações familiares. Enquanto o status allowance ou operator estiver ativo, o invasor pode usá-lo a qualquer momento sem novas confirmações do proprietário.

Subsídio e setApprovalForAll não possuem prazo de validade: o registro de direitos permanece no contrato até que o proprietário envie uma transação que redefina o allowance ou desative o operator.

Erros comuns dos usuários: por que as aprovações se acumulam e se tornam uma ameaça

O perigo das aprovações raramente é sentido no momento da assinatura porque approve normalmente não altera o saldo. O risco aparece mais tarde, quando uma permissão ativa é usada para gastos, e torna-se mais forte se tais permissões permanecerem em várias redes e vários tokens.

O erro mais comum: aprovações ilimitadas para stablecoins e tokens líquidos. No momento da assinatura, parece haver menos etapas, mas tecnicamente significa um grande allowance que permite ao spender gastar tokens através transferFrom até que allowance seja redefinido.

A mesma lógica se aplica a setApprovalForAll para NFTs. O usuário trata isso como uma ação única para listagem ou cunhagem, mas um status operator ativo permanece no contrato de coleta e permite a transferência de NFT sem confirmações de novo proprietário.

Uma classe separada de erros vem da confiança na marca e no design visual. O usuário foca no domínio, logotipo ou layout, mas a permissão é sempre concedida para um endereço específico — spender ou operator. Se a interface for substituída, o design não altera o endereço nos parâmetros de assinatura.

Outro erro comum é considerar o problema encerrado após revoke em uma rede. As aprovações são isoladas por rede: allowance em Ethereum e allowance em Arbitrum são registros diferentes em contratos diferentes, portanto uma permissão pode permanecer ativa em outra rede.

Se você mover liquidez entre redes, verifique as aprovações após operações entre cadeias: pontes e roteadores geralmente exigem approve para um spender separado em cada rede. Pontes criptográficas: como funcionam e quais são mais seguras.

Assinaturas sem gás criam confusão adicional. A permissão e mecanismos semelhantes são percebidos como confirmações “soft”, mas o resultado é o mesmo: o aplicativo recebe a capacidade de instalar uma permissão que é então usada para gastos.

Os erros tornam-se mais perigosos quando uma carteira é usada ao mesmo tempo para armazenamento, negociação ativa e experiências. Nesse modo, um spender/operator desnecessário cria acesso a ativos que não faziam parte da operação original.

A principal ameaça das aprovações são as permissões ativas que permanecem nos contratos após a conclusão de uma tarefa. allowance ilimitado, um NFT operator habilitado e permissões em diversas redes aumentam a quantidade de ativos disponíveis para gastos sem novas confirmações.

As permissões devem ser verificadas separadamente para cada rede: as listas allowance e operator em Ethereum não correspondem a Arbitrum, Optimism, Polygon ou BSC, porque os registros de direitos são armazenados em contratos na rede específica.

Onde verificar as permissões: o que exatamente inspecionar e em que ordem

A revisão de permissão é uma sequência de etapas por rede e tipo de ativo. Os tokens ERC-20 e NFTs usam mecanismos de acesso diferentes, portanto, devem ser analisados ​​separadamente e fechados em ordem de prioridade: primeiro endereços desconhecidos e limites amplos, depois as permissões de trabalho restantes.

  1. Identifique a rede com mais atividade
    • As permissões não são “globais”: Ethereum, Arbitrum, Optimism, Polygon e BSC têm listas de aprovação separadas.
    • Comece pela rede onde a liquidez está concentrada e onde aconteceram as últimas transações.
  2. Verifique as aprovações ERC-20 e reduza o que é desnecessário
    • A prioridade vai para spenders desconhecidos e allowance ilimitados em stablecoins e tokens líquidos.
    • Remova permissões não utilizadas e reduza os limites da quantidade necessária para a operação atual.
  3. Verifique as aprovações NFT separadamente
    • Preste atenção especial a setApprovalForAll para mercados e jogos dApps.
    • Mantenha um operator ativo apenas durante o período em que for realmente necessário.
  4. Verifique os endereços que você deixa ativos
    • Combine endereços spender/operator com serviços confiáveis pelo endereço na assinatura ou no explorador.
    • Se um endereço não for reconhecível, redefina allowance ou desative operator e conceda uma nova permissão somente quando necessário.
AbordagemO que verificaLado forteLimitação
Scanner de blockchain de redeERC-20 allowance e frequentemente aprovações NFTDados de rede, sem confiar em uma interface dAppVocê precisa trocar de rede e analisar endereços
Serviços RevokePermissões de token e NFT na rede selecionadaLista + botão para redefinir allowance/desativar operatorA cobertura depende da rede e das integrações
Carteiras com simulaçãoGastador, limites, avisos antes de assinarMostra qual endereço receberá direitos antes da confirmaçãoDiferente profundidade de exibição de aprovação

O que procurar em uma lista de permissões

  • spender ou operator desconhecido. Se o endereço não for reconhecível, é um candidato revoke.
  • allowance ilimitado em ativos líquidos. Um grande allowance aumenta o valor de gasto disponível.
  • Permissões em L2s e cadeias laterais. As aprovações podem permanecer ativas em redes onde você não realiza transações há muito tempo.
  • NFT operators sem necessidade atual. Um operator ativo pode transferir NFTs sem novas confirmações.
  • Contratos de proxy e atualizações. Approve está vinculado ao endereço spender, portanto, uma permissão antiga permanece ativa mesmo se a lógica for alterada por meio de uma atualização.

Lógica de revisão: primeiro redefina allowances para endereços desconhecidos e remova permissões ilimitadas em tokens confidenciais e, em seguida, reduza os limites restantes para a quantidade necessária para as operações atuais.

A revisão de permissões deve corresponder à forma como as permissões são armazenadas: redes separadas, tokens separados, spenders/operators separados. Priorizar permissões desconhecidas e ilimitadas fecha os principais cenários de gastos sem novas confirmações.

Revoke é uma transação que define allowance como 0 para o par de tokens ou switches proprietário→spender→ setApprovalForAll(operator) para falso; após a confirmação da rede, o endereço spender/operator perde o direito de gasto.

Como obter permissões revoke corretamente: tokens, NFTs e erros comuns

Revoke é uma transação on-chain que altera allowance ou desativa um NFT operator. Com isso, o contrato registra um novo estado: um endereço específico não tem mais o direito de administrar seus ativos. Revoke interrompe gastos futuros, mas não reverte transações que já foram executadas.

Algoritmo revoke passo a passo para ERC-20

  1. Identifique a rede. As aprovações são isoladas por rede: Ethereum, Arbitrum, Optimism e outros L2s possuem listas de permissões separadas.
  2. Encontre o token e spender. Verifique o endereço do contrato do token, o nome do token e o limite allowance atual, especialmente para stablecoins e ativos líquidos.
  3. Execute revoke. A opção padrão é definir allowance como 0 por meio de approve(spender, 0) ou usar um botão revoke em um serviço.
  4. Verifique o resultado. Certifique-se de que allowance tenha se tornado 0 e a permissão não seja mais exibida como ativa.

Algoritmo revoke passo a passo para NFTs

  1. Abra a lista da coleção operator. Procure ativo setApprovalForAll entradas e endereços operator relacionados.
  2. Desative operator. O status deve ser alterado para falso.
  3. Repita para coleções de chaves. Verifique primeiro as coleções com maior valor e liquidez.

Erro comum: revoke é feito em uma rede enquanto o status allowance ou operator permanece ativo em outra. Se você usou pontes, agregadores e multirredes dApps, verifique as aprovações em cada rede separadamente.

Nuance ERC-20: alguns tokens requerem a sequência approve(spender, 0) antes de configurar um novo allowance. Nesses casos, revoke começa redefinindo o limite.

Revoke altera o registro de direitos no contrato: allowance passa a 0 ou operator está desabilitado. Para que revoke realmente feche o acesso, ele deve ser realizado na rede correta e para o par token→spender ou coleção correto→operator correto.

Se você concedeu approve/permit ou setApprovalForAll para um invasor, os gastos podem acontecer mais tarde, inclusive depois de você recarregar o saldo. Uma ordem de ação clara ajuda primeiro a mover os ativos para fora do escopo das permissões ativas, depois redefinir allowance e desabilitar operator para fechar o acesso a gastos.

Se você já concedeu um approve perigoso: um plano rápido de redução de danos

Nessa situação, a ordem das ações é importante: primeiro afaste os ativos das permissões ativas, depois redefina allowance e desative operator, e somente depois disso investigue a origem da assinatura.

Se phishing de aprovação se houver suspeita, o ponto crítico é que as permissões concedidas já podem ser utilizáveis. Embora allowance esteja acima de zero ou operator esteja ativado, os gastos podem ser iniciados a qualquer momento, inclusive após a chegada de novos fundos ao endereço.

  • Mova os ativos para um endereço “limpo”. Uma nova carteira com uma nova frase inicial interrompe a conexão com as aprovações atuais porque allowance e operator estão vinculadas ao endereço do antigo proprietário.
  • Permissões Revoke no endereço comprometido. Redefina allowance primeiro para stablecoins e tokens líquidos e depois para os tokens restantes.
  • Verifique as permissões NFT. Desativar setApprovalForAll para operators que não são necessários.
  • Desconecte as sessões dApp na carteira. Isso não altera allowance, mas remove sessões ativas do site que podem solicitar outra assinatura.
  • Isole o ambiente. Se houver risco de extensão maliciosa ou substituição de site, use outro navegador ou dispositivo.

Não concorde com “transferências de teste”, “verificações de segurança” ou “recuperação de fundos” sugeridas por estranhos. Tais solicitações são frequentemente utilizadas para obter uma nova assinatura ou transferência direta.

Após a concessão de uma permissão perigosa, a prioridade é reduzir a quantidade de ativos acessíveis por meio de allowance/operator e, em seguida, redefinir esses direitos com transações revoke. Enquanto os direitos permanecerem ativos, os gastos poderão acontecer sem novas confirmações.

Prevenir o phishing de aprovação se resume a controlar dois parâmetros: quem recebe o direito (spender/operator) e quão grande ou amplo é esse direito (allowance ou setApprovalForAll).

Prevenção: como conceder permissões sem se tornar um alvo fácil

A prevenção de phishing de aprovação é construída em torno do gerenciamento de permissões: separando funções de carteira, limitando allowance e desabilitando operator após a conclusão da tarefa.

A maioria das perdas está vinculada a permissões ativas que permanecem nos contratos após o término de uma operação: allowance ilimitado, um NFT operator habilitado e o hábito de confirmar assinaturas sem verificar o endereço. Esses registros de direitos permitem gastos sem novas confirmações até revoke.

Separando funções de carteira

Usar um endereço para armazenamento, negociação e experimentos torna qualquer approve crítico para todo o saldo desse endereço. A separação de endereços limita a quantidade de ativos expostos por meio de allowance ou operator. Se você escolher uma carteira de “armazenamento” de longo prazo, comece com uma revisão de carteira criptografada de hardware e configure o armazenamento frio antes do trabalho ativo do DeFi.

🧩 Configuração básica de três endereços

  • Armazenamento (longo prazo): capital principal, interações mínimas dApp, sem aprovações ativas.
  • Endereço operacional: atividade regular DeFi, saldo limitado, revisão programada de allowance e operator.
  • Endereço experimental: lançamentos aéreos, NFTs, novos projetos; o risco é limitado à quantidade armazenada nele.

Reduzindo o escopo de cada permissão

Mesmo ao trabalhar com serviços confiáveis, considere o cenário de um erro ou comprometimento spender/operator. Para ERC-20, o escopo do direito é definido por allowance; para NFTs, o escopo é definido por setApprovalForAll estado.

  • Use limites exatos. A permissão define o número máximo de tokens que um spender pode gastar.
  • Redefina allowance após a conclusão da tarefa. Isso acaba com os gastos transferFrom.
  • Verifique o endereço spender. A permissão é concedida ao endereço nos parâmetros de assinatura, não a um “site”.
  • Desative setApprovalForAll após a tarefa. O operador não deve permanecer ativo após a listagem ou uma sessão de jogo.
  • Não confirme por questão de urgência. A urgência é frequentemente usada para que a assinatura não seja inspecionada.

Modo de revisão: quando verificar as aprovações

  1. Após uma operação única. Se o serviço não for usado regularmente, redefina allowance ou desative operator após a conclusão da operação.
  2. Para um endereço DeFi operacional. Com atividade constante, revise as aprovações uma vez a cada uma ou duas semanas e remova permissões desnecessárias.
  3. Para um endereço experimental. Para novos dApps e airdrops, verifique e feche as permissões após cada sessão.

Modelo de trabalho: approve/permit concede um direito a um endereço específico, allowance define o limite, revoke altera o limite para 0 ou desativa operator.

A prevenção de aprovação é o gerenciamento ativo de permissões: separação de endereços, limites exatos de allowance e desativação de operator após a tarefa reduzem a quantidade de ativos disponíveis para gastos sem novas confirmações.

Approve permite chamada de protocolos transferFrom sem assinatura para cada operação; o mesmo mecanismo significa que uma permissão ativa pode ser usada para gastos posteriores, caso tenha sido concedida a um endereço desnecessário.

Approve como mecanismo: pontos fortes e riscos integrados

Approve é a base da infraestrutura DeFi: permite que protocolos executem operações por meio de transferFrom baseado em allowance, mas torna o proprietário responsável pelo endereço spender e pelo limite allowance.

O mecanismo approve é uma compensação entre manter ativos em seu próprio endereço e automatizar ações de protocolo. Os ativos permanecem em seu endereço, mas o contrato recebe o direito de gastá-los dentro do allowance definido em approve.

✅ Pontos fortes de approve

  • Os ativos permanecem no endereço do proprietário até serem gastos transferFrom.
  • Os protocolos podem executar operações sem assinatura para cada etapa usando allowance.
  • A permissão permite limitar o valor máximo de gasto para um spender específico.
  • As permissões são verificáveis na cadeia e podem ser redefinidas com uma transação revoke.

❌ Riscos integrados de aprovações

  • Uma permissão permanece ativa até revoke e não depende do fechamento de um site ou da desconexão de uma carteira.
  • allowance ilimitado aumenta a quantidade de tokens disponíveis para gastos se o spender estiver comprometido.
  • Se approve for assinado sem verificar spender e limite, o direito poderá ser concedido ao endereço errado.
  • DefinirAprovaçãoParaTodos para NFTs dá a operator o direito de transferir toda a coleção com uma ação.

Approve é um mecanismo de infraestrutura para gerenciamento de direitos. É conveniente porque a transferência é executada por meio de allowance sem assinaturas repetidas e arriscado porque uma permissão ativa funciona até revoke e pode ser usada para gastos posteriores.

Casos e lições: por que um “contrato correto” ainda pode se tornar um problema

Mesmo ao trabalhar com serviços legítimos, as aprovações ativas criam riscos: uma vulnerabilidade, atualização ou substituição de frontend torna-se perigosa se allowance já estiver registrado ou operator estiver habilitado no contrato.

A principal propriedade das aprovações é a ausência de “vida útil”. Caso a permissão tenha sido concedida, o contrato não precisa solicitar novamente approve: ele utiliza os direitos já registrados. Portanto o risco depende não só do serviço atual, mas também da lista de aprovações acumuladas no endereço.

🔓 Caso 1: vulnerabilidade em protocolo legítimo + aprovações ilimitadas

Um usuário concede approve ilimitado a um protocolo e posteriormente um bug é encontrado na lógica de gastos isso permite que o contrato gaste mais tokens do que o esperado.

  • O contrato já possui direito de gasto por meio de allowance, portanto o ataque não exige assinatura de novo proprietário.
  • allowance ilimitado aumenta o valor dos gastos até o saldo do token no endereço do proprietário.
  • Os usuários que não fizerem novas transações permanecerão vulneráveis até que o allowance seja redefinido.

approve ilimitado transforma um bug de protocolo em um risco para todo o saldo do token no endereço. O exato allowance limita os gastos máximos e o revoke encerra os gastos corretamente.

🧩 Caso 2: uma atualização de contrato de proxy altera o comportamento de acesso

Os contratos atualizáveis mantêm o mesmo endereço, mas o código nesse endereço pode mudar após uma atualização ou compromisso de governação.

  • Approve está vinculado ao endereço spender, não a uma versão de código específica.
  • Após uma atualização, o novo código pode usar allowance de maneira diferente da esperada pelo proprietário.
  • O antigo allowance permanece ativo até ser redefinido por uma transação.

Quando os protocolos são atualizados, as aprovações antigas devem ser revisadas porque allowance permanece ativo no mesmo endereço spender.

🧠 Caso 3: substituição de frontend enquanto a marca permanece familiar

O usuário visita um site familiar, mas a interface é substituída por DNS, anúncios, CDN ou extensões maliciosas.

  • A aparência visual da interface corresponde ao que o usuário espera.
  • Approve ou permit é concedido a um endereço que não é o contrato de serviço.
  • Marcar spender/operator na assinatura revela a substituição; marca e design, não.

Confie no endereço spender/operator e no limite allowance na assinatura, não no domínio e no design da página.

🛰️ Caso 4: agregadores e roteadores como gateway de acesso amplo

Agregadores e roteadores usam um spender para muitas rotas e protocolos.

  • Um endereço spender atende a muitos cenários e muitos tokens.
  • Se o spender for comprometido, o risco se espalhará para todos que o concederam allowance.
  • allowance ilimitado aumenta o valor que pode ser gasto por meio deste endereço.

Para roteadores, o limite allowance define o valor máximo de gasto, e o revoke regular remove permissões antigas que não são mais necessárias.

🖼️ Caso 5: setApprovalForAll para NFTs permanece ativo por anos

DefinirAprovaçãoParaTodos ativa um operator para toda a coleção e geralmente permanece ativo após a conclusão da tarefa.

  • Este é o status operator, não um limite por número de NFTs.
  • Mesmo sem atividade, o operator permanece habilitado no contrato de cobrança.
  • O comprometimento do operator torna possível a transferência de NFTs sem uma assinatura do novo proprietário.

Desativando setApprovalForAll por meio de terminações falsas, o direito do operator de transferir o NFTs do proprietário.

Um incidente se torna possível quando um allowance já está registrado ou um operator está habilitado no contrato. Nesse momento, os gastos podem ser executados sem a assinatura do novo proprietário.

Na prática, os incidentes acontecem porque as permissões permanecem após a conclusão das operações. A revisão regular e a desativação de allowances e operators desnecessários limitam a quantidade de ativos disponível para gastos sem uma nova assinatura.

O FAQ ajuda a esclarecer quais assinaturas concedem direitos, como funciona revoke e por que os gastos podem acontecer sem confirmação repetida.

Perguntas frequentes sobre phishing de aprovação, approve e revoke

Por que as pessoas dizem “esgotado sem assinatura” se eu assinei alguma coisa?

A assinatura era para conceder direitos, não para transferir fundos. Após approve, permit ou setApprovalForAll, o contrato recebe o direito de gastar ativos de acordo com sua lógica, sem confirmações de novos proprietários.

approve ilimitado é sempre um erro?

approve ilimitado registra um valor muito grande em allowance. Isso aumenta o número máximo de tokens que spender pode gastar transferFrom até que allowance seja redefinido.

revoke pode devolver fundos roubados?

Não. Revoke altera o estado do contrato apenas para o futuro: allowance torna-se 0 ou operator está desativado. As transações que já foram executadas não são revertidas.

Excluir a carteira ou “desconectar o site” remove as aprovações?

As permissões são armazenadas na cadeia dentro do token e dos contratos NFT. Desconectar um site ou excluir um aplicativo não altera o status allowance ou operator no contrato.

Onde exatamente o approve está armazenado?

Em estado de contrato inteligente. Para ERC-20 este é o registro allowance(proprietário, spender); para NFTs são aprovações e operators no contrato de cobrança.

approve pode ser limitado a um valor específico?

Sim. A chamada approve passa o parâmetro amount e esse valor define allowance. O spender não pode gastar mais do que os allowance permits atuais.

O que é mais perigoso: approve para um token ou setApprovalForAll para um NFT?

Normalmente setApprovalForAll é mais perigoso porque habilita um operator para toda a coleção sem limite no número de NFTs. O token approve é limitado por um número allowance e pode ser definido para um valor exato.

As aprovações precisam ser verificadas em L2s e cadeias laterais?

Sim. Cada rede armazena seus próprios registros de direitos em seus próprios contratos. A permissão em Ethereum e allowance em Arbitrum são valores diferentes, portanto, verificar apenas uma rede não mostra permissões em outras redes.

Uma carteira de hardware protege contra phishing de aprovação?

Uma carteira de hardware protege a chave privada e o processo de assinatura contra roubo no dispositivo, mas não altera o significado da ação que está sendo assinada. Um approve/permit perigoso ou setApprovalForAll ainda é uma concessão de direitos mesmo quando assinado em hardware.

O FAQ se resume a uma diferença verificável: uma assinatura pode conceder direitos (approve/permit/setApprovalForAll) em vez de transferir fundos. Embora esses direitos estejam ativos no contrato, os gastos podem acontecer sem confirmações do novo proprietário.

Um approve/permit errado ou setApprovalForAll concede a um endereço externo o direito de gastar tokens por meio de allowance ou transferir NFTs como operator; enquanto a permissão estiver ativa, a carteira não solicitará uma nova assinatura para os gastos em si.

Como se proteger contra phishing de aprovação e manter as permissões sob controle

As permissões são a base da mecânica DeFi, mas os status allowance e operator são exatamente o que permitem que os ativos sejam retirados sem uma assinatura repetida se o direito for concedido a um endereço desnecessário.

Phishing de aprovação é abuso de direitos legítimos. Um approve/permit ou setApprovalForAll cria um registro de acesso em um contrato que permite que os ativos sejam gastos posteriormente sem novas janelas de confirmação.

Para evitar deixar direitos ativos em um endereço, mantenha o controle através de ações concretas:

  • Verifique o endereço de acesso. A parte importante é spender/operator na assinatura e na lista de aprovações, não a marca ou design.
  • Limite allowance. Defina um limite específico da tarefa em vez de ilimitado e redefina allowance quando o direito não for mais necessário.
  • Desative operator para NFTs. Não vá embora setApprovalForAll ativado após a conclusão da ação.
  • Verifique todas as redes. A permissão e operator são armazenados separadamente em cada rede, portanto, revise todas as redes onde um dApp foi usado.
  • Endereços separados por função. O saldo de um endereço define o valor máximo que pode ser gasto através de direitos ativos nesse endereço.

Trate as aprovações como direitos de acesso ativos registrados em contratos. Limites mínimos de allowance, operators desativados e revisão em todas as redes reduzem a quantidade de ativos disponíveis para gastos sem uma nova assinatura.

🔍 Verificações de contrato inteligente antes de conectar
Um guia passo a passo: verificação de código, approve/permit, atualizações de proxy, sinais de alerta e ferramentas que ajudam a evitar a assinatura de permissões perigosas.

Explore mais sobre “DeFi”

Nesta seção você encontra mais análises, guias práticos e avaliações sobre o tema.

Abrir “DeFi”