devsecops-na-pratica icon indicating copy to clipboard operation
devsecops-na-pratica copied to clipboard

Este repositorio é apenas um exemplo de como adicionar OWASP ZAP Actions em uma pipeline de DevOps.

devsecops-na-pratica

Este repositorio é apenas um exemplo de como adicionar OWASP ZAP Actions em uma pipeline de DevOps.

DAST - Dynamic Application Security Testing ou Teste de segura de aplicativo dinâmico

Este teste só é realizado em aplicações dinâmicos ou melhor dizendo, em aplicações que estão funcinando.

O motivo disso é que neste contexto você pode explorar situações que talvez não possam ser obtidas antes de rodar a aplicação ou no Code Review.

OWASP ZAP

A ferramenta que iremos utilizar neste exemplo é o OWASP ZAP, um DAST muito poderoso que tem inumeraas funções e pode nos ajudar no momento de testar nossa aplicação. Esta ferramenta fornece uma interface grafica, mas também uma API e ferramentas CLI, que serão as utilizadas no momento.

Github Actions

As Actions são comandos em sequencia utilizados para montar uma pipeline no CI/CD do Github, muitos dessas Actions são open source, possibilitando que a comunidade se ajudee criando cada vez mais opções de sequencias para as pipelines.

Neste caso, usaremos uma Action pronta do OWASP ZAP, que já implementa as sequencias do CLI e espera apenas alguns parametros para configuração final.

No momento, existem apenas duas Actions prontas do OWASP ZAP, mas você pode criar sua propria configuração do zero se precisar, basta analisar o código das Actions já exitentes.

  • OWASP ZAP Action Baseline Scan, esta Action roda apenas um reconhecimento basico da aplicação sem aplicar nenhuma regra de ataque e possibilita a configuração de alguns alertas de segurança.
  • OWASP ZAP Action Full Scan, já aqui nossa Action roda varias funções de reconhecimento e de ataque da ferramenta, podendo levar muito mais tempo para finalizar a tarefa.

Vamos utilizar o full scan apenas para visualizar todos os possiveis resultados da ferramenta.

Github Actions Workflow

Quando colocamos um arquivo de configuração YAML(.yml) dentro de um diretorio chamado .github/workflows, automaticamente o Github Actions vai interpretar estas configurações e executar de acordo. Você pode clicar aqui para verficar como ficou nossa configuração final. Lembrando que estamos utilizando a aplicação, já em produção, OWASP Juice Shop, que é outro projeto da OWASP para simular um eCommerce com vulnerabilidades, para ser o nosso target: http://demo.owasp-juice.shop/

Nossa Action agora espera que o fluxo da pipeline seja executada toda vez que ocorrer um push na master, ou um PR e ainda pode ser disparada direto pelo dashboard de Actions.

Assim que a ferramenta terminar de executar, ela ira abrir uma Issue com um resumo dos resultados e seguindo o link para a execução da Actions, podemos baixar o Artifact, que neste caso é o report da ferramenta OWASP ZAP daa maneira convencional.

Você pode verificar a Issue criada no primeiro Scan neste link: https://github.com/fguisso/devsecops-na-pratica/issues/1

Para analisar o job deste primeiro scan, acesse este link: https://github.com/fguisso/devsecops-na-pratica/actions/runs/641418788

E para baixar o Artifact deste job, só clicar e fazer o download do .zip que contem o resultado em formato Markdown, JSON ou HTML para melhor visualização: https://github.com/fguisso/devsecops-na-pratica/suites/2230937725/artifacts/46242565