Skip to content

Diário de Bordo – Sebastián Zuzunaga

Disciplina: Gestão de Configuração e Evolução de Software Equipe: OWASP (Blue Team) Comunidade/Projeto de Software Livre: OWASP (ej-application)


Sprint 2 – [23/09/2025 – 07/10/2025]

Resumo da Sprint

Busca de ferramentas de segurança para pipeline CI/CD, estudo das funcionalidades da ferramenta Gitleaks e implementação na pipeline.

Atividades Realizadas

Data Atividade Tipo (Código/Doc/Discussão/Outro) Link/Referência Status
03/10 Busca de ferramentas de segurança Estudo Concluído
05/10 Instalação e execução inicial de Gitleaks Código Instalar e rodar Concluído
08/10 Implementação de Gitleaks em pipeline CI/CD Código Gitleak pipeline Concluído

Maiores Avanços

  • Instalar e executar localmente a ferramenta Gitleaks.
  • Implementar a ferramenta Gitleaks para uma pipeline existente.
  • Entender como as tarefas são executadas em uma pipeline.

Maiores Dificuldades

  • Runners que executam tarefas com a tag k8s não existem no fork, foi resolvido comentando essas tags.

Aprendizados

Instalação de Gitleaks.

Instalação regular:
sudo apt install gitleaks

Instalação manual:
cd ~

curl -sSL https://github.com/gitleaks/gitleaks/releases/download/v8.19.1/gitleaks_8.19.1_linux_x64.tar.gz -o gitleaks.tar.gz

tar -xvzf gitleaks.tar.gz

sudo mv gitleaks /usr/local/bin/

gitleaks version

Como executar localmente Gitleaks, visualizar os segredos encontrados e como gerar relatório.

Execução local simples:
gitleaks detect .

Resultado:

gitleak detect

Gerar relatório detalhado
gitleaks detect -v --report-path gitleaks-report.json

Resultado:

Relatório gera múltiplas entradas com esta forma, cada um representa um segredo encontrado.

{
  "Description": "Detected a Generic API Key, potentially exposing access to various services and sensitive operations.",
  "StartLine": 129,
  "EndLine": 129,
  "StartColumn": 6,
  "EndColumn": 83,
  "Match": "SECRET_ID = \"8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92\"",
  "Secret": "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92",
  "File": "src/ej_users/tests/test_api.py",
  "SymlinkFile": "",
  "Commit": "a131ff4da6b80049afbb4416ea42fc22890f98d4",
  "Entropy": 3.5674453,
  "Author": "David Carlos",
  "Email": "ddavidcarlos1392@gmail.com",
  "Date": "2024-07-19T02:42:35Z",
  "Message": "Merge branch 'merge-authentication-flow-issue-1470' into 'develop'\n\nAdds support to authenticate users using an external identity provider, for example, the Brasil Participativo platform\n\nSee merge request pencillabs/ej/ej-application!352\n\nCo-authored-by: Giovanni Giampauli \u003cgiovanni.acg@gmail.com\u003e\n\ncommit fb99b0b93981f962c34a2eee1d3d59f048b5e3fa\nAuthor: David Carlos \u003cddavidcarlos1392@gmail.com\u003e\nDate:   Fri Jul 19 02:42:34 2024 +0000\n\nAdds support to authenticate users using an external identity provider, for example, the Brasil Participativo platform",
  "Tags": [],
  "RuleID": "generic-api-key",
  "Fingerprint": "a131ff4da6b80049afbb4416ea42fc22890f98d4:src/ej_users/tests/test_api.py:generic-api-key:129"
}


  • Description: Descreve o tipo de segredo detectado.
  • File: Caminho do arquivo onde o segredo foi encontrado.
  • StartLine/EndLine: Intervalo onde o segredo aparece.
  • Match/Secret: Trecho do valor detectado.
  • RuleID: Identificador interno da regra que disparou o alerta.
  • Entropy: Mede o "nível de aleatoriedade" da string, valores altos indicam chaves ou hashes.
  • Tags: Palavras-chave relacionadas ao tipo de segredo.
  • Commit: Hash do commit onde o segredo apareceu.
  • Author: Quem introduziu o segredo.
  • Date: Quando o segredo foi introduzido.
  • Line: Mostra o código completo da linha para contexto.

Como adicionar o Gitlab ao fluxo de trabalho de um pipeline.


stages:
    - style
    - security
    - linter
    - unit tests
    - build
    - deploy
    - e2e tests

gitleaks:
  stage: security
  image:
    name: zricethezav/gitleaks
    entrypoint: [""]
  script: 
    - gitleaks detect --source . --verbose --report-path gitleaks-report.json
    - |
      if [ -s gitleaks-report.json ] ; then
        echo "Gitleaks found potential secrets — failing pipeline."
        cat gitleaks-report.json
        exit 1
      else
        echo "No new secrets found."
      fi


Este código cria um relatório e, em seguida, verifica que se ele existe e não é vazio se essas duas condições são atendidas, então significa que os segredos foram encontrados, por isso uma mensagem de erro será dada e o pipeline falhar.

Resultado:

gitleak pipeline

gitleak job

Plano Pessoal para a Próxima Sprint

  • [ ] Continuar o estudo de Gitleaks.
  • [ ] Criar runner com a tag k8s para descomentar partes do código.
  • [ ] Verificar onde estão os segredos e como resolvê-los.