InfoSec-iniciante

👾 Inicio Cronograma DevSecOps

Parte 2 - Configuração SAST

Parte 1 - Pipeline SAST

SAST

O SAST que estamos utilizando é o Horusec

Onde estamos?

Contexto

fluxo ci

No nosso exemplo:

name: SecurityPipeline
on:
 push:
   branches: [ "main" ]
 pull_request:
   branches: [ "main" ]


jobs:
 horusec-security:
   name: horusec-security
   runs-on: ubuntu-latest
   steps:
   - name: Check out code
     uses: actions/checkout@v2
     with:
       fetch-depth: 0
     - name: Run Horusec
       id: run_horusec
       uses: fike/horusec-action@v0.2.2
       with:
         arguments: -c=horusec-config.json -p ./

Análise - CLI

Como vimos o Horusec encontrou 34 vulnerabilidades. Uma vulnerabilidde é uma possível falha de segurança e nesse caso precisamos analisar todas vulnerabilidade e classificá-las, se realmente é uma vulnerabilidade ou:

Quando identificamos falso-positivo e aceitamos risco-aceito, precisamos add o hash delas no arquivo horusec-config.json

Exemplo:

Rodei o Horusec no projeto(CLI) assim fica mais fácil para analisar.

horusec

Depois de analisar se for falso-positivo você add o ReferenceHash em horusecCliFalsePositiveHashes, ficaria assim:

{
 ...
 "horusecCliFalsePositiveHashe": [
   "a10ed3df37c0dfff5c8ffdcd9861f81bc2bd2746436db4b944c72c883eb9b90c"
 ],
 ...
}

Se for risco-aceito, ficaria assim:

{
 ...
 "horusecCliRiskAcceptHashes": [
   "a10ed3df37c0dfff5c8ffdcd9861f81bc2bd2746436db4b944c72c883eb9b90c"
 ],
 ...
}

Outra implementação que podemos fazer é ignorar pastas/arquivos. Só faça isso se você tiver certeza que aquele diretório/arquivo não pode conter nenhuma vulnerabilidade. Por exemplo, por padrão a pasta vscode é ignorada:

{
 ...
 "horusecCliFilesOrPathsToIgnore": [
   "*tmp*",
   "**/.vscode/**"
 ],
 ...
}

Para ignorar um diretório ou arquivo, você pode passar o caminho exato ou usar **, exemplo:

{
 ...
 "horusecCliFilesOrPathsToIgnore": [
   "*tmp*",
   "**/.vscode/**",
   "**/modules/**"
 ],
 ...
}

Usando ** o Horusec busca em qualquer lugar do projeto essa pasta modules e ignora. Ou seja, não terá análise de vulnerabilidade nessa pasta, por isso precisamos usar com muito cuidado.

Como todos os arquivos da pasta modules foram ignorados, diminuiu o total de vulnerabilidades.

ignore pasta

Como analisar

Veja o que a mensagem informa.

Nesse exemplo acusou uma vulnerabilidade de “credencial exposta”, mas analisando na verdade a credencial não tá exposta, o valor dentro de SECRET_KEY é apenas um exemplo. Nesse caso podemos classificar como falso-positivo

SECRET_KEY = 'this-really-needs-to-be-changed'

falso positivo

O que podemos fazer também é surgerir melhorias. Continuando com o nosso exemplo, podemos surgerir que o seja feita uma alteração para o valor SECRET_KEY, venha de uma variável de ambiente.

Por que não colocar o arquivo de configuração config.py na pasta ignore?

Nesse caso não é uma boa prática, porque pode ser que alguém esqueça alguma credencial e realmente seja uma vulnerabilidade e não um falso-positivo, por isso uma boa prática é analisar hash por hash.

Depois de analisar todas vulnerabilidades, se você realmente encontrou uma vulnerabilidade, precisa comunicar o time, conforme o processo definido pela sua empresa.

Só lembrando que risco-aceito, não é definido por nós. Nós validamos e reportamos as vulnerabilidades. Só vamos classifica-lá como risco-aceito, após o report do time.

E depois de todas correções, agora você pode rodar o Horusec novamente.

falso positivo

Fim \o/

[Na parte 3, irei implementar o painel web do Horusec]

Referências




< Anterior Próxima >