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
Introdução ao Robot Framework: Ferramenta para Testes Automatizados
Hoje, no blog da 4Linux, vamos falar sobre Robot Framework, uma ferramenta voltada para testes automatizados. O objetivo é fazer uma séries de posts até a criação de uma pipeline
Como versionar sua infraestrutura com Terraform e GitLab
Deixando um pouco o assunto sobre Corona Vírus de lado, chegamos ao penúltimo post da nossa série de postagens sobre Terraform. Aqui iremos falar sobre como versionar sua infraestrutura utilizando
Por que aprender sobre Containers é essencial para profissionais de TI
Conhecimentos em Docker, Kubernetes, OpenShift e outras soluções de containers estão valorizados. Em 2013, escrevi um artigo explicando por que um profissional de TI deveria aprender Linux e nele explico







