Falha no Cosmos EVM é explorada após aviso de vulnerabilidade em blockchains que o utilizam
31 de Agosto de 2026

A Cosmos Labs alertou que uma falha crítica no tratamento de saldos no módulo compartilhado Cosmos EVM foi explorada para desviar fundos de seis blockchains entre 20 e 25 de agosto de 2026.

A vulnerabilidade, identificada como GHSA-7g4w-cg88-2cq2, foi classificada como crítica pela empresa e publicada sem identificador CVE, sem classificação de fraqueza e sem pontuação CVSS.

As versões afetadas são inferiores a 0.6.2 e de 0.7.0 até 0.7.1. A correção foi lançada nas versões v0.6.2 e v0.7.2 em 19 de agosto. Os operadores das redes foram orientados a atualizar para uma dessas versões ou posteriores, em uma mudança que altera o estado da cadeia e exige uma atualização coordenada da rede.

Quem não puder atualizar imediatamente deve interromper a cadeia em vez de tentar uma atualização coordenada por governança.

Em uma análise pós-incidente publicada em 28 de agosto, a Cosmos Labs informou que a falha foi reportada por meio de seu programa de bug bounty em 25 de abril e, na época, foi avaliada como sem risco para fundos em redes ativas.

“Não conseguimos reproduzir a vulnerabilidade em redes com 18 casas decimais e concluímos incorretamente que ela afetava apenas redes sem 18 casas decimais”, disse a Cosmos Labs no relatório.

A equipe confirmou em 13 de agosto que todas as chains Cosmos EVM estavam afetadas, independentemente da configuração de casas decimais. A correção então seguiu pelo mesmo processo público de silent patch que a empresa reserva para problemas que não causam perda de fundos em chains de produção.

“Neste ponto, para uma vulnerabilidade conhecida por ameaçar os fundos dos usuários em redes de produção, a equipe normalmente usaria canais seguros para distribuir um patch de forma privada às redes afetadas. Como o patch já estava disponível publicamente na branch principal sem exploração conhecida, a equipe concluiu que seria seguro prosseguir com o processo de silent patch”, afirmou a Cosmos Labs.

A própria política pública de silent patch da empresa define um caminho diferente para uma falha dessa gravidade.

“Quando um problema apresenta risco imediato ou para toda a rede, a Cosmos Labs iniciará mitigação de emergência, distribuição privada da correção ou atualizações coordenadas antes de qualquer divulgação pública”, diz a política de bug bounty, atualizada pela última vez em 27 de julho.

A falha está no código que faz a reconciliação entre o estado da Ethereum Virtual Machine e o módulo x/bank do Cosmos SDK. O StateDB da EVM acompanha apenas o saldo disponível de uma conta, enquanto contas com vesting no estado do SDK mantêm tanto um saldo disponível quanto um saldo bloqueado, e tanto x/staking quanto o precompile de staking permitem a delegação da parte bloqueada.

Quando uma conta com vesting delega mais do que seu saldo disponível, a gravação posterior subtrai o valor total delegado do saldo disponível, que é menor. Essa subtração não é verificada, e o saldo “dá a volta” para algo em torno de 2^256.

A reconciliação então cunha valores em caso de diferença positiva e queima em caso de diferença negativa. O atacante pode mover uma quantidade finita para fora da conta “enrolada”, ou enviar a uma conta da vítima 2^256 menos o saldo dela, fazendo a reconciliação queimar seus valores reais.

As chains na linha 0.6.x cunham e queimam no livro-razão do SDK, então uma cunhagem em grande escala provoca estouro de oferta e derruba a cadeia. Já as chains da linha 0.7.x definem saldos diretamente em x/bank e aceitam mudanças que sobrevivem à conversão de uint256 para int256.

As duas metades da exploração rodam dentro de uma única transação, com variação líquida de oferta igual a zero, a partir de um contrato implantado em um endereço pré-computado que primeiro foi transformado em uma conta com vesting. A exploração exige que a chain permita a criação de contas com vesting sem permissão prévia.

Os operadores que rodam Cosmos EVM foram orientados a seguir estas medidas:

Atualizar para a v0.6.2, v0.7.2 ou posterior, aplicando a mudança como uma atualização coordenada da rede, porque a alteração quebra o estado.

Interromper em vez de votar. As chains que não puderem atualizar de uma vez devem parar a produção de blocos, em vez de executar uma atualização coordenada por governança. O alerta afirma que não há mitigação apenas por configuração e que desativar o precompile de staking remove o principal caminho de acionamento, mas não substitui o patch.

Fechar a pré-condição. Rejeitar MsgCreateVestingAccount, MsgCreatePermanentLockedAccount e MsgCreatePeriodicVestingAccount no ante handler. As contas com vesting definidas no genesis não são afetadas.

Verificar o caminho de execução em uma cópia da rede. Um cherry-pick que corrige apenas a função auxiliar exportada pode deixar uma cópia não exportada duplicada intacta, enquanto todos os testes continuam passando.

Aplicar as duas correções omitidas no alerta. O snapshot do saldo bloqueado e a proteção da conta do módulo são mudanças separadas, e a proteção da conta do módulo rejeita contas de módulo de forma incondicional, o que quebra chamadas EVM feitas a partir de uma conta de módulo.

Registrar um contato de segurança com a Cosmos Labs, que soube, durante o incidente, de 11 implantações Cosmos EVM que nunca haviam se registrado em seus canais de segurança.

O alerta documenta uma mudança upstream, a proteção contra underflow em SubBalance, mesclada à branch principal em 15 de maio na pull request #1176 e retroportada em 13 de agosto. Duas outras correções de saldo estão no mesmo repositório, mas não são citadas em lugar nenhum nele.

A pull request #1187, mesclada em 20 de maio, registra o saldo bloqueado de uma conta para que o saldo bancário seja reconstruído corretamente depois que um precompile o altera. Os retroportes de #1187 para as duas linhas de lançamento foram abertos no mesmo dia e mesclados em menos de 24 horas, enquanto o retroporte de #1176, uma mudança igualmente que altera o estado, veio cerca de 90 dias depois.

O commit 3524ebc, intitulado “Merge commit from fork”, rejeita qualquer tentativa de definir o saldo de uma conta de módulo.

O contribuidor da ZetaChain morde08 afirmou, em um port das três correções publicado em 21 de agosto, que o patch aplicado por cherry-pick deixou sem correção o caminho em produção do fork, porque o fork mantinha funções auxiliares duplicadas e não exportadas, enquanto a mudança upstream atingiu apenas a função exportada.

A Warden Protocol adotou o caminho oposto dois dias depois e bloqueou por completo a criação de contas com vesting.

“As contas com vesting são a única origem de saldos bloqueados na Warden e nada depende de os usuários conseguirem criá-las, então remover esse caminho elimina a pré-condição em vez de confiar que a reconstrução esteja correta”, disse o contribuidor da Warden Protocol jlehtimaki em uma mensagem de commit.

Uma pull request pública no fork da Push Chain sobre o Cosmos EVM descreveu a vulnerabilidade e seu caminho de exploração em detalhes às 07h16 UTC de 20 de agosto, 8 horas e 15 minutos depois do envio dos lançamentos.

O primeiro ataque, contra a MANTRA, começou 11 horas e 50 minutos depois, às 19h06 UTC. A Cosmos Labs enviou sua primeira notificação privada por e-mail seguro às 03h36 UTC de 21 de agosto, cerca de duas horas depois de a MANTRA relatar que havia sido explorada.

“A Cosmos Labs lançou patches para 37 vulnerabilidades de forma silenciosa nos últimos 13 meses, sem que desenvolvedores downstream descrevessem com precisão os caminhos de exploração em público”, disse a empresa no relatório pós-incidente.

As notas de versão da v0.6.2 e da v0.7.2 informam que ambas trazem correções de segurança importantes e devem ser aplicadas o quanto antes, mas não mencionam o retroporte de segurança em seus registros de mudanças. A imprensa confirmou em 29 de agosto que nenhuma das duas versões lista as pull requests responsáveis por essa correção.

A Cosmos Labs disse ter conhecimento de seis chains nas quais o exploit foi usado.

Segundo a empresa, os atacantes venderam aproximadamente US$ 2,87 milhões em ativos afetados em exchanges descentralizadas, com base nos preços de 19 de agosto, valor fornecido pelas próprias chains afetadas e que não passou por auditoria independente. Outros US$ 2,85 milhões foram vendidos em exchanges centralizadas, estimativa calculada pela Cosmos Labs com base em dados públicos de volume.

O ecossistema Cosmos reúne mais de 115 blockchains públicas conhecidas, e a empresa afirmou não manter um registro completo das redes que executam seu software, a mesma lacuna que deixou fornecedores downstream lidando com correções de falhas em sistemas de arquivos empacotados em julho.

A Cosmos Labs foi procurada para comentar por que o patch não foi distribuído privadamente depois que a equipe confirmou que todas as chains estavam afetadas.

Publicidade

Anuncie no CaveiraTech e coloque sua marca na frente de milhares de profissionais de cybersecurity

Nossa audiência é formada por analistas, pentesters, decisores e entusiastas que consomem nossas notícias todo dia pelo Site, Newsletter e Instagram. Fale com quem realmente importa para o seu negócio. Anuncie aqui. Saiba mais...