Ethereum pos bug.jpg

Bug do cliente de prova de participação Ethereum capturado e corrigido sem incidentes

Desenvolvedores Ethereum identificado um bug no cliente Besu Ethereum que poderia ter levado a “falha de consenso em redes com várias implementações de EVM”.

Gary Schulte relatou o problema ao repositório Hyperledger GitHub e foi encontrado por Martin Holst Swende. Entende-se que “nenhuma rede de produção possui transações que desencadeariam essa falha”.

Bug identificado durante a revisão do código The Merge

Swende documentou que encontrou o bug enquanto “fazendo algum #ethereum fuzzing em preparação para #TheMesclar.” Em resposta a um jornalista da CryptoSlate, Swende afirmou que os usuários que executam um nó Besu ficariam presos e “não conseguiriam seguir a cadeia de cânones”. Além disso, qualquer “rede dominada por besu poderia ter sido interrompida”.

o Besu client é o segundo cliente mais popular na rede Ethereum atrás do Geth. De acordo com dados disponíveis via ethernodes.org, o cliente Besu é usado por 7,81% dos clientes da rede principal Ethereum.

Versões vulneráveis ​​do cliente Besu

A versão 22.7.1 do cliente Besu contém uma correção para garantir que “o excesso de gás não seja alocado para chamadas de transações internas e corrigindo os erros de excesso de gás”.

Versões anteriores a 22.1.3 também “impedem a execução incorreta”, no entanto, a rede principal Ethereum requer outros recursos disponíveis apenas em versões posteriores. Cliente versões 22.4.0 a 22.7.0 são atualmente considerados vulneráveis ​​ao bug do gás.

Como resultado, os usuários do cliente Besu na rede principal devem atualizar para a versão corrigida.

Impacto e resolução

Danno Ferrin criou um artigo completo sobre o assunto em um artigo do Hackmd publicado em 21 de setembro. A análise de Ferrin afirmou que

“Uma falha no tratamento de dados não assinados como dados assinados em um contrato inteligente codificado corretamente pode criar uma chamada de função que retornará mais gás do que foi passado.”

Mais informações técnicas sobre o bug podem ser encontradas em postagem de Ferrin. No entanto, a principal conclusão é que o bug foi resolvido sem nenhum problema na rede principal Ethereum. Para um mau ator explorar maliciosamente o bug, ele teria que agir de maneira precisa.

“Para elevar isso a um bug que interrompe a cadeia, foi necessária uma chamada deliberadamente criada, envolvendo algumas interações com o EIP-150 “todos menos um 64º” regra e reservando uma parte do gás disponível para o contrato de chamada.”

Se o bug não fosse encontrado, qualquer cadeia com alta participação do cliente Besu poderia ter experimentado um “loop infinito” de contrato inteligente, pelo qual o contrato “realmente seria executado para sempre”.

Ferrin afirmou que o fuzzing permitiu que os desenvolvedores identificassem e corrigissem o bug sem problemas. Fuzzing é um método usado por desenvolvedores de software “que envolve o fornecimento de dados inválidos, inesperados ou aleatórios como entradas para um programa de computador”.

“A maior lição demonstrada por esta exploração é que a comparação de dados de rastreamento em uma execução fuzzing detecta mais bugs do que simplesmente comparar os resultados finais.”

O bug do excesso de gás tornou-se um não-evento devido à diligência dos desenvolvedores do Ethereum que se dedicam a proteger a rede. No entanto, o dano potencial que poderia ter causado mostra a complexidade por trás da execução da mesclagem sem problemas.

O bug foi corrigido na versão 22.7.1 usando “uma método de conversão diferente que irá “fixar” os valores de estouro para os valores máximos esperados, evitando os problemas de tradução assinada.” Ferrin comentou que os usuários que executam nós dentro do intervalo vulnerável devem atualizar para a versão mais recente.

Fonte

Compartilhe:

Facebook
Twitter
LinkedIn
Pinterest
Pocket
WhatsApp

Deixe um comentário

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