A Uniswap falsa que drenou tudo

Novembro 2024. Um titular em Porto Alegre pesquisa "uniswap" no Google. O primeiro anúncio patrocinado é uniswap-app[.]org — parece idêntico à app.uniswap.org real. Ele conecta a carteira para trocar ETH por USDC. O site pede uma assinatura PermitBatch para "aprovação gasless de tokens". Ele assina.

O batch Permit2 assinado incluía USDC, USDT, DAI, WBTC e quatro outros tokens — todos os que ele já tinha aprovado para o Permit2 em swaps anteriores. Total drenado nos oito minutos seguintes: 312 mil USD.

Por que Permit2 é singularmente perigoso quando phishado

Permit2 é o contrato universal de aprovações da Uniswap. Um único endereço de contrato concentra aprovações das quais muitas dApps integradas dependem. Assine um PermitBatch malicioso e você concede a um único endereço atacante o direito de drenar todo token da lista, em uma assinatura. Não há revisão por token — a carteira mostra um prompt typed-data com uma lista de símbolos de token e um único botão "Sign".

Os quatro passos de verificação antes de qualquer assinatura Uniswap

  • A URL é app.uniswap.org. Não uniswap-app[.]org, não uniswap.exchange, não uniswap.fi. Marque o real e nunca use busca.
  • Confira o spender, não o contrato. Abra os detalhes completos da solicitação. O contrato Permit2, 0x000000000022D473030F116dDEE9F6B43aC78BA3 na mainnet Ethereum, aparece igualzinho numa assinatura de phishing e numa verdadeira, então não prova nada. O campo que importa é o spender: num swap real da Uniswap, é um contrato roteador listado na documentação oficial da Uniswap. Se você não consegue casar o spender com essa documentação, rejeite.
  • A lista de tokens combina com o que você está trocando. Trocar ETH por USDC gasta ETH nativo, que não precisa de permit nenhum. Um swap que parte de um token deveria cobrir aquele token, não oito.
  • O prazo de validade não é de anos. Um permit que vale por um ano ou mais, somado a um spender que você não consegue identificar, é a assinatura "quando eu tiver tempo, eu pego" do drainer.

Se você assinou

Você tem minutos. Abra a carteira, envie todo token na lista do Permit para uma carteira fresca sua, em ordem decrescente de valor em dólar. Pule os pequenos — gas importa. Em seguida, no revoke.cash, revogue a aprovação de cada token para o Permit2, junto com qualquer autorização do Permit2 que ainda apareça na lista. Revogar a aprovação ao Permit2 corta todos os spenders que passam por ele, inclusive o atacante.

A regra do bookmark

Não uso Google para navegar a qualquer protocolo DeFi. Bookmark na primeira visita, verificado por checagem cruzada no Twitter, e nunca desvio. Buscadores são vetor de ataque agora, não ferramenta.