Ler o código manualmente é um processo demorado. Também está sujeito a erros, pois é fácil perder detalhes importantes. Como desenvolvedores e testadores de penetração, precisamos encontrar uma maneira de automatizar esse processo. SAST é uma técnica que pode nos ajudar nessa tarefa.
SAST não é uma solução mágica. É utilizável apenas para casos de uso com acesso ao código-fonte para projetos de código aberto ou testes de penetração de caixa branca. No entanto, pode ajudá-lo a encontrar alguns frutos mais fáceis de alcançar e economizar tempo.
O teste estático de segurança de aplicativos (SAST) é um subconjunto de análise estática de código usado para aumentar a segurança e a confiabilidade do código. O SAST detecta dependências antigas, detecção de segredos, erros lógicos que levam a vulnerabilidades e muito mais. O SAST inclui testes que afetam secundariamente a segurança cibernética, como complexidade visual do código, ambiguidade do código e práticas não intuitivas que podem levar a vulnerabilidades.
As ferramentas SAST geralmente são correspondências de padrões regex em esteróides que procuram vulnerabilidades conhecidas no código. Por exemplo, uma ferramenta SAST pode procurar o uso de eval
, exec
ou pickle
no código Python; essas funções podem ser usadas para executar código arbitrário.
Eu dividiria minha abordagem ao SAST em três categorias:
Detecção de vulnerabilidades : uso ferramentas como Semgrep , Bandit , Nodejsscan para encontrar vetores de ataque no código. Geralmente, você pode encontrar resultados fáceis, como entradas não higienizadas, criptografia ruim ou bibliotecas vulneráveis. Aliás, a versão Semgrep PRO tem mais regras; é gratuito se não houver mais de 10 desenvolvedores no projeto.
Detecção de segredos : Gileaks , Trufflehog ou Grep podem ajudá-lo a encontrar segredos no código. Isto é importante porque os segredos podem ser usados para aumentar privilégios ou acessar dados confidenciais. Normalmente, cadeias de conexão de banco de dados, chaves de API ou senhas são armazenadas no código.
Configurações incorretas : ferramentas como Checkov ou Trivy podem ajudá-lo a encontrar configurações incorretas. As configurações incorretas geralmente estão em arquivos de "infraestrutura como código" (IaC), mas também podem estar no próprio código. Um exemplo seria um arquivo docker-compose configurado incorretamente que expõe um banco de dados à Internet. Para digitalizar Dockerfiles, recomendo uma combinação de hadolint e grype
Mais informações: https://dkb-zh.gitlab-pages.ics.muni.cz/vulnerability-management/web-guides-external/docs/guide_iac_sast/#docker
As ferramentas SAST não são perfeitas. Eles lhe darão falsos positivos e falsos negativos. **No entanto, economiza muito tempo em comparação com a exploração aleatória de alguns aplicativos. Usei ferramentas SAST em meus compromissos e competições de testes de penetração. Isso me ajudou a começar com a base de código e me deu algumas dicas sobre onde procurar vulnerabilidades.
Eu recomendo que você comece com Hack The Box . Esta plataforma oferece desafios, como obter código-fonte e encontrar vulnerabilidades. Em seguida, explore-os em uma máquina real. Esta é uma ótima maneira de aprender como usar as ferramentas SAST na prática.
Ou, se você for um desenvolvedor, poderá usar ferramentas SAST em seu pipeline de CI/CD. Dessa forma, você pode se acostumar com as ferramentas e seus resultados. Simultaneamente, você melhorará a segurança do seu aplicativo.
Preparei uma lista de guias para ajudá-lo a começar com SAST e detecção de segredos. Esses guias foram escritos como parte da minha tese e são um excelente ponto de partida para qualquer pessoa interessada em ferramentas SAST.
Ao detectar segredos, lembre-se: não é segredo se os hackers souberem disso. Até mesmo desenvolvedores experientes podem enviar acidentalmente senhas ou cadeias de conexão para o controle remoto de origem. Utilizando diversas ferramentas, este guia oferece métodos rápidos e fáceis para mitigar esse risco.
Este guia se concentra na compreensão da detecção de segredos usando ganchos de pré-confirmação e pipelines de CI/CD. Embora o código se concentre principalmente no GitLab, a última seção também cobrirá o GitHub.
Este guia descreve com eficiência as etapas para iniciar o Static Application Security Testing (SAST) no GitLab. SAST é um processo que usa análise estática de código para identificar vulnerabilidades potenciais.
Esta folha de dicas apresenta ferramentas úteis para verificar artefatos de infraestrutura como código (IaC) e fornece exemplos sobre como integrá-los ao pipeline de CI/CD.
Eu criei uma ferramenta personalizada em Golang que me ajuda a combinar rapidamente expressões regulares com enormes bases de código.
Existe uma compensação infinita entre precisão e variação.
Suponha que você precise de mais variação e não se importe com mais revisões manuais. Nesse caso, você pode tentar RegFinder , que é como grep
, mas mais adequado para detecção de segredos (mais rápido em repositórios maiores, saída clara, ignorando algumas extensões de arquivo). Ou você pode usar grep diretamente. O mais valioso são as expressões regulares no repositório, não a ferramenta que você usará.
grep -n -r your_app/ -Ef regex_dir/general.txt
Ou
./regfinder.elf -d your_app/ -f regex_dir/general.txt
É simples estender os padrões regex existentes. Esta ferramenta não é viável para pipelines automatizados. No entanto, é útil se você precisar encontrar um segredo fora do padrão ou em outras avaliações, como análises de segurança, onde se espera mais trabalho manual.
Comente se você tem ótima experiência com outras ferramentas . Obrigado por ler.