Entenda o SAST e como implementar com o Horusec em seu projeto

Entenda o SAST e como implementar com o Horusec em seu projeto

Saudações pessoal!

Nós já falamos por aqui sobre DevSecOps e como implementar em nosso ciclo de desenvolvimento. Neste post iremos entrar em uma das etapas mais importantes deste ciclo de desenvolvimento seguro, o SAST.

Primeiro, o que é SAST?

A sigla SAST em português significa teste de segurança de aplicativo estático, também é chamado de “análise estática”, e se trata de uma metodologia de teste que analisa o código-fonte da aplicação para encontrar possíveis vulnerabilidades de segurança que tornam os aplicativos de sua organização suscetíveis a ataques. O SAST verifica um aplicativo antes que o código seja compilado. E é justamente por isso que é tratado como “análise estática”, pois não há no código fonte o mesmo dinamismo presente em uma aplicação em execução. Este teste também é conhecido como teste de caixa branca, por entregar o acesso total e irrestrito ao código fonte para a testagem.

Existem várias ferramentas que podem ser utilizadas nesta etapa. Geralmente neste ponto escolhemos as ferramentas baseados na linguagem de programação que nossa solução utiliza. Vou deixar algumas opções que acho interessantes, para que vocês conheçam:

FerramentaLinguagemLink para acesso
BrakemanRubyhttps://brakemanscanner.org/
SonarQube27 linguagenshttps://www.sonarqube.org/
BanditPythonhttps://pypi.org/project/bandit/
HorusecVárias linguagenshttps://horusec.io/
CPPCheckC++http://cppcheck.sourceforge.net/
GrauditGroovyhttps://github.com/wireghoul/graudit
Dependency Check (SCA)Dependências de Códigohttps://owasp.org/www-project-dependency-check/

Aqui no blog já falamos sobre o SonarQube, clique aqui e leia o post!

Horusec

Beleza, agora já sabemos o que é SAST, então vamos conhecer o Horusec. Segundo o site oficial da ferramenta “O Horusec é uma estrutura de código aberto que potencializa a identificação de vulnerabilidades em seu projeto com apenas um comando.”

Ou seja, temos aqui uma ferramenta capaz de identificar possíveis vulnerabilidades no seu projeto por meio de comandos! Isso é bem legal, não é mesmo? Afinal, com essa possibilidade podemos integrar facilmente esta análise diretamente em nossa pipeline, tornando o ciclo de vida de desenvolvimento de software mais seguro.

O Horusec é opensource e consegue realizar análise estática de códigos visando identificar falhas de segurança. Ele possui compatibilidade com as seguintes linguagens de programação:

  • Python
  • Ruby
  • Javascript/Typescript
  • GoLang
  • C#
  • Java
  • Kotlin
  • Kubernetes
  • Terraform
  • Leaks
  • Leaks(optional search in git history)
  • PHP
  • C/C++
  • HTML
  • JSON
  • Dart
  • Shell Script
  • Elixir

A ferramenta irá usar como referência a lista com as principais vulnerabilidades da WEB lançada pela OWASP. A OWASP Top 10, que inclusive lançou uma nova versão recentemente, e eu comentei detalhadamente cada ponto da lista neste post (clica e vai lá conferir).

Além de verificar vulnerabilidades no código fonte, o Horusec também irá procurar por “leaks” no código, para encontrar possíveis vazamentos de credenciais, chaves privadas ou mesmo senhas Hard coded. Ele possui suporte para:

  • Certificados;
  • Chaves AWS;
  • Chaves Google Cloud;
  • Chaves Privadas.

Também é possível escanear dependências de software, para encontrar possíveis problemas em bibliotecas de terceiros. Isso é feito via auditoria.

Nós temos duas ferramentas importantes ao falar da solução Horusec, sendo elas:

  • Horusec-CLI: é a ferramenta responsável por oferecer uma interface de linha de comando ao usuário, e é responsável por fazer as análises de segurança, a identificação e classificação de vulnerabilidades.
  • Aplicação WEB: são basicamente “extensões” da CLI, e são usadas para que possamos gerenciar e classificar as vulnerabilidades que encontramos na aplicação. Ela também oferece um dashboard bem intuitivo para utilização.

A estrutura é definida na imagem abaixo, disponível no site da aplicação:

Mas, vamos seguir para nossos testes práticos para ver tudo isso funcionando de verdade!

Hands On com Horusec

Bacana, compreendemos o que é o Horusec, e agora vamos colocar tudo pra funcionar. Antes de continuar, você precisa ter instalado em seu computador as seguintes ferramentas:

Existem algumas opções para instalarmos o Horusec em nosso ambiente, sendo elas:

  • Instalação usando Helm
  • Instalação usando Operator
  • Instalação usando Docker Compose

Nós vamos utilizar o Docker Compose por ser mais simples, e por se tratar de um laboratório.

Depois de instalar as dependências que citei acima, clone o repositório com o comando:

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

Agora, acesse a pasta que você acabou de clonar:

cd horusec-platform

Para realizar a instalação, basta executar o comando:


make install

Ao executar o comando para instalação o seu código irá configurar todos os containers e dependências necessárias para a execução do software. Esse processo pode levar alguns minutos, e está tudo bem. Ao final da instalação, você pode verificar o funcionamento de algumas formas, a primeira é verificando os containers que estão em execução no momento por meio do comando:


docker container ls

Você verá algo como:

Vamos agora acessar os serviços que subimos. Para isso você pode acessar o endereço http://localhost:8043 para ver as telas da aplicação web, que são exibidas pelo serviço Horusec-Manager. Você verá uma tela semelhante a esta:

As credenciais padrão são as seguintes:

  • E-mail: dev@example.com
  • Senha: Devpass0*

Criando uma análise de teste

Agora que instalamos o Horusec, vamos criar uma análise para testar o fluxo de nossa aplicação. Para isso, a primeira coisa que precisamos fazer é criar um Workspace. Para isso, após logar-se no sistema, clique no botão “Add Workspace” que aparece na home:

Insira agora o nome e a descrição do seu workspace, como ilustrado a seguir:

Seu workspace ficará disponível para seleção. Selecione-o:

Vamos agora adicionar um repositório. Para isso, clique no botão “Add Repository”:

Insira as informações deste repositório:

Agora, selecione o repositório que você acabou de criar:

Você verá um Dashboard, ainda vazio. Para seguirmos nossos testes vamos precisar criar um token que será utilizado via cli por nós. Para criar o token, clique no menu “Tokens”:

Depois, crie o token clicando em “Add Token”:

Preencha com as informações:

Ao clicar no botão “To save” você verá o token que acabamos de criar. Copie-o e salve-o em um lugar seguro!

Feito isso, podemos seguir para a parte de análise da nossa aplicação. Para testes, vamos utilizar a aplicação JuiceShop da OWASP. Esta é uma aplicação vulnerável de propósito, criada para uso da comunidade visando trazer mais segurança as aplicações web em geral.

Porém, antes de seguir, precisaremos instalar o Horusec-CLI em nossa estação de trabalho. Para isso, execute os seguintes comandos:

Se você utiliza MAC ou Linux:

curl -fsSL https://raw.githubusercontent.com/ZupIT/horusec/main/deployments/scripts/install.sh | bash -s latest

Ou, se você usa windows, execute:

curl -k "https://github.com/ZupIT/horusec/releases/latest/download/horusec_win_amd64.exe" -o "./horusec.exe" && ./horusec.exe version

Agora, vamos o repositório com o código fonte da aplicação JuiceShop, antes de iniciarmos os testes. Para isso, execute:


git clone https://github.com/juice-shop/juice-shop.git

Feito isso, podemos finalmente escanear o código fonte da aplicação. Para isso, execute o comando:


horusec start -a <seu-token-criado> -p juice-shop/

Neste comando, temos as seguintes opções:

  • horusec: o binário que instalamos para realizar as verificações
  • start: opção para iniciar nosso escaneamento
  • -a: opção para inserirmos o token do nosso repositório
  • -p juice-shop/: diretório que será analisado

Esta execução levará alguns minutos. Ao fim veremos algo semelhante a:

Para visualizar estes dados no dashboard, basta seguir para o repositorio que criamos no menu Dasboard. Veremos algo semelhante a:

Fique a vontade para explorar os dados coletados, e as vulnerabilidades descobertas na aplicação. Você encontrará em detalhes cada problema encontrado, classificado em categorias e linguagens.

Conclusão

Foi possível perceber com este laboratório que o Horusec além de identificar e centralizar informações, também disponibiliza uma ferramenta para gerenciamento de acesso e visualização das vulnerabilidades.

Seguindo a mesma ideia presente neste post, e também na documentação oficial do software, podemos implementar a ferramenta diretamente em nossa pipeline, visando trazer uma entrega mais segura de software em nosso ambiente.

Você quer saber mais sobre DevSecOps? Conheça nosso curso!

Não deixe de comentar abaixo com suas dúvidas e sugestões! E não se esqueça de compartilhar este post em suas redes sociais!

 

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

 

Anterior Black November 4Linux: 50% de desconto em todos os cursos para alavancar sua carreira!
Próxima Como garantir que seu site esteja sempre online com ferramentas de monitoramento

About author

Samuel Gonçalves
Samuel Gonçalves 6 posts

Saudações! Eu possuo mais de 9 anos de experiência em Tecnologia, várias certificações, um monte de projetos dos quais faço parte! Sou Especialista em Segurança Ofensiva e DevOps. Também possuo MBA em Data Science e IoT. O que mais importa é: vamos nos conectar? É só me chamar!

View all posts by this author →

Você pode gostar também

Containers

Dominando o Docker Swarm: Implantação de Stack de Serviços em Cluster

Swarm é uma ferramenta de cluster nativa para Docker, que utiliza a API padrão. Ou seja, qualquer ferramenta que fizer uso da API Docker, poderá usar Swarm para escalar contêineres,

Infraestrutura TI

Como criar uma federação de usuários com Keycloak e LDAP: um tutorial passo a passo

Na primeira parte dessa série de posts, vimos de maneira geral o funcionamento do Keycloak. Nessa segunda parte veremos como criar um user federation para importar usuários da nossa base

Cloud

Conexão com Cluster Kafka Hospedado em Kubernetes: Guia Completo

Nesse artigo vamos discutir questões relacionadas a como disponibilizar um cluster kafka hospedado em um k8s para aplicações que estejam hospedadas fora do cluster kubernetes. Não vamos tratar da instalação