DAST + Auth

“DAST + Zap == Scan autenticado 😎”

Problemática

Em uma empresa na qual eu trabalhei, precisávamos implementar um scan DAST na pipeline, porém todas as APIs precisavam estar autenticadas para conseguir enviar e receber uma resposta válida. A empresa utilizava centenas de APIs, cada uma com sua respectiva documentação OpenAPI (swagger), como implementamos um DAST que realmente pudesse fazer scan válido?

Ideia

Na época, a ferramenta BurpSuite ainda não suportava nativamente a leitura de swaggers, porém o Zap Proxy sim, então pensei em criar um script em python onde eu poderia baixar todas as APIs em pastas, ler uma por uma, realizar o login do meu usuário utilizando o token de autenticação como header nas requisições do scan.

Resultado

Conseguimos implementar com sucesso o scan DAST na pipeline através de container docker, tendo a certeza de que o scan estava sendo efetivo uma vez que todas as requisições estavam sendo feitas de forma autenticada.

PoC

Para esse prova e conceito irei utilizar o mesmo vídeo da página OWASP ZAP, nessa página do meu blog você pode encontrar todos os detalhes técnicos que realizei para conseguir performar esse scan.


Observação

Essa é uma versão antiga do script, em breve irei disponibilizar um jeito muito mais eficiente de se alterar uma requisição com um header utilizando o Zap Proxy.

Mais vale uma cultura de DevSecOps com ferramentas open source, do que centenas de ferramentas pagas que sem um processo bem definido!