Dependency-check com Jenkins

Michelle Mesquita
5 min readMay 5, 2023

--

Olá pessoal, tudo bem com vocês?

Hoje resolvi trazer uma integração que pode ser muito útil na área de DevSecOps! A integração do Jenkins com a ferramenta da OWASP chamada Dependency-Check.

➡️ O Jenkins é uma ferramenta de CI, no qual facilita automações e a entrega contínua, passando pela fase de build, teste até chegar em produção, realizando o deploy. Ele possui como um dos seus grandes diferenciais o uso de plugins que facilitam a adicionar ferramentas que ajudam a aprimorar os testes.

➡️ Dependency-check é uma ferramenta da OWASP focada em analisar dependências da aplicação, ou seja, bibliotecas. De forma totalmente gratuita. Essa ferramenta utiliza esse banco de dados https://nvd.nist.gov/vuln/data-feeds para olhar se há um novo CVE publicado.

Assim, é interessante usar essa ferramenta pois sabemos que as bibliotecas são um meio de entrada para vulnerabilidades, como o próprio log4J!

Vamos ao nosso lab 🚀

1# Instalar o Jenkins na máquina

Após seguir os passos acima, teremos um ambiente assim:

Caso tenham utilizado o usuário admin, lembrem-se de usar esse comando para recordar a senha:

cat /Users/[username]/.jenkins/secrets/initialAdminPassword

2# Instalar plugin do Dependency-Check

Vocês podem utilizar o plugin que vem no Jenkins, conforme imagem abaixo. No entanto, na versão publicada, não apresenta o gráfico que usaremos para ver as vulnerabilidades.

Para isso, eu fui nas configurações avançadas e fiz o download do arquivo .hpi que está disponível na url.

Depois é so clicar em "Deploy" e reiniciar o Jenkins!

3# Clicar em tools

3.1# Configurar o maven

3.2# Configurar Dependency-Check

Clicar em Save

4# Criar pipeline

Escolher o modo de criar pipeline

Segue o script:

pipeline {
agent any

stages {
stage('Git') {
steps {
git branch: 'main', url: 'https://github.com/michelleamesquita/myown-spring4shell-app.git'
}
}
stage('DP') {
steps {
dependencyCheck additionalArguments: '--format HTML --format XML', odcInstallation: 'Dependency Check'
dependencyCheckPublisher pattern: '**/dependency-check-report.xml'
}
}
stage('Telegram') {
steps {

withCredentials(([string(credentialsId: 'telegramChatId', variable: 'CHAT_ID')])) {
telegramSend(message: 'done 🚀', chatId: "$CHAT_ID")
}
}
}
}
}

Caso haja dúvida do script:

1 — Está baixando o repositório com biblioteca vulnerável da branch main

2 — Verifica as bibliotecas no Dependency-Check

Caso haja dúvida dos parâmetros, esse link irá ajudar

3 — Envia mensagem de concluído para o Telegram!

Output:

#Jenkins

#Gráfico de vulnerabilidades na tela do Projeto

#CVEs listados

Clique em um build

Essa plugin aparecerá ao lado esquerdo

Você também pode clicar em Workspace e ver o arquivo html interno no Jenkins:

5# Telegram

Baixe o plugin

Clique em System

Adicione o token do seu bot

Para chamar uma secret, como o id do canal do bot, eu usei uma variável de ambiente.

Essa variável pode ser criada seguindo esses passos:

Telegram:

Espero que tenham gostado 💜

--

--

Michelle Mesquita
Michelle Mesquita

Written by Michelle Mesquita

DevSecOps & AppSec Engineer & Developer girl 👩‍💻

No responses yet