
Scanne les fichiers sélectionnés pour y trouver des motifs définis dans des règles. Il est utilisé pour détecter des secrets que vous auriez accidentellement écrits dans un fichier. Ce scanner montre comment le [rapport de vulnérabilité](https://docs.gitlab.com/ee/user/application_security/vulnerability_report/) GitLab peut être alimenté par un scanner personnalisé. Vous pouvez voir une démo en action en suivant la documentation du projet [Secret List](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/secret-list).
Bienvenue dans le Scanner de motifs Fern. Ce scanner parcourt vos fichiers suggérés et trouve les motifs définis dans le fichier rules/rules.yaml en utilisant des expressions régulières. Un rapport est ensuite généré avec toutes les découvertes. Ce projet sert à illustrer comment un scanner de sécurité personnalisé peut être intégré dans GitLab et utilisé pour alimenter l'onglet Sécurité du pipeline, les rapports de vulnérabilités et le widget de fusion.
Remarque : L'accès aux rapports de vulnérabilités nécessite un abonnement GitLab Ultimate.
Vous pouvez activer ce scanner de sécurité en ajoutant ce qui suit à votre fichier .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"
Vous pouvez voir le scanner s'exécuter sur le projet Secret List. Une fois le scanner terminé, il génère un rapport nommé gl-secret-detection-report.json. Ce rapport est validé et chargé dans le rapport de vulnérabilités et le widget de fusion.
Si vous souhaitez ignorer l'analyse de certains chemins dans le projet où le scanner s'exécute, vous pouvez définir la variable suivante avec des valeurs séparées par des virgules :
variables:
FERN_ANALYZER_EXCLUDED_PATHS: "docs, tests"
Si vous souhaitez exécuter votre propre ensemble de règles de motifs regex dans GitLab, vous devez suivre les étapes suivantes :
patterns:
- name: 'NOM DU MOTIF 1'
pattern: 'REGEX 1'
- name: 'NOM DU MOTIF 2'
pattern: 'REGEX 2'
fern_secret_detection:
script:
- /app/fern-pattern-scanner scan --rules "/path/to/rules.yaml" --report
Validez votre code et le scanner devrait commencer à s'exécuter avec le nouvel ensemble de règles. Ce scanner ne scanne pas les diffs de commits. Il recherche les motifs dans l'ensemble du projet.
Une fois le pipeline terminé, vous pouvez cliquer sur l'onglet Sécurité pour voir toutes les vulnérabilités détectées. Si vous disposez de GitLab Ultimate, ces vulnérabilités peuvent également être consultées dans le Rapport de vulnérabilités.
Vous pouvez utiliser ce scanner pour détecter des motifs dans certains types de fichiers sur votre machine locale. Pour exécuter ce scanner sur votre machine locale, suivez les étapes ci-dessous :
$ go install gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner
Remarque : Cela téléchargera le fichier dans votre $GOBIN. Si vous débutez avec Go, ce bac à sable explique l'installation de 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]
Remarque : Vous pouvez également télécharger le fichier directement depuis le projet.
$ 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
Créé et maintenu par Fern🌿