Segurança em Blockchain: O Caminho para Auditorias de Contratos Inteligentes Robustas

Bellum Galaxy
bellum-galaxy-community
4 min readMar 26, 2024

Esse artigo foi escrito por Barba.

No artigo anterior, intitulado “Segurança na Web3: Desmistificando Imutabilidade e Elevando Padrões de Código”, discutimos uma introdução ao desenvolvimento de contratos inteligentes de forma clara e objetiva. Hoje, vamos abordar o processo de auditoria de contratos inteligentes.

Imagem gerada com AI.

O que é uma Auditoria?

Uma auditoria é uma análise meticulosa e sistemática de um documento ou organização, visando identificar discrepâncias entre o funcionamento esperado e o real. O objetivo é garantir a eficácia do que está sendo auditado.

Auditoria de Contratos Inteligentes

No contexto de contratos inteligentes, a auditoria busca identificar desvios, vulnerabilidades e ineficiências para aumentar a segurança, eficiência e prontidão para produção.

Contudo, por ser um processo custoso, muitos confundem projetos auditados com projetos sem vulnerabilidades. Independente do número de auditorias, vulnerabilidades podem permanecer despercebidas. Convido você a pausar a leitura e visitar o rekt.news, que lista diversos exploits que geraram perdas massivas no decorrer dos anos. Muitos desses casos foram auditados, o que não preveniu o ocorrido. Por outro lado, auditorias são cruciais, como mostra o Solodit, ao listar inúmeros exploits identificados e evitados durante processos de auditoria.

Preparação para auditoria

A preparação é crucial. Ter um repositório no GitHub com testes unitários não significa estar pronto para auditoria, especialmente se os padrões de desenvolvimento básicos não forem seguidos.

Antes de considerar uma auditoria, responda às 12 perguntas do Rekt Test. Em seguida, explore os passos de preparação para maximizar o retorno do investimento em auditorias:

Informações Básicas do Projeto

Forneça informações como o nome do projeto, site, documentação, contatos para que a equipe de auditoria possa tirar dúvidas.

Detalhes do Código

Forneça o link para o repositório e o hash do commit que dever ser auditado. O número de contratos em escopo, o total de linhas de código, a complexidade do código, bem como se o seu projeto interage com fontes externas à ele e. Por fim, a porcentagem de cobertura dos seus testes.

Contratos no Escopo da Auditoria

Informe todos os contratos a serem auditados:

#-- src
| #-- Contract.sol
| #-- Contract.sol
| #-- Contract.sol
| #-- Contract.sol

Detalhes do Projeto

Descreva interações, características e outros aspectos relevantes.

Por exemplo:

  • O projeto é um fork de outro projeto existente?
  • O projeto usa rollups?
  • Quais blockchains os contratos irão operar?
  • O projeto usa oráculos?

Riscos do Projeto

Informe os riscos aceitáveis para o seu projeto. Por exemplo:

  • Devemos considerar riscos relacionados à centralização?
  • Devemos considerar riscos relacionados à “ERC20 esquisitos”?

Problemas Conhecidos

Quais são os problemas já identificados, e que estão fora do escopo dessa auditoria? Um erro no controle de acesso que já em correção, por exemplo.

Auditorias & Relatórios Prévios

Forneça relatórios de auditorias anteriores.

Fluxograma do Projeto

Forneça o fluxograma do projeto. Entender o contexto e o fluxo normal do projeto ajuda a encontrar possíveis vetores de vulnerabilidades.

Vídeo Explicativo do Projeto

Essa etapa é complementar à anterior e facilita a familiarização dos auditores com o seu projeto. Seja minucioso, esse vídeo não é um Pitch Elevator, tome o tempo necessário para explorar o código.

Outros

Informe qualquer outro material como artigos, vídeos, imagens, documentos que possam facilitar o entendimento do projeto.

Plano Pós Deploy

  1. Será criado um Programa Bug Bounty?
  2. Como será feito o monitoramento do projeto?
  3. Quem é o seu time de resposta à emergências?

Início da Auditoria — Primeira Fase

A jornada de auditoria começa com a equipe especializada tomando as rédeas. É essencial que a equipe de desenvolvimento fique alerta e disponível para qualquer comunicação. Os auditores podem solicitar esclarecimentos adicionais a qualquer momento, por isso, é crucial manter canais de comunicação abertos e responsivos, garantindo uma troca eficiente de informações. Este é um período de diligência intensa, onde os auditores mergulham profundamente no código e na documentação para assegurar que nenhum detalhe seja negligenciado ou deixado de lado.

Implementação das Correções — Segunda Fase

Após a análise inicial, a equipe de auditoria compartilhará um relatório detalhado, destacando as vulnerabilidades encontradas, sugestões para otimização de recursos (como economia de gás) e melhorias na clareza do código. Esta etapa é crítica para a equipe de desenvolvimento, que deve meticulosamente implementar as correções recomendadas. É um momento de rigor técnico e atenção, onde cada ajuste deve ser feito com cuidado para evitar a introdução de novas vulnerabilidades no processo. A colaboração contínua e a verificação dupla são fundamentais para a eficácia desta fase.

Revisão Final e Conclusão — Terceira Fase

Com as correções aplicadas, a auditoria entra em sua fase final. Os auditores retornam ao ponto de partida, revisando o código modificado para garantir que todas as vulnerabilidades identificadas foram adequadamente endereçadas e que novos problemas não foram inadvertidamente introduzidos. Este ciclo de revisão é crucial para a integridade final do projeto, assegurando que as modificações não comprometam a segurança ou a funcionalidade do contrato inteligente. Uma vez que a equipe de auditoria esteja satisfeita com o estado do projeto, um último relatório é emitido, marcando a conclusão da auditoria. Este documento serve como um selo de diligência, indicando que o projeto foi escrutinado e aprimorado sob a orientação de especialistas.

Conclusão

Embora a auditoria seja realizada por especialistas externos, a responsabilidade principal recai sobre a equipe de desenvolvimento. A clareza e objetividade na partilha de informações, materiais de apoio, e o seguimento de padrões de desenvolvimento são essenciais para o sucesso do projeto. O uso eficiente dos recursos, incluindo o investimento em auditorias, é fundamental.

Questionário completo.

Encorajo os auditores independentes a criar formulários baseados nas questões fornecidas para facilitar a preparação para auditorias.

Precisa de orientação para preparar o seu projeto para uma auditoria ou está procurando por um auditor independente?

Entre em contato comigo no LinkedIn.

Conecte-se Conosco:

Visite nosso site, junte-se ao nosso Discord, siga-nos no X, Instagram e no LinkedIn para ficar por dentro de nossas aventuras e insights.

--

--

Bellum Galaxy
bellum-galaxy-community

An educational community to bring science and technology to all.