Simple Science

Ciência de ponta explicada de forma simples

# Informática# Criptografia e segurança# Engenharia, finanças e ciências computacionais

A Evolução dos Contratos Inteligentes Upgradeáveis

Uma visão geral dos contratos inteligentes atualizáveis e seus desafios de segurança.

― 7 min ler


Riscos de ContratosRiscos de ContratosInteligentes AtualizáveisUSCs no blockchain.Analisando as ameaças de segurança dos
Índice

A ascensão da tecnologia blockchain levou ao desenvolvimento de Contratos Inteligentes, que são acordos autoexecutáveis com os termos escritos diretamente em código. Esses contratos são cruciais para Aplicativos Descentralizados (DApps), especialmente em áreas como finanças descentralizadas (DeFi) e tokens não fungíveis (NFTs). Desde o lançamento do Ethereum, mais de 61 milhões de contratos inteligentes foram implantados nessa plataforma, mas uma vez lançados, geralmente são imutáveis, o que significa que não podem ser alterados ou atualizados. Essa imutabilidade é essencial para manter a confiança e a transparência, mas complica as coisas quando há necessidade de corrigir bugs ou adicionar novos recursos.

Para lidar com esse problema, os desenvolvedores criaram contratos inteligentes atualizáveis (USCs), que permitem fazer alterações nos contratos após serem implantados. No entanto, esses USCs também introduzem novos riscos de Segurança que podem ser explorados por usuários mal-intencionados. Este artigo examina os vários padrões de USCs e discute suas implicações de segurança.

Contratos Inteligentes e Suas Limitações

Contratos inteligentes servem como a espinha dorsal de muitos DApps no Ethereum e são projetados para executar automaticamente ações predefinidas quando certas condições são atendidas. Eles são escritos usando uma linguagem de programação chamada Solidity, que é então compilada em bytecode que roda na Ethereum Virtual Machine (EVM).

Embora os contratos inteligentes ofereçam muitas vantagens, como transparência e automação, eles vêm com limitações inerentes. Uma vez que um contrato inteligente é implantado, torna-se difícil mudar seu código. Isso apresenta desafios quando vulnerabilidades de segurança são descobertas ou quando novos recursos precisam ser adicionados. Os desenvolvedores devem escolher entre deixar um contrato vulnerável no lugar ou criar um novo contrato, o que pode levar a complicações para os usuários que ainda interagem com o contrato antigo.

Introdução aos Contratos Inteligentes Atualizáveis (USCs)

Para superar as limitações da imutabilidade, os desenvolvedores introduziram vários padrões para USCs desde 2016. USCs permitem que o código seja atualizado enquanto mantém o estado do contrato, ou seja, dados como saldos e interações dos usuários podem ser mantidos. Existem várias maneiras de implementar USCs, cada uma com seus próprios benefícios e desafios.

Padrões Comuns de USCs

  1. Migração de Contrato: Este método envolve implantar um novo contrato com código atualizado e migrar o estado do contrato antigo para o novo. Os usuários precisam mudar para o novo contrato, o que pode levar a confusão se não for comunicado adequadamente.

  2. Separação de Dados: Nesta abordagem, o contrato é dividido em duas partes: uma para lógica (a parte que realiza cálculos) e outra que mantém o estado (os dados). Quando uma atualização é necessária, um novo contrato lógico pode ser implantado, e o endereço no contrato de dados é atualizado. Esse método simplifica as atualizações, mas requer um gerenciamento cuidadoso dos endereços.

  3. Padrão de Estratégia: Semelhante à separação de dados, esse padrão permite que o contrato principal interaja com um contrato lógico separado. Quando uma atualização é necessária, os desenvolvedores podem substituir o endereço do contrato lógico sem afetar o estado.

  4. Padrão Proxy: Este método amplamente utilizado mantém a lógica e o estado em contratos separados, mas permite que os usuários interajam com um contrato proxy. O proxy gerencia chamadas de função e as delega ao contrato lógico, permitindo que o endereço do contrato lógico seja atualizado quando necessário.

  5. Padrão Mix: Essa é uma combinação dos padrões de estratégia e proxy. Os desenvolvedores podem misturar chamadas para o contrato lógico diretamente com delegação através do proxy.

  6. Contratos Metamórficos: Introduzidos em um hard fork do Ethereum, esse padrão permite que os desenvolvedores implantem um novo código no mesmo endereço. No entanto, requer destruir o contrato antigo primeiro, o que significa que todas as informações de estado são perdidas.

Questões de Segurança com USCs

Embora os USCs forneçam flexibilidade, eles vêm com riscos de segurança significativos. Vulnerabilidades nesses contratos podem levar a perdas financeiras, acesso não autorizado e potencial exploração por atacantes. Aqui estão algumas das questões de segurança comuns associadas aos USCs:

Verificações Restritivas Ausentes

USCs devem incluir verificações para garantir que apenas usuários autorizados possam realizar atualizações. Quando essas verificações estão ausentes, qualquer um pode atualizar o contrato, o que poderia permitir que atores mal-intencionados o sequestrassem.

Implementação Restritiva Insuficiente

Em alguns casos, contratos permitem que usuários interajam diretamente com contratos lógicos em vez de passar pelo proxy. Se um usuário mal-intencionado ganhar controle do contrato lógico, ele pode destruí-lo, levando a uma negação de serviço para usuários legítimos.

Verificações Ausentes no Endereço Lógico

Atualizar um contrato muitas vezes envolve mudar o endereço para o qual ele aponta. Se não houver verificações nesse endereço, ele pode ser configurado para um contrato nocivo ou inexistente, tornando todo o sistema inutilizável.

Problemas de Versão de Contrato

Ao migrar de contratos antigos para novos, é vital depreciar as versões antigas. No entanto, se os usuários continuarem a interagir com os contratos antigos, isso pode criar confusão e potenciais riscos de segurança.

Contratos de Token em Exchanges Descentralizadas

Se contratos de tokens antigos não forem removidos das plataformas de negociação, os usuários podem, sem saber, trocar tokens desatualizados ou vulneráveis, potencialmente levando a perdas financeiras.

Medindo a Segurança dos USCs

Para entender melhor o panorama de segurança em torno dos USCs, pesquisadores desenvolveram ferramentas como o USCDetector, que pode analisar contratos existentes e identificar vulnerabilidades. Essa ferramenta observa o bytecode dos contratos em vez de seu código-fonte, tornando possível examinar tanto contratos verificados quanto não verificados.

O USCDetector opera coletando informações como histórico de transações e interações de contratos. Esses dados ajudam a identificar a presença de funções de atualização e quaisquer configurações inadequadas que levem a riscos de segurança.

Avaliando a Ferramenta

Quando o USCDetector foi testado usando um banco de dados de contratos verificados, ele conseguiu identificar muitos USCs com precisão. A ferramenta relatou uma taxa de precisão de mais de 96%, indicando que é eficaz na detecção de vulnerabilidades em USCs. Esse alto nível de precisão sugere que ferramentas semelhantes podem ser úteis na gestão da segurança de contratos inteligentes em um panorama em constante evolução.

Conclusão

A introdução dos USCs oferece uma solução valiosa para os desafios impostos pela imutabilidade nos contratos inteligentes. No entanto, é importante reconhecer as questões de segurança que vêm junto com essa flexibilidade. Desenvolvedores devem estar cientes dessas vulnerabilidades para proteger efetivamente seus contratos e seus usuários.

Pesquisa contínua e o desenvolvimento de ferramentas de análise, como o USCDetector, são vitais para aprimorar a segurança dos USCs e garantir a integridade dos aplicativos descentralizados. À medida que o panorama da tecnologia blockchain evolui, será essencial permanecer vigilante contra potenciais ameaças e desenvolver soluções que abordem tanto a funcionalidade quanto a segurança.

Fonte original

Título: Characterizing Ethereum Upgradable Smart Contracts and Their Security Implications

Resumo: Upgradeable smart contracts (USCs) have been widely adopted to enable modifying deployed smart contracts. While USCs bring great flexibility to developers, improper usage might introduce new security issues, potentially allowing attackers to hijack USCs and their users. In this paper, we conduct a large-scale measurement study to characterize USCs and their security implications in the wild. We summarize six commonly used USC patterns and develop a tool, USCDetector, to identify USCs without needing source code. Particularly, USCDetector collects various information such as bytecode and transaction information to construct upgrade chains for USCs and disclose potentially vulnerable ones. We evaluate USCDetector using verified smart contracts (i.e., with source code) as ground truth and show that USCDetector can achieve high accuracy with a precision of 96.26%. We then use USCDetector to conduct a large-scale study on Ethereum, covering a total of 60,251,064 smart contracts. USCDetecor constructs 10,218 upgrade chains and discloses multiple real-world USCs with potential security issues.

Autores: Xiaofan Li, Jin Yang, Jiaqi Chen, Yuzhe Tang, Xing Gao

Última atualização: 2024-03-02 00:00:00

Idioma: English

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

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

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