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ãouniswap-app[.]org, nãouniswap.exchange, nãouniswap.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,
0x000000000022D473030F116dDEE9F6B43aC78BA3na 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.