Saudações pessoal!
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:
Ferramenta | Linguagem | Link para acesso |
---|---|---|
Brakeman | Ruby | https://brakemanscanner.org/ |
SonarQube | 27 linguagens | https://www.sonarqube.org/ |
Bandit | Python | https://pypi.org/project/bandit/ |
Horusec | Várias linguagens | https://horusec.io/ |
CPPCheck | C++ | http://cppcheck.sourceforge.net/ |
Graudit | Groovy | https://github.com/wireghoul/graudit |
Dependency Check (SCA) | Dependências de Código | https://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:
- Docker: Siga este tutorial para instalação
- Docker Compose: Siga este tutorial para instalação
- Git: Siga este tutorial para instalação
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:
git clone 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: [email protected]
- 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.
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!
Abraço!