Pular para o conteúdo principal

Checklist de segurança para smart contracts

contratos inteligentessegurançasolidity
Intermediário
Trailofbits
Construindo contratos seguros(opens in a new tab)
7 de setembro de 2020
3 minutos de leitura minute read

Processo de desenvolvimento do contrato inteligente

Aqui temos um processo de alto nível que recomendamos seguir enquanto você escreve seus contratos inteligentes.

Verificar problemas de segurança conhecidos:

  • Reveja seus contratos com o Slither(opens in a new tab). Tem mais de 40 detectores internos para vulnerabilidades comuns. Execute em cada check-in com um novo código e certifique-se de que ele recebe um relatório limpo (ou use o modo de triagem para silenciar certos problemas).
  • Reveja seus contratos com o Crytic(opens in a new tab). Ele verifica 50 problemas que o Slither não tem. O Crytic também pode ajudar sua equipe a se manter atualizada, resolvendo problemas de segurança facilmente nas solicitações de pull no GitHub.

Considere as características especiais do seu contrato:

Visualmente inspecione recursos críticos de segurança com seu código:

Propriedades de segurança críticas do documento e use geradores de testes automatizados para avaliá-las:

  • Aprenda com as propriedades de segurança de documentos para o seu código. É difícil no início, mas é a atividade mais importante para alcançar um bom resultado. Também é um pré-requisito para usar qualquer uma das técnicas avançadas neste tutorial.
  • Defina as propriedades de segurança no Solidity, para usar com Echidna(opens in a new tab) e Manticore(opens in a new tab). Concentre-se na sua máquina do estado, controles de acesso, operações aritméticas, interações externas e padrões de conformidade.
  • Defina as propriedades de segurança com API Python do Slither. Concentre-se na herança, nas dependências variáveis, nos controles de acesso e em outras questões estruturais.
  • Execute seus testes de propriedade em cada commit com Crytic(opens in a new tab). Critica pode consumir e avaliar testes de propriedade de segurança para que todos na sua equipe possam facilmente ver que eles passam no GitHub. Os testes que falharam podem bloquear os commits.

Finalmente, esteja atento a questões que as ferramentas automatizadas não conseguem facilmente encontrar:

  • Falta de privacidade: todos os outros podem ver suas transações enquanto são enfileiradas no pool
  • Transações principais em execução
  • Operações criptográficas
  • Interações arriscadas com componentes externos de DeFi

Pedir ajuda

Horário de escritório Ethereum(opens in a new tab) executa todas as terças da tarde. Essas sessões presenciais de uma hora são uma oportunidade para você nos fazer quaisquer perguntas que sobre segurança, solucionar problemas usando nossas ferramentas e obter comentários de especialistas sobre sua abordagem atual. Vamos ajudá-lo a trabalhar neste guia.

Junte-se ao nosso Slack: Empire Hacking(opens in a new tab). Sempre estaremos disponíveis nos canais #crytic e #ethereum caso tenha alguma dúvida.

Última edição: @matheuspoleza(opens in a new tab), 19 de janeiro de 2024

Este tutorial foi útil?