
Аудит соответствия безопасности цепочки поставок программного обеспечения эталону CIS, сканирование настроек SCM, защиты веток, зависимостей и конвейеров CI/CD на предмет рисков.
Chain-bench — это инструмент с открытым исходным кодом для аудита вашего стека цепочки поставок программного обеспечения на соответствие требованиям безопасности на основе нового эталона безопасности цепочек поставок ПО CIS. Аудит охватывает весь процесс SDLC, выявляя риски на этапах от написания кода до развертывания. Чтобы опережать хакеров и защищать конфиденциальные данные и доверие клиентов, необходимо гарантировать, что ваш код соответствует политикам организации.
Подробнее в документации Chain-bench

Chain-bench — это инструмент с открытым исходным кодом для аудита вашего стека цепочки поставок программного обеспечения на соответствие требованиям безопасности на основе нового эталона безопасности цепочек поставок ПО CIS. Аудит охватывает весь процесс SDLC, выявляя риски на этапах от написания кода до развертывания.
Основной способ запуска chain-bench — как отдельный CLI. Для доступа к вашей СКВ требуется токен доступа для вашей учётной записи и URL репозитория.
Установите Chain-bench любым удобным способом. См. раздел [установка] в документации для подробностей. Например:
brew install chain-benchnix-env --install -A nixpkgs.chain-benchdocker run aquasec/chain-benchchain-bench scan --repository-url <REPOSITORY_URL> --access-token <TOKEN> -o <OUTPUT_PATH>
chain-bench scan --repository-url <REPOSITORY_URL> --scm-platform <SCM_PLATFORM> --access-token <TOKEN> -o <OUTPUT_PATH>
Поддерживаемые значения для scm-platform: "github" и "gitlab" (бета)
docker run aquasec/chain-bench scan --repository-url <REPOSITORY_URL> --access-token <TOKEN>
Смотрите репозиторий по адресу https://github.com/aquasecurity/chain-bench-action
2022-06-13 15:22:18 INF 🚩 Начало получения данных
2022-06-13 15:22:19 INF 🏢 Получение настроек организации завершено
2022-06-13 15:22:29 INF 🛢️ Получение настроек репозитория завершено
2022-06-13 15:22:29 INF 🌱 Получение настроек защиты веток завершено
2022-06-13 15:22:29 INF 👫 Получение участников завершено
2022-06-13 15:22:31 INF 🔧 Получение пайплайнов завершено
2022-06-13 15:22:31 INF 🏁 Получение данных выполнено успешно
ID Name Result Reason
-------- ----------------------------------------------------------------------------------------------- -------- ---------------------------------------
1.1.3 Ensure any change to code receives approval of two strongly authenticated users Passed
1.1.4 Ensure previous approvals are dismissed when updates are introduced to a code change proposal Failed
1.1.5 Ensure that there are restrictions on who can dismiss code change reviews Failed
1.1.6 Ensure code owners are set for extra sensitive code or configuration Failed
1.1.8 Ensure inactive branches are reviewed and removed periodically Failed 20 inactive branches
1.1.9 Ensure all checks have passed before the merge of new code Passed
1.1.10 Ensure open git branches are up to date before they can be merged into codebase Passed
1.1.11 Ensure all open comments are resolved before allowing to merge code changes Passed
1.1.12 Ensure verifying signed commits of new changes before merging Failed
1.1.13 Ensure linear history is required Passed
1.1.14 Ensure branch protection rules are enforced on administrators Failed
1.1.15 Ensure pushing of new code is restricted to specific individuals or teams Passed
1.1.16 Ensure force pushes code to branches is denied Failed
1.1.17 Ensure branch deletions are denied Failed
1.2.1 Ensure all public repositories contain a SECURITY.md file Failed
1.2.2 Ensure repository creation is limited to specific members Failed
1.2.3 Ensure repository deletion is limited to specific members Passed
1.2.4 Ensure issue deletion is limited to specific members Passed
1.3.1 Ensure inactive users are reviewed and removed periodically Failed 22 inactive users
1.3.3 Ensure minimum admins are set for the organization Passed
1.3.5 Ensure the organization is requiring members to use MFA Passed
1.3.7 Ensure 2 admins are set for each repository Failed
1.3.8 Ensure strict base permissions are set for repositories Passed
1.3.9 Ensure an organization's identity is confirmed with a Verified badge Failed
2.3.1 Ensure all build steps are defined as code Failed No build job was found in pipelines
2.3.5 Ensure access to the build process's triggering is minimized Passed
2.3.7 Ensure pipelines are automatically scanned for vulnerabilities Passed
2.3.8 Ensure scanners are in place to identify and prevent sensitive data in pipeline files Failed Repository is not scanned for secrets
2.4.2 Ensure all external dependencies used in the build process are locked Failed 16 task(s) are not pinned
2.4.6 Ensure pipeline steps produce an SBOM Passed
3.1.7 Ensure dependencies are pinned to a specific, verified version Failed 16 dependencies are not pinned
3.2.2 Ensure packages are automatically scanned for known vulnerabilities Passed
3.2.3 Ensure packages are automatically scanned for license implications Passed
4.2.3 Ensure user's access to the package registry utilizes MFA Passed
4.2.5 Ensure anonymous access to artifacts is revoked Passed
4.3.4 Ensure webhooks of the package registry are secured Passed
-------- ----------------------------------------------------------------------------------------------- -------- ---------------------------------------
Total Passed Rules: 19 out of 36
2022-06-13 15:22:31 INF Scan completed: 13.108s
Вы можете интегрировать результаты chain-bench в отчёт об уязвимостях GitLab, добавив новый шаг в вашем CI-определении:
chain-bench-scanning:
stage: test
image:
name: docker.io/aquasec/chain-bench
entrypoint: [""]
script:
- chain-bench scan --repository-url $CI_PROJECT_URL --access-token $CHAIN_BENCH_TOKEN --scm-platform gitlab -o results.json --template @/templates/gitlab_security_scanner.tpl
artifacts:
reports:
container_scanning: results.json
Maintainer, обладающий разрешениями read_api и read_repository, и использовать его как переменную окружения (например, $CHAIN_BENCH_TOKEN)Необходимо предоставить токен доступа с разрешениями на следующие области: repo (все), read:repo_hook, admin:org_hook, read:org
В настоящее время мы поддерживаем СКВ Github и Gitlab с аутентификацией по PAT.
Chain-bench максимально точно реализует эталон безопасности цепочек поставок ПО CIS. Актуальные реализованные проверки можно найти на странице AVD - Software Supply Chain CIS - 1.0, которая обновляется каждую ночь на основе metadata.json файлов chain-bench. Пожалуйста, создавайте issue здесь, если chain-bench неправильно реализует тест, описанный в эталоне. Для сообщения о проблемах в самом эталоне (например, если вы считаете некоторые тесты некорректными), присоединяйтесь к сообществу CIS.
Пожалуйста, прочитайте Contributing перед тем, как вносить вклад. Мы приветствуем PR и сообщения о проблемах.
В будущем мы планируем выпускать обновления chain-bench для увеличения покрытия эталона новыми проверками и поддержки большего количества платформ. Chain-bench — это проект с открытым исходным кодом Aqua Security, входящий в семейство Trivy.