
Escaneia arquivos selecionados em busca de padrões definidos em regras. É usado para encontrar segredos que você possa ter acidentalmente escrito em um arquivo. Este scanner é usado para mostrar como o [relatório de vulnerabilidades](https://docs.gitlab.com/ee/user/application_security/vulnerability_report/) do GitLab pode ser preenchido por um scanner personalizado. Você pode ver uma demonstração dele em ação seguindo a documentação no projeto [Lista de Segredos](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/secret-list).
Bem-vindo ao Fern Pattern Scanner. Este scanner examina os arquivos sugeridos e encontra quaisquer padrões definidos no rules/rules.yaml usando regex. Em seguida, um relatório é gerado com todas as descobertas. Este projeto é usado para demonstrar como um scanner de segurança personalizado pode ser integrado no GitLab e pode ser usado para preencher a Aba de Segurança do Pipeline, os relatórios de vulnerabilidade e o widget de merge request
Nota: O acesso aos relatórios de vulnerabilidade requer uma assinatura GitLab Ultimate
Você pode ativar este scanner de segurança adicionando o seguinte ao seu .gitlab-ci.yml:
include:
- remote: "https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner/-/blob/main/jobs/.fern-pattern-scanner.gitlab-ci.yml"
Você pode ver o scanner em execução no projeto Secret List. Quando o scanner termina, ele gera um relatório chamado gl-secret-detection-report.json. Esse relatório é validado e carregado no relatório de vulnerabilidade e no widget de merge request.
Se você deseja ignorar a verificação de determinados caminhos no projeto onde o scanner está sendo executado, pode definir a seguinte variável com valores separados por vírgula:
variables:
FERN_ANALYZER_EXCLUDED_PATHS: "docs, tests"
Se você deseja executar seu próprio conjunto de regras de padrões regex no GitLab, deve fazer o seguinte:
patterns:
- name: 'NOME DO PADRÃO 1'
pattern: 'REGEX 1'
- name: 'NOME DO PADRÃO 2'
pattern: 'REGEX 2'
fern_secret_detection:
script:
- /app/fern-pattern-scanner scan --rules "/path/to/rules.yaml" --report
Faça o commit do seu código e o scanner começará a ser executado com o novo conjunto de regras. Este scanner não verifica diffs de commit. Ele procura padrões em todo o projeto
Quando o pipeline for concluído, você pode clicar na aba Segurança para visualizar todos os problemas detectados. Se você tiver o GitLab Ultimate, esses problemas também podem ser vistos no Relatório de Vulnerabilidade
Você pode usar este scanner para detectar padrões para tipos de arquivo selecionados em sua máquina local. Para executar este scanner em sua máquina local, siga as etapas abaixo:
$ go install gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner
Nota: Isso baixará o arquivo para o seu $GOBIN. Se você é novo em Go, este playground aborda a instalação do Go
$ wget https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner/-/raw/main/rules/rules.yaml
...
Resolving gitlab.com (gitlab.com)... 2606:4700:90:0:f22e:fbec:5bed:a9b9, 172.65.251.78
Connecting to gitlab.com (gitlab.com)|2606:4700:90:0:f22e:fbec:5bed:a9b9|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 283 [text/plain]
Saving to: ‘rules.yaml’
rules.yaml 100%[===================>] 283 --.-KB/s in 0s
2023-05-20 16:02:46 (22.5 MB/s) - ‘rules.yaml’ saved [283/283]
Nota: Você também pode baixar o arquivo diretamente do projeto
$ fern-pattern-scanner scan --rules path/to/rules.yaml
INFO[0000] The scanner is starting
INFO[0000] Skipping the following directories: []
INFO[0000] Possible Vulnerability Detected: {Id:139999 Name:password variation 1 Message:The pattern in rule: password variation 1 was found in a file Description:The pattern in rule: password variation 1 was found in a file. Examine the file, remove and rotate your secret. Location:/Users/fern/Desktop/secret-list/.git/index Line:3}
...
INFO[0000] The scanner completed successfully
Criado e mantido por Fern🌿