Simple Science

Ciência de ponta explicada de forma simples

# Informática# Criptografia e segurança

Analisando Vulnerabilidades em Serviços de Verificação de Contratos Inteligentes

Uma imersão nos desafios de segurança da verificação de contratos inteligentes do Ethereum.

― 6 min ler


Vulnerabilidades naVulnerabilidades naSegurança de ContratosInteligentesinteligentes.processos de verificação de contratosIdentificando falhas sérias nos
Índice

Os Contratos Inteligentes são partes essenciais da plataforma Ethereum. Eles são programas que rodam na blockchain e fazem ações quando certas condições são atendidas. Mas, geralmente, aparecem problemas de Segurança com esses contratos. Isso tornou a Verificação de contratos inteligentes super importante. Verificação significa checar se o código-fonte de um contrato bate com o código que roda na blockchain. Esse processo ajuda a construir confiança entre desenvolvedores e usuários.

Apesar de haver diversas ferramentas para essa verificação, ainda rola dúvidas sobre a segurança delas. Nosso objetivo é analisar como esses serviços de verificação funcionam e identificar possíveis vulnerabilidades.

Importância dos Contratos Inteligentes

Os contratos inteligentes funcionam como scripts que se executam automaticamente quando critérios específicos são cumpridos. Eles não só mantêm a integridade e a estabilidade da blockchain, mas também permitem que desenvolvedores criem aplicações descentralizadas (DApps) como jogos, exchanges ou organizações. A blockchain da Ethereum abriga milhões de contratos inteligentes, tornando seu ecossistema rico e dinâmico.

Porém, a Ethereum só salva uma versão compacta desses contratos em uma forma chamada bytecode. Esse bytecode é difícil de ler, o que complica entender o que o contrato realmente faz. Por causa dessa dificuldade, fica complicado detectar tokens ou contratos prejudiciais que possam existir para enganar os usuários.

Serviços de Verificação de Contratos Inteligentes

Os serviços de verificação estão integrados em plataformas como Etherscan e Sourcify, ajudando os usuários a confirmar se o código-fonte de um contrato é confiável. Geralmente, os usuários fazem o upload do código-fonte e de quaisquer detalhes necessários para esses serviços. O serviço de verificação compila esse código e compara com o bytecode na blockchain.

Quando uma correspondência é encontrada, os usuários podem checar o código-fonte verificado para futuras necessidades, como checagens de segurança ou auditorias. Esse processo de verificação visa aumentar a confiança entre desenvolvedores e usuários e apoia diferentes aplicações.

Problemas de Confiança com Serviços de Verificação

Embora esses serviços de verificação prometam criar confiança, eles não são infalíveis. É crucial reconhecer que um desenvolvedor malicioso pode fornecer um código-fonte enganoso que parece passar pela verificação. Portanto, é possível que a segurança e a integridade de todo o processo de verificação possam ser comprometidas.

Há uma necessidade de analisar esses serviços de verificação minuciosamente para garantir que funcionem conforme o esperado e cumpram seu propósito de construir confiança.

Estudo de Vulnerabilidades

Fizemos uma análise de segurança abrangente focando em três grandes serviços de verificação: Etherscan, Sourcify e Blockscout. Nossa análise visa entender seus fluxos de trabalho e identificar quaisquer fraquezas que possam levar a exploração.

O Fluxo de Trabalho dos Serviços de Verificação

  1. Coleta de Dados: O serviço de verificação coleta o código-fonte enviado e os detalhes de configuração necessários.
  2. Comparação de Dados: O serviço compara o bytecode compilado localmente com a versão on-chain para verificar se há discrepâncias.
  3. Armazenamento de Resultados: Após a correspondência, o serviço armazena o código-fonte confirmado para que os usuários acessem no futuro.

Apesar desse processo aparentemente simples, existem brechas que atacantes poderiam explorar.

Tipos de Vulnerabilidades Encontradas

1. Problemas de Integridade de Dados

Integridade de dados se refere a garantir que os dados permaneçam inalterados. Se atacantes conseguirem manipular o código-fonte fornecido aos serviços de verificação, poderão contornar as checagens. Recursos nos serviços poderiam permitir que alguém criasse um código-fonte enganoso que combinasse com o bytecode on-chain.

2. Problemas de Consistência de Dados

A consistência de dados assegura que os significados do código-fonte verificado e do bytecode on-chain estejam alinhados. Várias ameaças podem surgir se partes do código-fonte forem ignoradas durante a verificação ou se os elementos errados forem marcados como metadados. Qualquer incompatibilidade pode levar a resultados de verificação inadequados.

3. Falhas de Referência Não Ambígua

Referência não ambígua significa que as informações exibidas devem ser claras e não vagas. Se um serviço não esclarecer suas referências de forma precisa, os usuários podem ser levados a entender mal a verdadeira natureza do código-fonte.

Detectando Vulnerabilidades

Investigamos diferentes métodos para checar as vulnerabilidades mencionadas acima e como elas poderiam ser exploradas.

Técnicas de Detecção

  1. Exame de Recursos do Compilador: Alguns recursos do compilador podem permitir que atacantes gerem bytecode que não combina com o código-fonte pretendido.
  2. Validação de Entrada: Garantir que os usuários não consigam alterar caminhos de arquivos para acessar dados sensíveis ou modificar códigos-fonte de forma inadequada.
  3. Simulação de Execução: Se uma simulação executa com um código manipulado, pode retornar resultados diferentes que não refletem o código on-chain real.

Exemplos de Potenciais Exploits

  1. Envio de Código-Fonte Falso: Um usuário malicioso poderia enviar um código-fonte sem backdoor, mesmo que o contrato real tenha vulnerabilidades ocultas.
  2. Verificação Competitiva: Atacantes poderiam passar na verificação de contratos que podem prejudicar desenvolvedores originais, exibindo código enganoso ou prejudicial.
  3. Contratos Substituídos: Usando recursos como create2, atores ruins poderiam implantar contratos maliciosos em endereços existentes, substituindo os originais sem detecção.

Medidas de Segurança e Recomendações

Para se proteger contra essas vulnerabilidades, várias etapas podem ser tomadas:

  1. Aprimoramento dos Protocolos de Verificação: Os serviços devem implementar checagens e equilibrar pontos mais rigorosos para garantir a integridade do código-fonte.
  2. Educação do Usuário Ampliada: Os usuários precisam entender os riscos envolvidos e como verificar a confiabilidade de contratos e serviços.
  3. Monitoramento e Atualizações Contínuas: Atualizar e monitorar constantemente os serviços de verificação pode ajudar a identificar novas vulnerabilidades e responder rapidamente a elas.

Conclusão

Os contratos inteligentes são um recurso chave do ecossistema Ethereum, mas trazem muitos desafios de segurança. Os serviços de verificação desempenham um papel crucial em garantir a segurança e a confiabilidade desses contratos. Nossas descobertas indicam várias vulnerabilidades que podem ser exploradas, levando a consequências potencialmente desastrosas para usuários e desenvolvedores.

É essencial que a comunidade tome medidas para fortalecer esses serviços de verificação, fomentar a confiança e manter a integridade da plataforma Ethereum. Com vigilância e inovação, podemos criar um ambiente mais seguro e transparente para todos os usuários no espaço da blockchain.

Fonte original

Título: Abusing the Ethereum Smart Contract Verification Services for Fun and Profit

Resumo: Smart contracts play a vital role in the Ethereum ecosystem. Due to the prevalence of kinds of security issues in smart contracts, the smart contract verification is urgently needed, which is the process of matching a smart contract's source code to its on-chain bytecode for gaining mutual trust between smart contract developers and users. Although smart contract verification services are embedded in both popular Ethereum browsers (e.g., Etherscan and Blockscout) and official platforms (i.e., Sourcify), and gain great popularity in the ecosystem, their security and trustworthiness remain unclear. To fill the void, we present the first comprehensive security analysis of smart contract verification services in the wild. By diving into the detailed workflow of existing verifiers, we have summarized the key security properties that should be met, and observed eight types of vulnerabilities that can break the verification. Further, we propose a series of detection and exploitation methods to reveal the presence of vulnerabilities in the most popular services, and uncover 19 exploitable vulnerabilities in total. All the studied smart contract verification services can be abused to help spread malicious smart contracts, and we have already observed the presence of using this kind of tricks for scamming by attackers. It is hence urgent for our community to take actions to detect and mitigate security issues related to smart contract verification, a key component of the Ethereum smart contract ecosystem.

Autores: Pengxiang Ma, Ningyu He, Yuhua Huang, Haoyu Wang, Xiapu Luo

Última atualização: 2023-07-02 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2307.00549

Fonte PDF: https://arxiv.org/pdf/2307.00549

Licença: https://creativecommons.org/licenses/by/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais de autores

Artigos semelhantes