SAST (Static Application Security Testing) é um scan de verificação de vulnerabilidades em códigos estáticos, ou seja, não depende que a aplicação seja em execução para fazer a verificação de vulnerabilidades. Esse scanner pode ser executado isoladamente, no início do pipeline de CI ou como um plug-in na IDE durante a codificação. No post sobre SBOM comentei que “algumas empresas podem conter até 90% do código bibliotecas opensource em sua composição (20% sendo o framework, 70% bibliotecas importadas para problemas simples)“, portanto devemos concentrar o SAST exatamente na parte de código onde os desenvolvedores atuam diretamente, que é o código proprietário.
O SAST garante que problemas de segurança como salvar uma senha em texto claro dentro do código fonte de uma aplicação sejam detectados antes desse código ser publicado em produção. Além disso é possível garantir se os padrões de boas práticas de programação sejam seguidas, portanto o SAST é um scan que depende da linguagem de programação que esteja sendo utilizada naquele projeto. Isso deve ser levado em consideração na hora de escolher uma ferramenta para fazer essa verificação.
Um dos objetivos do SAST é auxiliar na detecção de possíveis problemas desde os estágios iniciais do processo de desenvolvimento, por isso que ele deve ser integrado como plug-in da IDE ou na pipeline de CI. Quanto mais precoce a correção de vulnerabilidades, mais simples e barata se torna essa etapa. Além disso, aumenta a conscientização do desenvolvedor sobre possíveis problemas, ajudando-os a evitar outros problemas relacionados. Essas práticas estão relacionada ao “Shift-Left”, tema que será abordado em outro post.
Algumas vantagens do SAST:
- Detecte cedo e corrija cedo: Como o SAST pode ser realizado até mesmo dentro da IDE, o processo de correção ocorre bem no início do processo de fatoração do código, evitando mais problemas maiores;
- Exatidão na localização do problema: O SAST funciona no código estático, o relatório irá apontar qual arquivo, em qual linha e coluna um possível problema foi detectado. Dependendo da aplicação que foi utilizada, é possível fazer uma relação com CWEs, CVE ou OWASP Top 10. A correção se torna mais eficiente dessa forma;
- Fácil automação: A execução do código SAST não precisa de nenhum tipo de interação, portanto é fácil fazer a automatização do processo. Tenha em mente que configurar corretamente a ferramenta é um outro processo;
- Velocidade do Scan: Basicamente, as ferramenta SAST irão ler arquivos. Não é necessário validações e interações como é o caso do DAST. Com isso, a velocidade de SCAN é considerada rápida.
Para ter sucesso no scan, é necessário atenção em alguns pontos:
- Escolha a ferramenta correta: O SAST verifica o código fonte de uma aplicação, por tanto existe uma linguagem de programação atrelada ao código, assim como existem melhores práticas para essa linguagem. Por tanto, ao escolher uma ferramenta, verifique se ela tem suporte para a linguagem do seu projeto e se ela tem bibliotecas, scripts, padrões de mercado, melhores práticas para a linguagem que você quer verificar. Algumas ferramentas têm a opção de importar essas opções tanto da comunidade como personalizadas;
- Saiba onde fazer o Scan: Foque o SAST no código proprietário, ou seja, no que você e sua equipe de desenvolvedores estão de fato codificando. Qualquer parte da sua aplicações que seja de terceiros, como bibliotecas, faça utilizando outras ferramentas próprias para isso. Recomendo a leitura do post sobre SCA e o outro sobre SBOM;
- Adicione o SAST na pipeline: Automatize o scan para que possa focar na resolução do problema e não na ferramenta em si;
- Atenção aos Falsos-Positivos: Toda ferramenta automatizada pode trazer falsos-positivos, portanto atenção à cada ponto do relatório que a ferramenta ou equipe de segurança irá apresentar para a equipe de desenvolvimento. É importante identificar o que de fato é um falso-positivo e o que de fato é uma vulnerabilidade.
Algumas ferramentas SAST:
Ao som de: The Doors – People Are Stranger