Hacking

Introdução à Auditoria de Segurança em Contractos Inteligentes

Project

Hey👋

Aqui estou novamente com outro artigo sobre segurança blockchain.

A blockchain ethereum trouxe o conceito de contratos inteligentes, nos quais o programador pode interagir com os dados armazenados na blockchain por meio de script programável. A segurança desses contratos inteligentes é muito importante, uma vez que esses contratos inteligentes lidam com dados importantes, como ativos digitais, tokens, etc.

Neste artigo, darei a você uma introdução à auditoria de segurança de contratos inteligentes, você aprenderá sobre as melhores práticas de segurança para contratos inteligentes e como auditar esses contratos. Se você não sabe o que são blockchain, contratos inteligentes e outras coisas, basta ler este artigo: Introdução à Segurança de Blockchain

O que é uma auditoria de segurança de contrato inteligente?

Uma auditoria de segurança de contrato inteligente é um processo que ajuda a encontrar vulnerabilidades dentro de um contrato inteligente examinando-o em profundidade, geralmente as auditorias seguem um processo de quatro etapas:

  1. Os contratos inteligentes são fornecidos à equipe de auditoria para análise inicial.
  2. As equipes de auditoria verificam o código e apresentam suas conclusões ao projeto.
  3. A equipe do projeto faz alterações com base nos problemas encontrados pelos auditores.
  4. A equipe de auditoria libera seu relatório final.

8 fases do processo de auditoria (como auditar um contrato inteligente)

Agora vou abordar esse assunto sob a perspectiva dos auditores, entender as fases da auditoria de segurança do contrato inteligente e aprender como um pesquisador pode auditar um contrato inteligente.

1. Ler as especificações e documentações

Em primeiro lugar, você deve ler as especificações e os documentos para entender como o contrato ou projeto deve funcionar, pois assim você saberá se encontrou uma vulnerabilidade considerável.

2. Executar testes manuais

Interaja com o contrato como um usuário normal, tentando entender a fundo como o contrato funciona e as suas possibilidades. Isso normalmente é feito usando tesnets, como Goerli, Kovan, Rinkeby, etc.

3. Execute ferramentas de verificação rápida

Use algumas ferramentas para fazer uma varredura rápida no contrato inteligente, verificando as vulnerabilidades comuns e verificando se o contrato inteligente está seguindo as melhores práticas de desenvolvimento. Para isso, você pode usar ferramentas como Slither.

Slither Analyzer Tool

4. Análise manual

Nesta fase, você deve analisar um contrato inteligente em profundidade para encontrar vulnerabilidades usando ferramentas de suporte como Surya e Solidity Visual Developer, que proporcionam uma melhor visualização do contrato inteligente, identificando e apresentando de forma gráfica e visual os relacionamentos, chamadas internas e externas, variáveis, etc. Solidity Visual Developer

5. Executar ferramentas de verificação lenta

Ferramentas mais lentas são as que analisam o contrato o mais profundamente possível, podendo analisar bytecode EVM, binários, fuzzing do contrato, gerar entradas e assim testar várias coisas no contrato automaticamente. Conheça algumas ferramentas:

  • Echidna: É um fuzzer, utiliza testes de propriedade para gerar entradas maliciosas que quebram contratos inteligentes.
  • Manticore: Ferramenta de execução simbólica para a análise de contratos inteligentes e binários.
  • Mythril: O canivete suíço para segurança de contratos inteligentes.
  • MythX: Um serviço de nuvem de nível profissional que usa análise simbólica e fuzzing de entrada para identificar bugs de segurança comuns e verificar a correções do código de contrato inteligente.

6. Discutir e repetir as etapas conforme necessário

Discuta as vulnerabilidades encontradas com a equipe de auditoria e refaça as etapas necessárias para confirmar a existência de vulnerabilidades, se necessário.

7. Escrever uma Prova de Conceito

Escrever uma prova de conceito para cada vulnerabilidade, isso facilita a equipe do projeto a reproduzir e verificar cada vulnerabilidade e, assim, corrigi-la. Você pode escrever provas de conceitos usando Foundry, que é um kit de ferramentas extremamente rápido, portátil e modular para desenvolvimento de aplicativos Ethereum escrito em Rust. Pretendo escrever um artigo sobre Foundry futuramente.

8. Escrever um relatório

Nesta fase, você deve escrever um relatório detalhado sobre suas descobertas e o impacto delas. Aqui é um exemplo de como deve ser um relatório.

Use este repositório para gerar relatórios de remarcação: https://github.com/spearbit-audits/report-template

Vulnerabilidades de contratos inteligentes mais conhecidas

Agora que você já sabe como ocorre o processo de auditoria, conheça algumas vulnerabilidades e ataques mais conhecidos em contratos inteligentes:

Reentrancy

Essa vulnerabilidade ocorre quando um contrato envia ether para um endereço desconhecido. Um invasor pode construir um contrato em um endereço externo que contém código malicioso na função de fallback, quando um contrato envia ether para o endereço malicioso, o código malicioso é invocado, e este código malicioso pode chegar a repetir essa transferência de ether até o contracto vulnerável ficar sem saldo.

Unsafe DELEGATECALL

Como resultado da natureza de preservação de contexto do DELEGATECALL, construir bibliotecas personalizadas livres de vulnerabilidades não é tão fácil quanto se poderia pensar. O código nas próprias bibliotecas pode ser seguro e livre de vulnerabilidades, no entanto, quando executado no contexto de outro aplicativo, novas vulnerabilidades podem surgir.

Private state variable

Quando você declara a variável de estado como privada, isso significa que outros contratos não podem acessar esses dados, mas como tudo na blockchain é público, é possível acessar esses dados apenas lendo o slot de memória onde a variável está dentro blockchain.


Este foi mais um artigo, obrigado por chegar até aqui e ficaria muito feliz se você compartilhasse este artigo.

November 8, 2022

Compartilhar

Artigos Relacionados

Hacking

Hacking de Aplicações Web

Hacking

Iniciando uma jornada em segurança de blockchain

Hacking

O que realmente é um hacker ético?