Pular para o conteúdo principal

Lista de verificação de segurança de contratos inteligentes

contratos inteligentes
segurança
Solidity
Intermediário
Trailofbits
7 de setembro de 2020
3 minutos de leitura

Lista de verificação de desenvolvimento de contratos inteligentes

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

Verifique se há problemas de segurança conhecidos:

  • Revise seus contratos com o Slither (opens in a new tab). Ele tem mais de 40 detectores integrados para vulnerabilidades comuns. Execute-o em cada check-in com código novo e garanta que ele obtenha um relatório limpo (ou use o modo de triagem para silenciar certos problemas).
  • Revise seus contratos com o Crytic (opens in a new tab). Ele verifica 50 problemas que o Slither não verifica. O Crytic também pode ajudar sua equipe a se manter alinhada, revelando facilmente problemas de segurança em Pull Requests no GitHub.

Considere os recursos especiais do seu contrato:

Inspecione visualmente os recursos críticos de segurança do seu código:

Documente propriedades críticas de segurança e use geradores de testes automatizados para avaliá-las:

  • Aprenda a documentar propriedades de segurança para o seu código. É difícil no começo, 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 propriedades de segurança em Solidity, para uso com o Echidna (opens in a new tab) e o Manticore (opens in a new tab). Concentre-se em sua máquina de estado, controles de acesso, operações aritméticas, interações externas e conformidade com padrões.
  • Defina propriedades de segurança com a API Python do Slither. Concentre-se em herança, dependências de variáveis, controles de acesso e outros problemas estruturais.
  • Execute seus testes de propriedade em cada commit com o Crytic (opens in a new tab). O Crytic pode consumir e avaliar testes de propriedades de segurança para que todos na sua equipe possam ver facilmente que eles passam no GitHub. Testes com falha podem bloquear commits.

Por fim, esteja atento a problemas que ferramentas automatizadas não conseguem encontrar facilmente:

  • Falta de privacidade: todos os outros podem ver suas transações enquanto elas estão na fila do pool
  • Transações de front-running
  • Operações criptográficas
  • Interações arriscadas com componentes externos de finanças descentralizadas (DeFi)

Peça ajuda

O horário de atendimento do Ethereum (opens in a new tab) ocorre todas as terças-feiras à tarde. Essas sessões individuais de 1 hora são uma oportunidade para nos fazer qualquer pergunta que você tenha sobre segurança, solucionar problemas usando nossas ferramentas e obter feedback de especialistas sobre sua abordagem atual. Nós o ajudaremos a trabalhar com este guia.

Junte-se ao nosso Slack: Empire Hacking (opens in a new tab). Estamos sempre disponíveis nos canais #crytic e #ethereum se você tiver alguma dúvida.