
Сканирует выбранные файлы на предмет шаблонов, указанных в правилах. Используется для поиска секретов, которые вы могли случайно записать в файл. Этот сканер предназначен для демонстрации того, как [отчет об уязвимостях](https://docs.gitlab.com/ee/user/application_security/vulnerability_report/) GitLab может быть заполнен с помощью пользовательского сканера. Вы можете увидеть его в действии, следуя документации в проекте [Secret List](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/secret-list).
Добро пожаловать в сканер шаблонов Fern. Этот сканер просматривает предложенные файлы и находит любые шаблоны, указанные в файле rules/rules.yaml с помощью регулярных выражений. Затем создается отчет со всеми находками. Этот проект демонстрирует, как пользовательский сканер безопасности может быть интегрирован в GitLab и использован для заполнения вкладки безопасности конвейера, отчетов об уязвимостях и виджета запроса на слияние
Примечание: Для доступа к отчетам об уязвимостях требуется подписка GitLab Ultimate
Вы можете активировать этот сканер безопасности, добавив следующие строки в ваш файл .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"
Вы можете увидеть работу сканера на проекте Secret List. После завершения сканирования создается отчет с именем gl-secret-detection-report.json. Этот отчет проверяется и загружается в отчет об уязвимостях и виджет запроса на слияние.
Если вы хотите исключить сканирование определённых путей в проекте, на котором запускается сканер, вы можете задать следующую переменную, указав значения через запятую:
variables:
FERN_ANALYZER_EXCLUDED_PATHS: "docs, tests"
Если вы хотите запустить свой собственный набор правил регулярных выражений в GitLab, выполните следующие действия:
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
Закоммитьте код — сканер начнёт работать с новым набором правил. Этот сканер не сканирует различия коммитов; он ищет шаблоны по всему проекту.
Когда конвейер завершится, перейдите на вкладку безопасности, чтобы просмотреть все обнаруженные проблемы. Если у вас есть GitLab Ultimate, эти проблемы также можно увидеть в Отчёте об уязвимостях.
Вы можете использовать этот сканер для обнаружения шаблонов в выбранных типах файлов на вашем локальном компьютере. Для запуска сканера локально выполните следующие шаги:
$ go install gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner
Примечание: Файл будет загружен в ваш $GOBIN. Если вы новичок в Go, эта песочница расскажет об установке 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]
Примечание: Вы также можете скачать файл напрямую из проекта.
$ 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
Создано и поддерживается Fern🌿