O EIP-2612 Permit é uma extensão do padrão ERC-20 que adiciona ao contrato a função permit(owner, spender, value, deadline, v, r, s). Em vez de exigir uma transação approve on-chain — que custa gas e exige carteira com saldo de ETH — o portador do token assina uma mensagem EIP-712 fora da rede, autorizando o spender a transferir value unidades até deadline. Quando o spender precisa usar a permissão, ele empacota a assinatura na própria transação dele e queima o gas. Em 2026, USDC e DAI são os principais stablecoins com suporte nativo; USDT continua de fora.

Por que esse phishing é mais perigoso que setApprovalForAll

Quando o golpe envolve setApprovalForAll, o popup da MetaMask exibe pelo menos a palavra "Approve" — algum sinal visual. O Permit aparece num formato bem diferente: uma estrutura EIP-712 com campos Owner, Spender, Value, Nonce e Deadline. Versões mais antigas da MetaMask renderizavam isso como um hash hexadecimal indecifrável. Um phisher que escreve "Para receber o airdrop, assine para confirmar identidade" passa rasante por noventa por cento dos usuários.

Depois da assinatura, o atacante chama permit e em seguida transferFrom, esvaziando seu saldo de USDC. Você não enviou nenhuma transação on-chain — não há gas debitado da sua carteira — e mesmo assim o dinheiro saiu. A irreversibilidade é a mesma de qualquer transação cripto: sem volta.

Como identificar o popup armadilha

Quatro campos para conferir sempre. Owner: é seu próprio endereço, certo? Spender: o destinatário da autorização — pesquise em um explorador como BscScan ou Etherscan para ver se o endereço pertence a um contrato conhecido e legítimo. Value: se aparecer uint256.max ou um número astronômico para um app que não justifica isso, feche imediatamente. Deadline: aplicações honestas costumam pedir prazos curtos, de uma a algumas horas — não décadas.

Defesa em camadas

A partir de 2024, a MetaMask incorporou um recurso de "Signature Insight" que sinaliza assinaturas de Permit suspeitas com aviso vermelho. Extensões como Wallet Guard e Pocket Universe acrescentam verificação por lista branca de contratos. Para situações pós-erro, o Revoke.cash mostra o estado do nonce de Permit do token; como a assinatura em si não pode ser "cancelada" on-chain, o único movimento de mitigação é transferir todo o saldo para outra carteira antes que o atacante execute o transferFrom. Quando a corrida começa, ela é literal.

Leitura adicional