Permissões ERC-20 e Approve Ilimitado: Como Revogar Acessos e Blindar a Tua Empresa

Permissões ERC-20 e Approve Ilimitado: Como Revogar Acessos e Blindar a Tua Empresa

A Bomba-Relógio na Tua Carteira: Como Permissões Antigas Destroem a Tesouraria

Na gestão financeira tradicional, nenhum administrador assinaria uma procuração bancária a conceder a um fornecedor de software o direito eterno e ilimitado de debitar dinheiro da conta da empresa sem data de validade. No entanto, no ecossistema Web3, centenas de empresas cometem exatamente este erro sem se aperceberem.

O mecanismo responsável chama-se Permissão ERC-20 e funciona através da função approve().

Quando a tua organização interage com uma corretora descentralizada, um protocolo de empréstimos ou uma plataforma de pagamentos na Ethereum ou noutra rede compatível com EVM, esse contrato inteligente não consegue mexer no teu dinheiro por iniciativa própria. Para poder movimentar os teus USDC, EURC ou DAI, o contrato necessita de uma autorização formal assinada pela tua chave criptográfica.

Para poupar taxas de rede aos clientes e tornar a navegação mais rápida, as interfaces destas aplicações colocam quase sempre no ecrã um pedido de autorização de montante astronómico: 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ($2^{256} - 1$ tokens, ou seja, dinheiro virtualmente infinito).

Depois de aprovares essa operação, a permissão não desaparece quando a troca comercial termina. Fica gravada para sempre na memória do contrato da moeda. Se esse protocolo externo for pirateado dois anos mais tarde ou sofrer uma fuga de chaves, os atacantes conseguem drenar todo o saldo que a tua empresa tiver na carteira nesse momento—mesmo que não tenhas acedido àquele site há mais de vinte meses.

A Autoridade Europeia dos Valores Mobiliários e dos Mercados (ESMA) tem alertado repetidamente para os riscos operacionais decorrentes de permissões adormecidas em contratos inteligentes. Na WebXtek e nas auditorias de custódia institucional que realizamos em conjunto com a Luso Digital Assets, auditar e revogar aprovações antigas é uma das primeiras medidas de segurança que aplicamos.

ANATOMIA DE UM ROUBO POR PERMISSÕES ESQUECIDAS

  • ANO DE 2024: A TUA EMPRESA FAZ UMA CONVERSÃO DE MOEDAS
  • Carteira da Empresa: Assina approve(Router, MAX_INT)
  • Registo Gravado no Contrato EURC: allowance[Empresa][Router_DEX] = 115.792.089.237.316.195.423,…
  • A tua empresa converte 10.000 € e tudo corre normalmente.
  • ANO DE 2026: O PROTOCOLO ANTIGO É PIRATEADO
    1. Um hacker descobre uma vulnerabilidade crítica no Router_DEX.
    1. O invasor assume o controlo da lógica do contrato.
  1. O atacante corre a instrução: EURC.transferFrom(Carteira_Empresa, Carteira_Hacker, 500.000)
  2. O contrato da moeda verifica: “O Router tem autorização?”
  • Resposta do Contrato: “SIM! Tem autorização ilimitada desde 2024.”
  • RESULTADO: 500.000 € roubados em segundos sem ninguém aprovar nada!

Como Funciona o approve() na Máquina Virtual Ethereum

Para protegeres os ativos da tua organização, tens de compreender o que se passa por detrás do ecrã no código dos contratos ERC-20.

Num contrato inteligente de uma moeda digital, os saldos e as permissões de levantamento são guardados em tabelas de memória associativa simples:

mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;

Quando assinas uma autorização, não estás a enviar dinheiro a ninguém; estás apenas a preencher a tabela allowance. Mais tarde, quando o serviço de pagamentos ou a corretora quiser movimentar os teus ativos, executa o comando:

function transferFrom(address de, address para, uint256 valor) public returns (bool) {
    require(balanceOf[de] >= valor, "Saldo insuficiente");
    require(allowance[de][msg.sender] >= valor, "Permissao insuficiente");
    
    allowance[de][msg.sender] -= valor;
    balanceOf[de] -= valor;
    balanceOf[para] += valor;
    return true;
}

Repara no pormenor crítico: o contrato confere o teu saldo no momento exato da transferência, e não o saldo que tinhas quando deste a autorização no passado. Se a tua empresa tinha 10.000 € na carteira em 2024, mas depositou 1.000.000 € de financiamento em 2026, aquela permissão antiga dá ao invasor o poder de limpar o milhão de euros até ao último cêntimo.

COMO AS AUTORIZAÇÕES ANTIGAS AMEAÇAM O CAPITAL NOVO

  • Estado Interno do Contrato da Moeda Digital
  • Titular: 0xCarteiraTuaEmpresa…
  • Saldo Atual: 2.000.000 EURC (Recebido de um Novo Investimento)
  • Permissões em Aberto: - Contrato: 0xYieldFarm2024… Autorização: ILIMITADA (PERIGO)
  • Contrato: 0xPonteAntiga2023… Autorização: ILIMITADA (PERIGO)
  • Contrato: 0xCofreSeguroSafe… Autorização: 50.000 EURC (OK)
  • Mesmo que não uses a 0xYieldFarm há 2 anos, ela guarda uma chave mestra capaz de levar embora todos os 2 milhões de euros da empresa!

Ao criares fluxos financeiros seguros através de uma plataforma dedicada, podes programar restrições para que cada pagamento tenha uma autorização estritamente limitada ao cêntimo necessário.

A Solução Moderna: Padrão Permit2 e Prazos de Expiração

Para resolver de vez a insegurança das aprovações ilimitadas permanentes, a equipa da Uniswap concebeu e disponibilizou em código aberto o protocolo Permit2.

O Permit2 traz três avanços cruciais para a segurança das empresas:

  1. Canal Central de Confiança Auditado: Em vez de dares permissões a dezenas de contratos desconhecidos, a tua carteira autoriza apenas o contrato central e auditado do Permit2.
  2. Assinaturas EIP-712 com Prazo Estrito: Cada aplicação pede autorização através de uma mensagem digital que especifica o montante exato, a morada autorizada e uma data de validade rigorosa.
  3. Expiração Automática no Tempo: Se a operação não for submetida dentro do prazo estipulado (por exemplo, 20 minutos), a assinatura perde a validade automaticamente. Se alguém tentar reutilizar essa mensagem dias depois, o contrato bloqueia a transação de imediato.

ARQUITETURA DE PERMISSÕES COM EXPIRAÇÃO NO PERMIT2

  • APROVAÇÃO ERC-20 CLÁSSICA: Dás Autorização → Ativa para Sempre (Risco Eterno!) → Assalto!
  • ARQUITETURA MODERNA COM PERMIT2: [Cofre da Empresa] → Assina Mensagem Permit2 Estruturada:
  • Montante: 100.000 EURC
  • Contrato Autorizado: Protocolo de Pagamentos Verificado
  • Prazo de Validade: Hora Atual + 15 Minutos (Limite Inviolável!)
  • Pagamento executado ao minuto 4 → SUCESSO COMPROVADO
  • Invasor tenta explorar o protocolo 2 horas depois → FALHA
  • Contrato Permit2: “O prazo desta assinatura já expirou! BLOQUEADO!”
  • Resultado: Nem um único cêntimo da tua empresa é roubado.

Como Auditar e Revogar Permissões em Aberto na Tua Carteira

Para manteres a tesouraria da tua organização a salvo de incidentes, deves instaurar um processo de auditoria periódica:

Passo 1: Verificar o Registo On-Chain de Permissões

Utiliza ferramentas auditadas de análise de permissões (como o Revoke.cash ou o verificador de aprovações do Etherscan) para listar todas as aplicações que têm autorização para debitar moedas da carteira da tua empresa.

Passo 2: A Transação de Revogação (approve(0))

Para cancelares uma permissão suspeita ou inativa, a tua carteira tem de enviar uma transação para a rede definindo o montante autorizado de volta a zero: contratoToken.approve(enderecoAplicacao, 0)

Assim que este movimento for confirmado pelos mineradores, a autorização é destruída e o contrato externo perde imediatamente o poder de movimentar os teus ativos.

Nos nossos serviços de consultoria técnica, configuramos robôs de vigilância que alertam o departamento financeiro sempre que uma aprovação não autorizada é detetada na tua conta corporativa.

Regras de Higiene para a Carteira da Tua Empresa

Para garantires que nenhuma autorização adormecida coloca em perigo a estabilidade da tua empresa, deves estabelecer regras claras para toda a equipa:

MATRIZ DE GOVERNAÇÃO DE PERMISSÕES PARA A TUA EMPRESA

Regra de Controlo Procedimento Risco Que Consegues Evitar
Valor da Aprovação Apenas o valor exato Esvaziamento retroativo
Validade de Acessos Exigir Permit2 Permissões eternas
Segregação Contas Carteiras descartáveis Risco de contágio ao cofre —
Auditoria de Rotina Limpeza quinzenal Assaltos silenciosos

Protocolo Obrigatório para a Tua Gestão de Tesouraria:

  • Proíbe Aprovações Ilimitadas: Instrui a tua equipa financeira para nunca confirmar autorizações com valores máximos padrão (max uint256). Edita sempre o campo no ecrã para bater certo com a fatura exata que vais liquidar.
  • Isola as Reservas Principais: Nunca dês permissões nem interajas com dApps a partir da carteira onde guardas as poupanças da empresa. Transfere apenas as quantias necessárias para carteiras operacionais efémeras antes de fazeres trocas.
  • Revoga Autorizações Quinzenalmente: Cria a rotina de limpar todas as permissões que já não são necessárias no final de cada quinzena, garantindo que contratos inativos não ficam ligados aos teus fundos.
  • Exige Dupla Autorização no Quórum: Configura a tua carteira multi-assinatura para que qualquer emissão ou alteração de permissão exija a assinatura de pelo menos dois administradores independentes.

Ao tratares as permissões de contratos com o mesmo rigor com que tratas os poderes bancários da tua empresa, proteges o capital da organização contra os perigos ocultos da Web3.

Na prática, aplicas exatamente estes padrões operacionais em setores exigentes como wallets web3 e gateways de pagamento e plataformas de corretagem cripto e web3. Quando alinhas a tua estrutura através de desenvolvimento web3 & blockchain e consultoria técnica antes de construir, transformas boas práticas técnicas numa vantagem competitiva real e mensurável para o teu negócio.

[+] [ INDEX_DIRECTORY ] 16 tópicos ▼
[ SYSTEM.FAQ ]

Perguntas Frequentes

O que é uma permissão (allowance) num token ERC-20?

É um registo gravado no contrato inteligente da moeda (`allowance[titular][aplicacao]`) que dá a um contrato externo autorização formal para retirar fundos da tua carteira através da função `transferFrom`.

Por que motivo as plataformas pedem frequentemente autorização de valor 'ilimitado'?

Para evitar que o utilizador tenha de pagar taxas de rede a aprovar transações de cada vez que negoceia, as aplicações pedem autorização para gastar um valor astronómico ($2^{256} - 1$ moedas).

Pode uma falha num protocolo que já não usas afetar o dinheiro atual da tua empresa?

Sim. Se deste autorização ilimitada a um contrato em 2024 e esse protocolo for pirateado em 2026, os hackers podem usar essa permissão esquecida para retirar os fundos que tens na carteira hoje.

Que melhorias traz o padrão Permit2 em relação às aprovações tradicionais?

O Permit2 introduz prazos de validade automáticos nas assinaturas e permissões por lote, garantindo que as autorizações expiram sozinhas em minutos sem ficarem ativas para sempre.

> INICIAR_PROJETO

Precisa de um website que transmita confiança, apareça na pesquisa e dê mais força à sua presença digital? Comece a conversa aqui.