
Esegue la scansione dei file selezionati per individuare i pattern indicati nelle regole. Viene utilizzato per trovare segreti che potresti aver scritto accidentalmente in un file. Questo scanner viene utilizzato per mostrare come il [report delle vulnerabilità](https://docs.gitlab.com/ee/user/application_security/vulnerability_report/) di GitLab possa essere popolato da uno scanner personalizzato. Puoi vedere una demo in azione seguendo la documentazione nel progetto [Secret List](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/secret-list).
Benvenuto nel Fern Pattern Scanner. Questo scanner esamina i file suggeriti e individua qualsiasi pattern indicato nel file rules/rules.yaml utilizzando le regex. Viene quindi generato un report con tutti i risultati. Questo progetto viene utilizzato per mostrare come uno scanner di sicurezza personalizzato può essere integrato in GitLab per popolare la Pipeline Security Tab, i vulnerability report e il merge request widget
Nota: L'accesso ai vulnerability report richiede una sottoscrizione a GitLab Ultimate
Puoi attivare questo scanner di sicurezza aggiungendo quanto segue al tuo .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"
Puoi vedere lo scanner in esecuzione sul progetto Secret List. Una volta completato, lo scanner genera un report chiamato gl-secret-detection-report.json. Tale report viene validato e caricato nel vulnerability report e nel merge request widget.
Se desideri ignorare la scansione di determinati percorsi nel progetto su cui lo scanner è in esecuzione, puoi impostare la seguente variabile con valori separati da virgola:
variables:
FERN_ANALYZER_EXCLUDED_PATHS: "docs, tests"
Se desideri eseguire il tuo set di regole di pattern regex in GitLab, devi procedere come segue:
patterns:
- name: 'PATTERN NAME 1'
pattern: 'REGEX 1'
- name: 'PATTERN NAME 2'
pattern: 'REGEX 2'
fern_secret_detection:
script:
- /app/fern-pattern-scanner scan --rules "/path/to/rules.yaml" --report
Esegui il check-in del tuo codice e lo scanner dovrebbe iniziare a funzionare con il nuovo set di regole. Questo scanner non esegue la scansione dei diff dei commit. Cerca i pattern nell'intero progetto
Al termine della pipeline, puoi fare clic sulla Security tab per visualizzare tutti i problemi rilevati. Se hai GitLab Ultimate, questi problemi possono essere visualizzati anche nel Vulnerability Report
Puoi utilizzare questo scanner per rilevare pattern per tipi di file selezionati sulla tua macchina locale. Per eseguire questo scanner sulla tua macchina locale, segui i passaggi seguenti:
$ go install gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner
Nota: Questa operazione scaricherà il file nella tua cartella $GOBIN. Se sei nuovo a Go, questo playground illustra l'installazione di 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: Puoi anche scaricare il file direttamente dal progetto
$ 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
Creato e mantenuto da Fern🌿