Fluid perde US$ 215 mil após invasor controlar chaves
A Fluid perdeu cerca de US$ 215 mil depois que um invasor controlou as duas chaves operacionais usadas na distribuição de recompensas, publicou raízes Merkle falsas e enviou os recursos ao Tornado Cash.
Em 27 de maio, o atacante já havia retirado os tokens quando o caso começou a circular publicamente. A Fluid, protocolo DeFi baseado em Ethereum, usa um sistema em duas etapas para distribuir recompensas. Primeiro, uma chave propõe uma raiz Merkle. Depois, uma segunda chave aprova essa raiz. Contudo, uma análise da BlackHartInc apontou que as duas funções estavam sob controle de um único agente. Isso eliminou a separação operacional prevista como defesa.
Além disso, o episódio expôs um problema recorrente no mercado cripto em 2026. Estruturas com múltiplas chaves perdem eficácia quando a custódia real se concentra em uma só entidade. Nesse sentido, o caso da Fluid não indicou uma falha do contrato inteligente, mas um colapso no desenho operacional de segurança.
Como o ataque à Fluid aconteceu
Raiz fraudulenta, aprovação rápida e saque imediato
A chave de proposta enviou uma raiz voltada ao próprio invasor para o distribuidor de FLUID às 21h11min11s UTC. Logo depois, apenas 12 segundos mais tarde, a mesma pessoa aprovou a raiz com a chave de aprovação. Em seguida, 24 segundos após a proposta inicial, executou a reivindicação com uma prova Merkle vazia.
A análise forense da BlackHart descreveu que isso não ocorreu por bug. Em uma lista de recompensas com apenas uma entrada, a raiz gerada coincide com sua única folha. Assim, o contrato não exige um caminho de prova adicional. Portanto, a validação ocorreu dentro das regras previstas.
Depois disso, o mesmo ciclo de propor, aprovar e reivindicar se repetiu contra o distribuidor de GHO às 21h13min59s UTC. Horas depois, o invasor também drenou um terceiro distribuidor com pequena quantia em cbBTC. No total, ele levou aproximadamente 125.109 FLUID, 51.946 GHO e uma fração de cbBTC em Ethereum, Base e Arbitrum.
Além de comprometer a operação de recompensas, o ataque mostrou que não havia atraso obrigatório entre aprovação e pagamento. Como resultado, todo o fluxo principal terminou em menos de 24 segundos.
O que foi afetado e o que permaneceu intacto
Distribuidores de recompensas foram o alvo do invasor
Os mercados de empréstimo, os cofres e a liquidez da DEX da Fluid não faziam parte do escopo dessas chaves. Ou seja, os contratos drenados eram apenas os distribuidores de recompensas. Em publicação no X, a equipe da 0xfluid afirmou que os contratos inteligentes centrais do protocolo não sofreram impacto. Também disse que os fundos dos usuários não ficaram em risco por causa do incidente.
Posteriormente, os FLUID e GHO roubados foram trocados por cerca de 103 ETH por meio do roteador de swap da MetaMask. Além disso, aproximadamente 142,6 ETH terminaram no Tornado Cash. Parte do valor passou por carteiras de retransmissão, enquanto outra parte seguiu diretamente para o mixer. Da mesma forma, os montantes obtidos em Base e Arbitrum voltaram antes para Ethereum e só então foram misturados.
Ainda assim, um forte volume de saques nos dias seguintes gerou confusão no mercado. O movimento, estimado entre US$ 70 milhões e US$ 110 milhões, não indicou um segundo ataque. Na prática, tratou-se de retiradas feitas pelos próprios depositantes após a perda de confiança causada pela divulgação do episódio.
Resposta da equipe e críticas à comunicação
Medidas vieram horas depois da invasão
Cerca de dez horas após o primeiro desvio, em 28 de maio, às 07h05 UTC, a equipe da Fluid removeu as funções comprometidas de propositor e aprovador de dez distribuidores de recompensas em uma transação em lote. Em seguida, transferiu aproximadamente 314 mil FLUID e 7.400 USDC remanescentes para um endereço considerado seguro.
No entanto, a comunicação pública inicial foi limitada. A equipe informou apenas que as reivindicações de recompensas estavam pausadas para atualizações. Não mencionou de imediato o comprometimento das chaves nem a perda de fundos. O caso ganhou repercussão mais ampla apenas em 31 de maio, quatro dias após o ataque, quando um credor já havia retirado US$ 77 milhões em USDC a partir de 28 de maio.
Ademais, Pablo Veyrat, cofundador da Merkl, comentou o episódio ao explicar escolhas de arquitetura do próprio protocolo. Segundo ele, a Merkl opera com três bots independentes de contestação, em infraestrutura separada. Cada um verifica novas árvores Merkle antes que uma raiz entre em vigor. Além disso, existe um atraso mínimo de uma hora entre a publicação de uma nova raiz e a liberação das reivindicações, explicou.
Em resumo, o caso da Fluid reforça que segurança em protocolos de criptomoedas não depende apenas do código. Acima de tudo, depende da separação real de poderes, de monitoramento em tempo real e de atrasos operacionais capazes de interromper ações maliciosas antes da liquidação final. Os dados divulgados indicam que o prejuízo ficou concentrado nos distribuidores de recompensas, enquanto os contratos centrais e os fundos dos usuários permaneceram intactos.