
CIS 벤치마크를 기준으로 소프트웨어 공급망 보안 규정 준수를 감사하며, SCM 설정, 브랜치 보호, 종속성, CI/CD 파이프라인의 위험을 스캔합니다.
Chain-bench는 새로운 CIS 소프트웨어 공급망 벤치마크를 기반으로 소프트웨어 공급망 스택의 보안 규정 준수를 감사하는 오픈소스 도구입니다. 감사는 전체 SDLC 프로세스를 대상으로 하며, 코드 작성 시점부터 배포 시점까지의 위험을 식별할 수 있습니다. 해커와의 경쟁에서 승리하고 중요한 데이터와 고객 신뢰를 보호하려면 코드가 조직의 정책을 준수하는지 확인해야 합니다.
자세한 내용은 Chain-bench 문서에서 확인하세요.

Chain-bench는 새로운 CIS 소프트웨어 공급망 벤치마크를 기반으로 소프트웨어 공급망 스택의 보안 규정 준수를 감사하는 오픈소스 도구입니다. 감사는 전체 SDLC 프로세스를 대상으로 하며, 코드 작성 시점부터 배포 시점까지의 위험을 식별할 수 있습니다.
chain-bench를 실행하는 기본 방법은 독립형 CLI로 사용하는 것입니다. SCM에 접근하려면 계정의 액세스 토큰과 저장소 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 🚩 Fetch Starting
2022-06-13 15:22:19 INF 🏢 Fetching Organization Settings Finished
2022-06-13 15:22:29 INF 🛢️ Fetching Repository Settings Finished
2022-06-13 15:22:29 INF 🌱 Fetching Branch Protection Settings Finished
2022-06-13 15:22:29 INF 👫 Fetching Members Finished
2022-06-13 15:22:31 INF 🔧 Fetching Pipelines Finished
2022-06-13 15:22:31 INF 🏁 Fetch succeeded
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
CI 정의에 새 단계를 추가하여 chain-bench 결과를 Gitlab 취약점 보고서에 통합할 수 있습니다:
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
현재 PAT 인증을 통해 Github 및 Gitlab SCM을 지원합니다.
Chain-bench는 CIS 소프트웨어 공급망 벤치마크를 최대한 정확하게 구현합니다. 현재 구현된 검사는 AVD - Software Supply Chain CIS - 1.0에서 확인할 수 있으며, chain-bench의 metadata.json 파일을 기반으로 매일 밤 업데이트됩니다. chain-bench가 벤치마크에 설명된 대로 테스트를 올바르게 구현하지 않은 경우 여기에 이슈를 제출해 주세요. 벤치마크 자체의 문제(예: 부적절하다고 생각되는 테스트)를 보고하려면 CIS 커뮤니티에 가입해 주세요.
기여하기 전에 기여 가이드를 읽어주세요. PR 및 이슈 보고를 환영합니다.
앞으로 chain-bench에 더 많은 검사와 더 많은 플랫폼 지원을 추가하여 벤치마크 적용 범위를 늘리기 위한 업데이트를 출시할 계획입니다. Chain-bench는 Trivy 제품군의 일부인 Aqua Security 오픈소스 프로젝트입니다.