Stage de Scan DAST com OWASP ZAP - GitLab

Avatar do usuário
Elton
Administrator
Administrator
Mensagens: 1260
Registrado em: 10 Jun 2013 12:44
Status: Offline

Stage de Scan DAST com OWASP ZAP - GitLab

Mensagem por Elton »

Estágio de Scan DAST com OWASP ZAP

Visão Geral:
Este projeto implementa um estágio DAST (Dynamic Application Security Testing) usando OWASP ZAP no pipeline CI/CD do GitLab para realizar verificações automáticas em aplicações web. O objetivo é detectar vulnerabilidades antes da implantação em produção.
Funcionalidades Principais:
  • OWASP ZAP: Ferramenta open-source para testes de segurança em aplicações web.
  • Integração com CI/CD no GitLab: Verificações contínuas de segurança ao longo do ciclo de vida do desenvolvimento.
  • Geração de Relatórios: Relatórios de vulnerabilidades gerados em PDF e enviados automaticamente por e-mail.
  • Suporte a Proxy: Uso de proxy para download de dependências e envio de e-mails.
Requisitos

Variáveis de Ambiente

Defina as variáveis de ambiente abaixo no GitLab para configuração do estágio:
  • Proxy Docker:
  • Configurações SMTP (para envio de e-mail):
    • Código: Selecionar todos

      HOST_SMTP_ZAP
      : Endereço do servidor SMTP.
    • Código: Selecionar todos

      USER_SMTP_ZAP
      : Nome de usuário para autenticação no SMTP.
    • Código: Selecionar todos

      PASSWORD_ZAP
      : Senha para autenticação no SMTP.
    • Código: Selecionar todos

      REMETENTE_EMAIL_ZAP
      : E-mail remetente para envio do relatório.
  • Configurações do ZAP:
    • Código: Selecionar todos

      DAST_TARGET_URL
      : URL da aplicação que será alvo do scan.
Configuração do Pipeline

Código: Selecionar todos

.gitlab-ci.yml

Código: Selecionar todos

dast_scan:
  stage: dast_scan
  image: maven:3.8.5-openjdk-11-slim
  before_script: []
  script:
    - export http_proxy=$PROXY_DOCKER
    - export https_proxy=$PROXY_DOCKER
    - apt-get update && apt-get -y install wget wkhtmltopdf msmtp
    - wget https://github.com/zaproxy/zaproxy/releases/download/v2.15.0/ZAP_2.15.0_Linux.tar.gz
    - mkdir zap && tar -xvf ZAP_2.15.0_Linux.tar.gz -C zap
    - cd zap/ZAP_2.15.0
    - ./zap.sh -cmd -quickurl $DAST_TARGET_URL -quickprogress -quickout ../zap_report.html -config database.reset=true
    - cd ..
    - wkhtmltopdf zap_report.html zap_report.pdf

    # Configuração para envio de e-mail com relatório
    - |
      echo "account gitlab" > /etc/msmtprc
      echo "host $HOST_SMTP_ZAP" >> /etc/msmtprc
      echo "port 587" >> /etc/msmtprc
      echo "auth on" >> /etc/msmtprc
      echo "user $USER_SMTP_ZAP" >> /etc/msmtprc
      echo "password $PASSWORD_ZAP" >> /etc/msmtprc
      echo "tls on" >> /etc/msmtprc
      echo "tls_starttls on" >> /etc/msmtprc
      echo "tls_certcheck off" >> /etc/msmtprc
      echo "from $USER_SMTP_ZAP" >> /etc/msmtprc
      echo "logfile /var/log/msmtp.log" >> /etc/msmtprc
      echo "account default : gitlab" >> /etc/msmtprc
    - chmod 600 /etc/msmtprc

    # Enviar e-mail com o relatório
    - |
      current_time=$(date "+%Y-%m-%d")
      {
        echo "Subject: Relatório DAST gerado em $current_time para o site $DAST_TARGET_URL."
        echo "To: $REMETENTE_EMAIL_ZAP"
        echo "Content-Type: multipart/mixed; boundary=\"boundary\""
        echo ""
        echo "--boundary"
        echo "Content-Type: text/plain; charset=\"utf-8\""
        echo ""
        echo "O relatório do DAST está em anexo. O site escaneado é: $DAST_TARGET_URL."
        echo ""
        echo "--boundary"
        echo "Content-Type: application/pdf; name=\"zap_report.pdf\""
        echo "Content-Transfer-Encoding: base64"
        echo "Content-Disposition: attachment; filename=\"zap_report.pdf\""
        echo ""
        base64 zap_report.pdf
        echo "--boundary--"
      } | msmtp --debug --from=default -t



Voltar para “CI/CD”