Como avaliar o risco de segurança do "EVM bifurcado"?

9 das 10 principais cadeias de TVL oferecem suporte a contratos inteligentes EVM.

Título original: "Como avaliar EVMs bifurcadas para riscos de segurança"

撰文:Ethan Pociask、Eric Meng、Nadir Akhtar、Gabriela Melendez Quan、Tom Ryan

Compilador: Katie Koo

Para fortalecer as garantias de segurança e custódia para clientes que negociam ERC-20 e outros ativos baseados em contratos inteligentes, a equipe Coinbase Blockchain Security investigou a camada programática que define o comportamento desses ativos: a Ethereum Virtual Machine (EVM). Ao avaliar projetos que modificam o EVM de sua própria rede, a equipe de segurança de blockchain da Coinbase analisa as principais alterações do EVM para determinar se o EVM modificado pode fornecer as mesmas garantias de segurança e custódia que a implementação original do EVM.

Status do Fork EVM

Em maio de 2023, a Ethereum Virtual Machine (EVM) ganhou o título de "Big Brother" da plataforma de execução de contratos inteligentes mais popular. De acordo com a DefiLlama, 9 das 10 principais cadeias da Total Value Locked (TVL) suportam contratos inteligentes EVM. Portanto, uma compreensão profunda do EVM é crucial para dar suporte a contratos inteligentes em todo o ecossistema blockchain.

EVM é uma máquina virtual para execução descentralizada de contratos inteligentes na rede Ethereum. Muitos blockchains compatíveis com EVM utilizam implementações padrão de clientes de implementação Ethereum populares em diferentes idiomas, como go-ethereum (Golang) e besu (Java) diretamente em seu software de protocolo.

Dito isso, bifurcar e modificar o EVM é bastante comum no ecossistema blockchain, mesmo dentro dos principais protocolos. Por exemplo, o Optimism Bedrock Stack que "alimenta" o blockchain Base L2 da Coinbase usa um fork do cliente de execução go-ethereum chamado op-geth, que executa o mesmo EVM que o popular cliente de execução ethereum. No entanto, isso não significa que o EVM no Ethereum se comporte exatamente da mesma forma que o EVM no Optimism: o op-geth EVM se comporta de maneira ligeiramente diferente em alguns casos (ou seja, a DIFICULDADE em retornar valores aleatórios é determinada pelo sequenciador).

Embora isso pareça assustador, geralmente é benéfico para a adoção de EVM. Embora a implementação padrão do EVM seja altamente otimizada para o protocolo Ethereum básico, os EVMs bifurcados geralmente o estendem para novos protocolos próprios. Como resultado, os contratos podem ser executados de maneira diferente em algumas cadeias compatíveis com EVM do que no Ethereum, e as suposições de segurança do comportamento do contrato inteligente EVM também podem variar amplamente entre diferentes protocolos.

Fork a estrutura de segurança EVM

Para esse fim, a Coinbase desenvolveu uma estrutura de segurança Web3 para avaliar o impacto na segurança de algumas implementações EVM bifurcadas. Nós o chamamos de estrutura EVM bifurcada da Coinbase, que será explicada em detalhes abaixo.

Com esta estrutura de segurança EVM bifurcada, a Coinbase é capaz de efetivamente:

  • Entender a invalidade das suposições de segurança de nossa estrutura de token Ethereum nos permite habilitar com segurança novos blockchains compatíveis com EVM para oferecer suporte a tokens ERC-20/ERC-721 em nossas trocas descentralizadas;
  • Fornecer aos auditores de contratos inteligentes uma análise da situação de vulnerabilidade do contrato inteligente do EVM bifurcado, especialmente pequenas diferenças na rede cruzada;
  • Garanta o uso seguro e a execução de contratos inteligentes EVM na blockchain Base L2 da Coinbase.

Padrão de segurança para blockchains compatíveis com EVM

Para entender como existem os riscos de segurança na máquina virtual Ethereum, devemos primeiro saber quais garantias a implementação padrão do EVM nos oferece. Definimos o EVM padrão como o EVM usado consistentemente pelos clientes de execução do validador Ethereum, conforme descrito na Especificação de Implementação Ethereum. De longe, o cliente mais usado é go ethereum (ou seja, geth).

Resumimos a segurança em dois critérios de segurança que representam os requisitos mínimos para qualquer implementação bifurcada de EVM ser elegível para suporte da Coinbase.

Como auditamos os riscos de segurança de uma implementação de EVM?

Nossa estrutura EVM bifurcada se concentra nos seguintes requisitos de auditoria ao avaliar a conformidade com os critérios gerais de segurança (ou seja, imutabilidade do contrato e um ambiente de execução seguro). Deve-se notar que os seguintes componentes de risco não são o escopo completo da auditoria fork EVM.

Modificar a definição e a codificação dos opcodes EVM pode levar a diferenças significativas na forma como os contratos são executados. Por exemplo, suponha que alguma implementação EVM bifurcada (EVM') altere o opcode aritmético ADD para definir a lógica (x1 + x2) para subtrair dois valores (x1 - x2).

Como resultado, o EVM' desviado é desigual e incompatível na execução com o EVM padrão. As consequências da modificação de opcodes podem ser um comportamento benéfico, como impedir o estouro e o estouro de número inteiro em opcodes aritméticos, ou um comportamento mais perigoso, como o comportamento de autodestruição que causa a cunhagem infinita de ativos locais.

EVM usa contratos pré-compilados para definir funções complexas (como funções de criptografia), usando uma linguagem mais conveniente e de alto desempenho, como Golang, em vez de usar o bytecode EVM menos acessível.

Fundamentalmente, essas são funções programadas acessadas por meio de endereços de cadeia predeterminados representados no software do nó. Existem 9 pré-compiladores definidos no Ethereum Yellow Paper (em maio de 2023), e quaisquer alterações nesses 9 pré-compiladores ou a introdução de novos pré-compiladores precisam ser auditadas.

Vamos dar outro exemplo concreto - a vulnerabilidade BNB Smart Chain. O BNB Smart Chain usa uma implementação desviada de go-ethereum para executar nós. Para este fim, dois novos contratos pré-compilados (tmHeaderValidate, iavlMerkleProofValidate) são introduzidos para utilizar software de terceiros (ou seja, Cosmos SDK) para executar validação de bloco de cliente leve e validação de prova Merkle. O problema é que o software Cosmos SDK tem um bug de implementação em sua representação de árvore IAWL que permite que provas criptograficamente inválidas passem na verificação. Em outras palavras, qualquer um pode gerar dinheiro do nada. Os invasores conseguiram explorar essa falha de implementação aninhada no pré-compilador iavlMerkleProofValidate para desviar centenas de milhões de dólares da ponte cruzada da Binance.

Este exemplo de exploração destina-se a demonstrar a necessidade de segurança do pré-compilador e os riscos potenciais da introdução de novos contratos pré-compilados para desvios de implementações de EVM.

Os riscos potencialmente fatais da introdução de pré-compiladores adicionais incluem:

  • Permitir que uma das partes modifique unilateralmente o estado de qualquer contrato implantado;
  • Isso inclui todas as modificações de armazenamento (inserções, atualizações, exclusões);
  • uso de dependências de terceiros não confiáveis, não verificadas ou não auditadas;
  • Fornece acesso ao valor dentro do nó indeterminado.

Apesar de tratar o compilador e o EVM como entidades completamente separadas, vale a pena notar que o compilador do Solidity faz suposições estritas sobre o comportamento dos três primeiros contratos pré-compilados (ecrecover, sha256 e &ripemd) que são passados pelo Solidity A função de palavra-chave do idioma nativo representação na língua. Nos bastidores, o compilador Solidity realmente processa essas palavras-chave em bytecode, que executa chamadas estáticas entre contratos. O diagrama abaixo ilustra melhor essa forma de comunicação entre contratos.

Os riscos de segurança introduzidos pela modificação do pré-compilador padrão incluem:

  • Permitir que contrapartes centralizadas modifiquem unilateralmente o estado de qualquer contrato implantado;
  • Isso inclui todas as modificações de armazenamento (inserções, atualizações, exclusões);
  • A suposição da posição de pré-compilação do compilador Solidity é inconsistente;
  • Fornece acesso a valores dentro de nós indeterminados;
  • Uso de dependências de terceiros não confiáveis, não verificadas ou não auditadas.

Os principais riscos apresentados pela modificação de componentes fundamentais do EVM incluem:

  • não restringe a pilha do interpretador para ser infinitamente grande;
  • Redimensionar ou alterar o modelo de memória pode levar a execução não determinística;
  • Ignorar o controle de acesso, permitindo que qualquer contraparte acesse unilateralmente todos os estados da cadeia;
  • Uso de dependências de terceiros não confiáveis, não verificadas ou não auditadas.

Por que devemos prestar atenção à segurança do EVM?

Nosso objetivo é construir um sistema financeiro aberto baseado na tecnologia blockchain e, para isso, incentivamos o desenvolvimento de várias implementações de EVM. No entanto, para que um blockchain compatível com EVM seja totalmente suportado pela Coinbase, ele deve atender aos requisitos básicos de uma implementação EVM padrão. Este documento espera aumentar a conscientização sobre os riscos associados ao desvio do EVM e incentivar os emissores de ativos a priorizar o desenvolvimento de componentes seguros ao se desviar do EVM, aumentando a conscientização sobre segurança em todo o ecossistema Web3.

Ver original
O conteúdo serve apenas de referência e não constitui uma solicitação ou oferta. Não é prestado qualquer aconselhamento em matéria de investimento, fiscal ou jurídica. Consulte a Declaração de exoneração de responsabilidade para obter mais informações sobre os riscos.
  • Recompensa
  • Comentar
  • Partilhar
Comentar
0/400
Nenhum comentário
  • Pino
Negocie cripto em qualquer lugar e a qualquer hora
qrCode
Digitalizar para transferir a aplicação Gate
Novidades
Português (Portugal)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)