Nightshade traz análise de segurança para os contratos Compact da Midnight

O desenvolvedor Dickson Wu testou a ferramenta de código aberto contra falhas inseridas deliberadamente e 300 contratos disponíveis publicamente.

By SongMarketCap

Midnight News - Nightshade traz análise de segurança para os contratos Compact da Midnight

Nightshade é uma ferramenta de análise estática projetada para ajudar desenvolvedores a revisar contratos inteligentes escritos em Compact, a linguagem de programação usada para criar aplicações na Midnight.

Apresentada por Wu no Midnight Forum em 29 de outubro, a ferramenta verifica o código fonte com base em 96 regras e sinaliza padrões que podem justificar uma análise mais aprofundada. Seus achados identificam a linha de código relevante e incluem informações destinadas a ajudar os desenvolvedores a investigar o problema.

Nightshade verifica código Compact em busca de padrões de segurança

A análise estática examina o código fonte sem exigir a execução do contrato. Nightshade usa essa abordagem para buscar padrões relacionados a privacidade, autorização e outras partes da lógica de um contrato.

Um exemplo identificado por Wu envolve um segredo privado sendo publicado no registro após ter sido usado em uma verificação de autorização. Um desenvolvedor pode pretender usar o segredo para confirmar a permissão de um usuário enquanto mantém o valor subjacente em sigilo. Publicá-lo depois pode expor informações que deveriam permanecer protegidas.

Outras verificações buscam resultados de verificação de assinatura descartados e casos em que valores de testemunha são tratados como prova de identidade. A ferramenta também sinaliza padrões que envolvem tempo fornecido pelo chamador sem um limite baseado no tempo da cadeia, bem como provas de Merkle que não são verificadas quanto ao pertencimento.

Para cada achado, Nightshade fornece a linha de código relevante, o caminho percorrido pelos dados e uma correção sugerida, segundo Wu. Isso dá ao desenvolvedor um ponto de partida para examinar como um valor se move pelo contrato e onde ocorre o comportamento sinalizado.

Um aviso não estabelece, por si só, que um contrato foi explorado ou que informações foram expostas. Da mesma forma, uma análise concluída não é garantia de que um contrato está seguro.

Dickson Wu compartilha resultados dos testes do Nightshade

Wu avaliou o Nightshade com casos de teste que continham falhas inseridas deliberadamente. Ele relatou que a ferramenta detectou 263 de 266 casos positivos cobertos pela avaliação.

O desenvolvedor também testou versões corrigidas desses casos. Nightshade não produziu avisos para 240 de 242 versões corrigidas, ao mesmo tempo em que emitiu achados para as outras duas. Os resultados descrevem os casos de teste usados nessa avaliação e não estabelecem uma taxa de detecção para todo e qualquer problema de segurança.

Wu então executou a ferramenta em 300 contratos Compact públicos de 144 repositórios. Ele relatou não haver travamentos durante o exercício e identificou 258 contratos que receberam uma análise completa.

A distinção é importante porque concluir uma varredura e não encontrar problemas são resultados distintos. Segundo Wu, contratos que não receberam uma análise completa foram relatados como incompletos em vez de tratados como limpos.

O desenvolvedor publicou o método de avaliação e as contagens de testes junto com a ferramenta, permitindo que outros examinem como os resultados reportados foram obtidos.

[NEWSBREAK]

Análise offline e integração para desenvolvedores

Nightshade roda localmente e não requer conexão com a internet nem um compilador Compact para analisar o código fonte, segundo Wu. A ferramenta oferece suporte às versões do compilador Compact de 0.28 a 0.35.

Desenvolvedores podem visualizar os achados como texto ou exportá-los nos formatos JSON e SARIF. Uma GitHub Action também está disponível para exibir resultados durante a revisão de alterações de código propostas, inserindo os achados em um fluxo de trabalho que os desenvolvedores talvez já usem para examinar atualizações.

A ferramenta é disponibilizada sob a licença de código aberto Apache 2.0. Wu apresentou a versão 0.1.1 e convidou os desenvolvedores a compartilhar feedback, relatar falsos positivos e sugerir regras adicionais.