Dependency-check com Jenkins
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 💜
Caso queiram usar o repositório com biblioteca vulnerável: