InfoSec-iniciante

👾 Inicio Cronograma DevSecOps

Pipeline DAST

Contexto

Se você não sabe o que é pipeline, DAST, Workflow e Github Actions, eu escrevi sobre aqui.

Dast usado no exemplo

Implementação:

GitHub Actions

Configurando workflow

Eventos:

name: OWASP ZAP
on:
  schedule:
    - cron: '0 6 * * *'

Nesse exemplo eu quero que todos os dias em um horario X, seja feita uma análise do projeto.
Para isso vou usar o CronJob, o que é um CronJob?

Utilizando cronJobs conseguimos agendar tarefas individuais para um horário específico, como por exemplo análise do site seja feita em um horário que não tenha tantos usuários online. Também podemos agendar para que seja feita mais de uma vez por dia. Veja mais aqui

No exemplo ‘0 6 * * *’ indica que a tarefa será executada todos os dias às 6:00 da manhã baseada no horário UTC (Tempo Universal Coordenado).

Sintaxe do cronograma cron


# ┌───────────── minuto (0 - 59)
# │ ┌───────────── hora (0 - 23)
# │ │ ┌───────────── dia do mês (1 - 31)
# │ │ │ ┌───────────── mês (1 - 12)
# │ │ │ │ ┌───────────── dia da semana (0 - 6) (domingo a sábado;
# │ │ │ │ │                                 7 também representa domingo em alguns sistemas operacionais)
# │ │ │ │ │
# │ │ │ │ │
# * * * * *

O editor rápido e simples para expressões de agendamento cron https://crontab.guru/

Trabalhos

jobs:
  dast:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout código
        uses: actions/checkout@v2
      - name: Executar OWASP ZAP
        uses: zaproxy/action-baseline@v0.7.0
        with:
          token: $
          docker_name: 'ghcr.io/zaproxy/zaproxy:stable'
          target: 'http://juice-shop.herokuapp.com/'
          cmd_options: '-a'

Aqui está a configuração final do meu arquivo YAML:

name: OWASP ZAP Cron Job
on:
  schedule:
    - cron: '0 6 * * *'
jobs:
  dast:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout código
        uses: actions/checkout@v2
      - name: Executar OWASP ZAP
        uses: zaproxy/action-baseline@v0.7.0
        with:
          token: $
          docker_name: 'ghcr.io/zaproxy/zaproxy:stable'
          target: 'http://juice-shop.herokuapp.com/' # URL do seu site ou ip
          cmd_options: '-a'

Essa programação garanti que a análise seja executada no horário especificado.

Depois da análise feita com sucesso, você pode conferir em Actions

quadro

Você receberá uma Issue chamada “ZAP Scan Baseline Report” contendo uma descrição das vulnerabilidades encontradas.

quadro

OWASP ZAP

Com Cronjob:

No exemplo eu usei com o cronjob. Mas por que escolher essa abordagem? Quais são os benefícios do uso do cronjob com o OWASP ZAP?

A utilização de um cronjob permite automatizar a execução regular dos testes de segurança com o OWASP ZAP, umas das vantagens:

Ou seja, se você deseja realizar verificações regulares e automatizadas, pode configurar um cronjob para executar o OWASP ZAP em intervalos específicos.

Com push

Dessa forma, o OWASP ZAP será executado automaticamente e verificará a segurança do site antes de cada push.

Combinando Cron e Push:

Seria benéfico adotar ambas as abordagens, cronjob e push? Embora eu ainda esteja explorando essa área, é possível considerar isso uma boa prática. No entanto, a decisão de usar ambas as abordagens depende das necessidades e preferências específicas do seu projeto.

A combinação dessas duas abordagens pode ser altamente vantajosa, oferecendo um monitoramento contínuo através do cronjob, enquanto a verificação de segurança antes de cada push garante uma proteção mais abrangente.

Ao adotar essa abordagem, o nosso arquivo de configuração poderia ser ajustado da seguinte forma:

name: OWASP ZAP Cron Job e Push
on:
  push:
    branches:
      - main
  schedule:
    - cron: '* 6 * * *'
jobs:
  dast:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout código
        uses: actions/checkout@v2
      - name: Executar OWASP ZAP
        uses: zaproxy/action-baseline@v0.7.0
        with:
          token: $
          docker_name: 'ghcr.io/zaproxy/zaproxy:stable'
          target: 'http://juice-shop.herokuapp.com/'
          cmd_options: '-a'

Referências:




< Anterior