paint-brush
Leia o código como um hacker com a técnica SASTpor@matejsmycka
2,730 leituras
2,730 leituras

Leia o código como um hacker com a técnica SAST

por Matěj Smyčka4m2024/05/03
Read on Terminal Reader

Muito longo; Para ler

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. Não é uma solução mágica, mas pode ajudá-lo a encontrar alguns frutos mais fáceis de alcançar e economizar tempo.
featured image - Leia o código como um hacker com a técnica SAST
Matěj Smyčka HackerNoon profile picture
0-item
1-item
2-item

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 que é SAST?

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.

Ferramentas na prática

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.

Exemplo de regra

Hacking e SAST

Eu dividiria minha abordagem ao SAST em três categorias:

  1. 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.

    Semgrep e SQLi

  2. 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.

  3. 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.

Como treinar usando SAST em hacking

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.

Desafios HackTheBox

Recomendação de guias

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.

Como começar com a detecção secreta.

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.

Como automatizar a detecção de segredos

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.

Como começar com pipelines SAST

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.

Como começar com IaC SAST

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.

Ferramenta personalizada em Golang

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á.

  1. Clonar este repositório
  2. Execute grep -n -r your_app/ -Ef regex_dir/general.txt

Ou

  1. Execute ./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.