
Scannt ausgewählte Dateien nach in Regeln festgelegten Mustern. Dies wird verwendet, um Geheimnisse zu finden, die Sie versehentlich in eine Datei geschrieben haben. Dieser Scanner zeigt, wie der GitLab [vulnerability report](https://docs.gitlab.com/ee/user/application_security/vulnerability_report/) durch einen benutzerdefinierten Scanner befüllt werden kann. Eine Demo in Aktion sehen Sie, indem Sie der Dokumentation im [Secret List](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/secret-list) Projekt folgen.
Willkommen bei Fern's Pattern Scanner. Dieser Scanner durchsucht Ihre vorgeschlagenen Dateien und findet alle Muster, die in der Datei rules/rules.yaml mittels regex festgelegt sind. Anschließend wird ein Bericht mit allen Funden erstellt. Dieses Projekt dient dazu zu zeigen, wie ein benutzerdefinierter Sicherheitsscanner in GitLab integriert werden kann, um den Pipeline-Sicherheitstab, die Sicherheitslückenberichte und das Merge-Request-Widget zu füllen.
Hinweis: Für den Zugriff auf Sicherheitslückenberichte ist ein GitLab Ultimate-Abonnement erforderlich.
Sie können diesen Sicherheitsscanner aktivieren, indem Sie Folgendes zu Ihrer .gitlab-ci.yml hinzufügen:
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"
Sie können den Scanner im Projekt Secret List in Aktion sehen. Nach Abschluss des Scans wird ein Bericht namens gl-secret-detection-report.json generiert. Dieser Bericht wird validiert und in den Sicherheitslückenbericht und das Merge-Request-Widget geladen.
Wenn Sie bestimmte Pfade im Projekt, in dem der Scanner ausgeführt wird, vom Scannen ausschließen möchten, können Sie die folgende Variable mit kommagetrennten Werten setzen:
variables:
FERN_ANALYZER_EXCLUDED_PATHS: "docs, tests"
Wenn Sie Ihren eigenen Regelsatz mit Regex-Mustern in GitLab ausführen möchten, gehen Sie wie folgt vor:
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
Checken Sie Ihren Code ein und der Scanner sollte mit dem neuen Regelsatz zu laufen beginnen. Dieser Scanner scannt keine Commit-Diffs. Er sucht nach Mustern im gesamten Projekt.
Wenn die Pipeline abgeschlossen ist, können Sie auf den Sicherheits-Tab klicken, um alle erkannten Probleme anzuzeigen. Wenn Sie GitLab Ultimate haben, können diese Probleme auch im Sicherheitslückenbericht eingesehen werden.
Sie können diesen Scanner verwenden, um Muster für ausgewählte Dateitypen auf Ihrem lokalen Rechner zu erkennen. Um den Scanner auf Ihrem lokalen Rechner auszuführen, befolgen Sie die folgenden Schritte:
$ go install gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner
Hinweis: Dadurch wird die Datei in Ihr $GOBIN-Verzeichnis heruntergeladen. Wenn Sie neu bei Go sind, wird in dieser Playground die Go-Installation erklärt.
$ 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]
Hinweis: Sie können die Datei auch direkt aus dem Projekt herunterladen.
$ 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
Erstellt und gewartet von Fern🌿