
Scanner baseado em regex para detectar credenciais codificadas em bases de código, projetado para integração com CI/CD com suporte a comentários de supressão e baixas taxas de falsos positivos.
Este script tem como objetivo analisar uma base de código grande e diversificada em busca de credenciais codificadas ou credenciais presentes em arquivos de configuração. Essas representam um grave problema de segurança e podem ser extremamente difíceis de detectar e gerenciar.
O foco específico deste script é criar uma ferramenta que possa ser usada diretamente por equipes de desenvolvimento em um pipeline CI/CD, para gerenciar o processo de remediação desse problema, alertando a equipe quando credenciais estiverem presentes no código, para que a equipe possa corrigir os problemas imediatamente à medida que surgem.
É possível aplicar a ferramenta como um scanner pontual para esse problema, mas — como as credenciais provavelmente retornarão ao código ao longo do tempo — recomendamos fortemente a integração do script no processo CI/CD, no mecanismo de compilação automatizada ou em qualquer outro processo regular de varredura automatizada que a equipe realize.
O script foi escrito com os seguintes objetivos em mente:
O script tenta oferecer alguma compatibilidade com outras ferramentas SAST populares.
O texto no início ou próximo ao início de um arquivo '# noqa file' suprimirá o relato de quaisquer problemas adicionais nesse arquivo, assim como o texto 'flake8: noqa'.
O texto em uma linha individual '# noqa' suprimirá o relato de problemas nessa linha. Muitos outros comentários comuns de supressão também funcionarão; a lista atual é:
# noinspection
# noqa
#noqa
@SuppressWarnings
DevSkim
NOLINT
NOSONAR
checkmarx
coverity
fortify
noinspection
nosec
safesql
veracode
Também recomendamos o uso do comentário '# noqa cred' para deixar claro aos membros da equipe que é especificamente a presença de uma credencial que é a razão do falso positivo. Muitas das ferramentas aqui referenciadas (ex.: devskim) utilizam códigos de erro específicos relacionados às ferramentas da linguagem ou plataforma em uso, que servem ao mesmo propósito. É possível que a mesma linha de código tenha múltiplos erros de tipos diferentes.
Alertamos que é uma prática extremamente ruim suprimir um alerta de uma ferramenta SAST que seja um verdadeiro positivo. É uma boa prática revisar periodicamente os comentários de supressão de SAST/lint em uma base de código para garantir que nenhum 'verdadeiro positivo' tenha sido suprimido.
A flag de linha de comando '-nosuppress' faz com que o script ignore todos os comentários de supressão.