Segurança

Patch silencioso deixa Cosmos EVM exposto e seis chains são drenadas

Seis redes que rodam o Cosmos EVM perderam fundos em uma exploração que começou com um veredito de triagem. O caso virou um manual de como um relato subestimado pode virar dreno em escala.

A brecha não está no consenso dessas redes, mas no ponto em que o Cosmos EVM concilia o estado da rede com o módulo x/bank do Cosmos SDK. É ali que contas de vesting guardam dois registros distintos, o saldo que pode ser gasto e o saldo que permanece trancado, enquanto o módulo de staking autoriza delegar os dois e a camada da EVM enxerga apenas o primeiro. Esse descasamento entre o que a EVM modela e o que o banco de dados do SDK registra é o solo sobre o qual a falha se desenvolveu, e a diferença passou despercebida tanto na triagem inicial quanto nas rodadas de auditoria externa que antecederam o lançamento.

Quando uma conta assim delega mais do que o saldo disponível, a subtração não verificada faz o valor dar a volta e chegar a um número próximo de dois elevado a 256. Esse saldo inflado foi usado para tomar o patrimônio de outra conta de alto valor, deixando a vítima com zero.

A operação aconteceu em uma única transação com variação nula de oferta, montada com um contrato malicioso em um endereço precomputado que primeiro havia sido transformado em conta de vesting. Para funcionar, as redes precisavam permitir a criação desse tipo de conta sem autorização. O encadeamento dos dois golpes, subtração e tomada, transformou uma soma aparentemente equilibrada em um esvaziamento quase instantâneo de carteiras com patrimônio relevante, e o saldo final de cada vítima era zero, sem que o suprimento total de tokens tivesse se alterado.

A decisão que abriu a janela

É aqui que a história deixa de ser sobre um bug e vira sobre um processo.

O reporte original foi avaliado, até 13 de agosto, como algo que atingiria apenas redes sem decimais na casa de 18. A equipe afirma que não conseguiu reproduzir o problema nessas configurações e concluiu, de forma incorreta, que o risco era restrito. No fim, todas as chains do Cosmos EVM foram confirmadas como afetadas, independentemente da configuração decimal.

Diante desse veredito, a correção entrou no processo de patch silencioso reservado a problemas que não ameaçam fundos ao vivo. A lógica por trás do método é manter o código fechado para não chamar a atenção de quem ainda não descobriu a falha. O problema é que, sem uma notificação privada às operadoras, quem lê o histórico público de commits passa a enxergar a mesma fragilidade que a equipe tentou esconder, e a janela entre o patch e a primeira exploração fica dependente apenas da curiosidade alheia. Em um relato com risco direto a recursos de produção, a política da própria Cosmos Labs prevê, por outro lado, mitigação de emergência, distribuição privada e atualização coordenada antes de qualquer divulgação pública.

O efeito colateral apareceu na prática. Quase oito horas depois de os patches saírem, um pull request aberto em um fork da Push Chain expôs em detalhes o caminho para repetir o golpe, em texto público e reproduzível. A MANTRA registrava o primeiro ataque ainda naquele mesmo intervalo. A comunicação oficial só veio mais tarde, quando a equipe da Cosmos Labs acionou por canais cifrados as operadoras registradas, e mesmo o primeiro aviso direto às redes demorou a chegar se comparado ao ritmo em que a falha se espalhava.

Os números mostram a escala. A equipe coordenou quarenta chains para avaliar exposição e mitigação, e treze delas receberam correção ou pausa sem novos incidentes. Onze redes rodando o Cosmos EVM nunca haviam se registrado nos canais de segurança. Nos últimos treze meses, trinta e sete vulnerabilidades foram corrigidas em silêncio.

Sobre o valor, a Cosmos Labs fala em cerca de US$ 2,87 milhões convertidos em outras criptos em exchanges descentralizadas e mais US$ 2,85 milhões vendidos em corretoras centralizadas, com as contas usadas pelos atacantes já congeladas.

O entendimento de que o bug atingia todas as redes só foi consolidado em 13 de agosto. O patch foi distribuído em 19 de agosto, nas versões corrigidas 0.6.2 e 0.7.2, com uma proteção contra underflow no retorno do saldo ao estado. A mudança quebra o estado atual das redes e exige atualização coordenada. Para quem não conseguir atualizar, a orientação é interromper a produção de blocos em vez de tentar uma solução parcial.

A Cosmos Labs admitiu que os sistemas de triagem precisam evoluir para identificar casos em que o alcance de uma vulnerabilidade supera o que foi relatado. A mudança de método, mais do que o próprio código, é o que define se o próximo alerta será contido antes de virar mais uma página no histórico de exploits do ecossistema.

⚠️ Aviso importante

As informações aqui descritas refletem pesquisas realizadas pelo LaboNews e não devem ser consideradas recomendação de investimento ou endosso de segurança sobre ferramentas ou links externos. Recomendamos que, ao investir ou utilizar ferramentas de terceiros, você faça sua própria pesquisa sobre a segurança e os riscos envolvidos.

Compartilhar

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *