Este repositório utiliza GitHub Actions para implementar pipelines de segurança usando Semgrep para SAST e OWASP ZAP (Zed Attack Proxy) para DAST.
O pipeline é acionado por três eventos diferentes:
-
pull_request:
- Analisa arquivos modificados em pull requests, tornando-o ciente de diferenças e focado apenas na análise das modificações.
-
workflow_dispatch:
- Permite a execução sob demanda através da interface do GitHub Actions. Pode ser acionado manualmente quando necessário.
-
push:
- Analisa branches principais (
master
emain
) e relata todos os findings.
- Analisa branches principais (
O job utiliza um contêiner Docker com a ferramenta Semgrep pré-instalada. Não altere a imagem Docker especificada (returntocorp/semgrep
) para garantir compatibilidade com o pipeline.
-
Ignorar PRs do Dependabot:
- Usa uma declaração condicional (
if: (github.actor != 'dependabot[bot]')
) para ignorar PRs criados pelo Dependabot e evitar problemas de permissão.
- Usa uma declaração condicional (
-
Buscar o Código-Fonte do Projeto:
- Utiliza a ação GitHub Checkout (
actions/checkout@v3
) para obter o código-fonte do projeto.
- Utiliza a ação GitHub Checkout (
-
Executar Análise do Semgrep:
- Executa o comando
semgrep ci
dentro do contêiner Docker. Esse comando inicia a análise estática do Semgrep no projeto.
- Executa o comando
- SEMGREP_APP_TOKEN:
- O pipeline se conecta à Plataforma Semgrep Cloud usando o token de aplicativo fornecido. Esse token é armazenado de forma segura nos secrets do GitHub e é recuperado durante a execução do pipeline.
- Certifique-se de que o token de aplicativo do Semgrep foi gerado na Plataforma Semgrep Cloud em Configurações.
- Adicione o token gerado aos segredos do repositório GitHub com o nome
SEMGREP_APP_TOKEN
.
O pipeline é acionado por três eventos diferentes:
-
pull_request:
- Analisa arquivos modificados em pull requests, tornando-o ciente de diferenças e focado apenas na análise das modificações.
-
workflow_dispatch:
- Permite a execução sob demanda através da interface do GitHub Actions. Você pode acionar manualmente o pipeline quando necessário.
-
push:
- Analisa branches principais (
master
emain
) e relata todas as descobertas. Isso é útil para monitorar continuamente a segurança do seu aplicativo.
- Analisa branches principais (
-
Checkout do Código-Fonte:
- Utiliza a ação GitHub Checkout (
actions/checkout@v2
) para obter o código-fonte do projeto a partir do branchmaster
.
- Utiliza a ação GitHub Checkout (
-
Execução do ZAP Scan:
- Utiliza a ação
zaproxy/[email protected]
para realizar a varredura com o ZAP.- O token de autenticação é fornecido através do
secrets.GITHUB_TOKEN
. - A app para realizar a varredura foi definida como 'https://juice-shop.herokuapp.com/' para ganhar tempo, mas lembre de alterar para a URL real da sua app.
- O arquivo de regras é especificado como '.zap/rules.tsv'.
- Opções adicionais do comando ZAP podem ser configuradas usando
cmd_options
.
- O token de autenticação é fornecido através do
- Utiliza a ação