Falha faz com que nós da Ethereum processem transações em versões distintas do software
“Clientes” ou “nós” são softwares que se conectam a outros clientes de ponto a ponto. Já que todos esses clientes se comunicam, formam uma rede, em que cada cliente é um nó. Esses software são responsáveis pela verificação e transmissão de blocos à rede Ethereum.
Go Ethereum (Geth) é uma dentre três implementações originais (junto com as linguagens de programação C++ e Python) do protocolo Ethereum. É fundamental na operação de contratos autônomos e aplicações sem a interferência externa, atrasos, censura ou fraude.
Uma falha nas versões anteriores do cliente Geth da rede Ethereum acabou separando nós que operavam essas versões da rede principal — numa espécie de bifurcação (“fork”).
A falha impactou versões antigas dos clientes Geth, mais especificamente a versão 1.10.7 e as anteriores. Totalizam quase 75% de todos os nós da Ethereum e 73% dos clientes Geth ainda estão executando versões antigas.
Isso significa que cerca de 54% dos nós da Ethereum estão operando uma grande falha de infraestrutura.
A preocupação é que isso possa resultar em ataques de gasto duplo (do inglês “double spending attacks”) — quando criptomoedas são gastas, mas a transação é substituída pelo blockchain alternativo.
A equipe do The Block Research identificou um endereço que se aproveitou da falha, fundado por um cliente do Tornado Cash.
A falha, que pode impactar outros blockchains compatíveis com a Ethereum Virtual Machine (EVM), também foi explorada no Binance Smart Chain (BSC) por outro endereço e no Huobi Eco Chain por um terceiro endereço. O blockchain Polygon parece não ter sido afetado.
And a heco exploit tx: @FrankResearcher https://t.co/8Hcxn2EaCm https://t.co/xExl5Tp4rw
— PeckShield Inc. (@peckshield) August 27, 2021
EVM é um sistema que define quais são as regras computacionais para a validação de bloco em bloco.
O impacto da bifurcação
Embora uma parte dos nós tenha se dividido da rede, ainda parece não ter tido enormes ramificações. Parece que grande parte dos mineradores está executando versões atualizadas da Ethereum, ou seja, a taxa de hashes está fornecendo suporte ao blockchain mais longo (e antigo).
Em relação aos nós que estão operando versões anteriores do Geth, são incapazes de acessar a rede principal. Como consequência, embora exista a possibilidade de haver invasões, a rede parece estável.
Heads up!
Geth v1.10.8 is out, fixing a security vulnerability in all live versions of Geth. All Geth users need to update.
Further details will be provided at a later date to avoid attacks on #Ethereum and downstream projects.https://t.co/VQ398K0TA4
— Go Ethereum (@go_ethereum) August 24, 2021
Martin Swende, líder de segurança da Ethereum Foundation, tuitou:
Hoje, uma falha de consenso atingiu a rede principal da Ethereum, explorando a falha de consenso que havia sido consertada na v1.10.8 do Geth. Felizmente, grande parte dos mineradores já atualizou [seu software] e o blockchain correto também é o mais longo (canônico).
A consensus bug hit #ethereum mainnet today, exploiting the consensus-bug that was fixed in geth v1.10.8. Fortunately, most miners were already updated, and the correct chain is also the longest (canon)
PSA: Update to v1.10.8!
— M H (((Swende))) (@mhswende) August 27, 2021
Tim Beiko, um dos principais desenvolvedores da Ethereum, complementou, dizendo que três pools de mineração parecem estar minerando com a versão errada da Geth, incluindo Flexpool, BTC.com e Binance Pool.
Ele afirmou que Flexpool havia informado sobre o problema, então estava ciente da falha e que seus desenvolvedores estão entrando em contato com outros dois pools.
Update on this: 3 pools seem to be have been mining on the wrong Geth version: @flexpool_io (who reported the issue ?), @btccom_official and @binance.
We are getting in touch with the two latter ones. https://t.co/Sfq8YJywF7
— Tim Beiko | timbeiko.eth (@TimBeiko) August 27, 2021
Encontrando a falha em uma auditoria
Essa falha foi encontrada em uma auditoria na Telos EVM, versão da Ethereum Virtual Machine executada no blockchain Telos, de acordo com um comunicado de imprensa.
Guido Vranken, auditor da Sentnl, responsável pela auditoria, havia encontrado a falha, chamando-a de “problema de alta gravidade”.
Depois que desenvolvedores da Ethereum foram informados sobre o problema, lançaram, em 24 de agosto, um pacote para consertá-lo. Porém, isso só ajuda aqueles que atualizaram seus nós.
O vetor exato de ataque será fornecido em outro momento para dar tempo para que operadores de nós e projetos dependentes de montantes [“downstreams”] atualizem seus nós e software.
Todas as versões do Geth que fornecem suporte à bifurcação drástica London estão vulneráveis (a falha é mais antiga que London), então todos os usuários devem executar a atualização.