DevSecOps: Como usar o SonarQube para análise de vulnerabilidades
Quando falamos de DevSecOps, estive um termo chamado Shift Left, que consiste em analisar questões de segurança desde o inicio do desenvolvimento de uma aplicação, ao invés do modelo tradicional que a segurança só era testada no final.
Ao fazer essas análises de segurança dentro de uma pipeline DevOps, temos duas que são conhecidas como SAST ( Static Application Security Testing ) e DAST ( Dynamic Application Security Testing ).
SAST – tem como objetivo analisar o código fonte de uma aplicação e prever ameaças antes mesmo da aplicação ter sido construída.
DAST – tem como objetivo analisar a aplicação já construída, ou seja, é feito o deploy dessa aplicação e depois feitos uma série de testes como SQL Injection, XSS, CSRF e entre outras.
Nesse post vou explicar como podemos utilizar a ferramenta SonarQube para fazer a análise de vulnerabilidades a partir do código fonte de uma aplicação e como é possível interromper a esteira de execução do Jenkins caso o número de vulnerabilidades seja maior do que um valor já pré-definido.
Agora vamos subir um ambiente de testes utilizando o Vagrant, nele vou subir duas máquinas, sendo elas: Jenkins e Docker.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.define "jenkins" do |jenkins|
jenkins.vm.network "private_network", ip: "192.168.33.10"
jenkins.vm.provider "virtualbox" do |vb|
vb.memory = 2048
end
jenkins.vm.provision "shell", inline: <> /etc/apt/sources.list
apt-get update
apt install openjdk-8-jre -y
apt-get install jenkins -y --allow-unauthenticated
SHELL
end
config.vm.define "docker-centos" do |docker|
docker.vm.box = "centos/7"
docker.vm.network "private_network", ip: "192.168.33.11"
docker.vm.provider "virtualbox" do |vb|
vb.memory = 2048
end
docker.vm.provision "shell", inline: <<-SHELL
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine -y
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum install docker-ce epel-release git -y
#systemctl enable docker
#systemctl start docker
SHELL
end
end
Criar um arquivo chamado Vagrantfile com o conteúdo acima e depois digite o comando: vagrant up para provisionar as duas máquinas.
Quando a máquina docker-centos estiver no ar, faça o deploy de um container de sonarqube utilizando a linha abaixo:
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube
Com o container já em execução acesse no navegador:
O usuário e senha são: admin / admin
Faça a criação do token e defina a linguagem do projeto, parecido com a imagem abaixo:

Agora que já temos o projeto e token do usuário criados, vamos para a parte de configuração do jenkins:
Acesse: Manage Jenkins > Manage Plugins e instale o plugin sonarqube scanner.

Agora Configure o jenkins com o caminho onde está instalado o sonarqube.

Configure também para baixar o SonarScanner.

Agora crie uma job do tipo Freestyle chamada SAST, vincule um repositório git:

E adicione um step com o SonarScanner:

Defina o nome do projeto a ser analisado.

Salve e execute a job.
Se executada com sucesso, a saída será parecida com essa:

A mensagem ERROR, aparece pois o projeto que vinculei, não passou nos Quality Gates do sonar, para ver o report da análise, é só acessar a interface do Sonar e ver o status do projeto que deve ter ficado parecido com a imagem abaixo:

Esse é um overview da análise estática do projeto, no nosso caso como o foco é segurança, vamos analisar a parte de vulnerabilidades, pois uma foi encontrada.
Ao clicar em vulnerabilidade será listada uma tela parecida com a imagem abaixo:

Nela podemos ver a vulnerabilidade encontrada, corrigi-la e depois executar a análise estática de novo.
About author
Você pode gostar também
MLOps: A chave para o sucesso na implantação de Machine Learning
Um projeto de Machine Learning (ML) de sucesso depende de implantação profissional. Muitas organizações ainda não estão preparadas para fazer implantação de modelos de ML por falta de profissionais especializados.
Descubra como explorar vulnerabilidades em diferentes plataformas com nosso guia passo a passo
Na continuação dos artigos da série, vamos recriar os passos utilizados para se descobrir uma vulnerabilidade real (CVE-2010-0083) encontrada pelo autor, bem como definir a forma de explorar tal vulnerabilidade.
Atualização do curso de Kubernetes: 40 horas de aula e suporte para certificações CKAD e CKA
Olá para você que trabalha ou tem interesse na área de containers, a 4Linux acaba de atualizar e ampliar o curso de Kubernetes que agora conta com 40 horas de







