@marinjursic/prc-darwin-arm64 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/bin/LICENSE +21 -0
- package/bin/README.md +335 -0
- package/bin/THIRD_PARTY_NOTICES.md +74 -0
- package/bin/adapters/checkov-v3.3.8.yaml +50 -0
- package/bin/adapters/gitleaks-v8.30.0.yaml +63 -0
- package/bin/adapters/grype-v0.116.1.yaml +58 -0
- package/bin/adapters/syft-v1.51.0.yaml +54 -0
- package/bin/catalog/assertions/core-repository.yaml +625 -0
- package/bin/catalog/assertions/iac.yaml +24 -0
- package/bin/catalog/assertions/supply-chain.yaml +45 -0
- package/bin/catalog/control-contracts.json +1 -0
- package/bin/catalog/control-id-registry.json +110470 -0
- package/bin/catalog/objectives/core-repository.yaml +243 -0
- package/bin/catalog/objectives/iac.yaml +13 -0
- package/bin/catalog/objectives/supply-chain.yaml +13 -0
- package/bin/catalog/profiles/api.yaml +12 -0
- package/bin/catalog/profiles/core-repository.yaml +49 -0
- package/bin/catalog/profiles/iac.yaml +18 -0
- package/bin/catalog/profiles/kubernetes.yaml +15 -0
- package/bin/catalog/profiles/quick.yaml +27 -0
- package/bin/catalog/profiles/supply-chain.yaml +20 -0
- package/bin/docs/architecture/adapters.md +380 -0
- package/bin/docs/architecture/agent-providers.md +188 -0
- package/bin/docs/architecture/applicability.md +80 -0
- package/bin/docs/architecture/catalog-integrity.md +85 -0
- package/bin/docs/architecture/evidence-and-results.md +154 -0
- package/bin/docs/architecture/execution-plans.md +61 -0
- package/bin/docs/architecture/product-contract.md +76 -0
- package/bin/docs/architecture/publisher-trust.md +68 -0
- package/bin/docs/architecture/remediation-contract.md +113 -0
- package/bin/docs/architecture/trust-model.md +95 -0
- package/bin/docs/assets/hero.svg +37 -0
- package/bin/docs/assets/logo.svg +13 -0
- package/bin/docs/assets/production-readiness-scan-demo-poster.png +0 -0
- package/bin/docs/assets/production-readiness-scan-demo.gif +0 -0
- package/bin/docs/assets/production-readiness-scan-demo.mp4 +0 -0
- package/bin/docs/assets/social-card.png +0 -0
- package/bin/docs/assets/social-card.svg +40 -0
- package/bin/docs/checklists/00-readiness-principle.md +17 -0
- package/bin/docs/checklists/01-release-foundations.md +91 -0
- package/bin/docs/checklists/02-product-risk-architecture.md +136 -0
- package/bin/docs/checklists/03-source-build-supply-chain.md +97 -0
- package/bin/docs/checklists/04-environments-quality-experience.md +226 -0
- package/bin/docs/checklists/05-application-security.md +320 -0
- package/bin/docs/checklists/06-data-privacy-performance.md +166 -0
- package/bin/docs/checklists/07-reliability-operations.md +355 -0
- package/bin/docs/checklists/08-maintenance-vendors-compliance.md +112 -0
- package/bin/docs/checklists/09-conditional-modules.md +229 -0
- package/bin/docs/checklists/10-evidence-and-decision.md +111 -0
- package/bin/docs/engineering/00-overview.md +51 -0
- package/bin/docs/engineering/01-governance-and-foundations.md +919 -0
- package/bin/docs/engineering/02-product-and-requirements.md +186 -0
- package/bin/docs/engineering/03-user-experience-web-and-content.md +1352 -0
- package/bin/docs/engineering/04-architecture-and-design.md +387 -0
- package/bin/docs/engineering/05-code-quality-and-implementation.md +1103 -0
- package/bin/docs/engineering/06-application-services-and-apis.md +476 -0
- package/bin/docs/engineering/07-data-and-information-lifecycle.md +1009 -0
- package/bin/docs/engineering/08-security-and-cryptography.md +1215 -0
- package/bin/docs/engineering/09-privacy-and-data-protection.md +205 -0
- package/bin/docs/engineering/10-verification-and-testing.md +841 -0
- package/bin/docs/engineering/11-developer-experience-platform-and-delivery.md +1013 -0
- package/bin/docs/engineering/12-operations-sre-and-support.md +795 -0
- package/bin/docs/engineering/13-documentation-and-knowledge.md +349 -0
- package/bin/docs/engineering/14-trust-safety-and-ecosystems.md +330 -0
- package/bin/docs/engineering/15-ai-ml-and-ai-assisted-development.md +785 -0
- package/bin/docs/engineering/16-specialized-domains-and-release-assurance.md +775 -0
- package/bin/docs/engineering/source-manifest.md +479 -0
- package/bin/docs/guides/ai-assisted-review.md +61 -0
- package/bin/docs/guides/getting-started.md +78 -0
- package/bin/docs/index.md +66 -0
- package/bin/docs/prompts/evidence-challenge.md +26 -0
- package/bin/docs/prompts/full-readiness-review.md +34 -0
- package/bin/docs/prompts/release-diff-review.md +31 -0
- package/bin/docs/records/evidence-record.md +42 -0
- package/bin/docs/records/go-no-go-decision.md +63 -0
- package/bin/docs/records/release-assessment.md +124 -0
- package/bin/docs/records/risk-exception.md +64 -0
- package/bin/docs/references.md +52 -0
- package/bin/docs/scanner/ai-control-review.md +208 -0
- package/bin/docs/scanner/benchmarks.md +122 -0
- package/bin/docs/scanner/cli-contract.md +130 -0
- package/bin/docs/scanner/configuration.md +101 -0
- package/bin/docs/scanner/control-contracts.md +47 -0
- package/bin/docs/scanner/core-repository.md +62 -0
- package/bin/docs/scanner/diff-and-invalidation.md +79 -0
- package/bin/docs/scanner/doctor.md +71 -0
- package/bin/docs/scanner/getting-started.md +355 -0
- package/bin/docs/scanner/go-http-timeouts.md +96 -0
- package/bin/docs/scanner/infrastructure-policy.md +64 -0
- package/bin/docs/scanner/kubernetes-workloads.md +63 -0
- package/bin/docs/scanner/mcp-agent-integration.md +138 -0
- package/bin/docs/scanner/openapi-contracts.md +75 -0
- package/bin/docs/scanner/private-key-armor.md +44 -0
- package/bin/docs/scanner/releases.md +160 -0
- package/bin/docs/scanner/remediation.md +273 -0
- package/bin/docs/scanner/risk-exceptions.md +52 -0
- package/bin/docs/scanner/security-walkthrough.md +236 -0
- package/bin/docs/scanner/state-and-history.md +113 -0
- package/bin/docs/scanner/supply-chain.md +132 -0
- package/bin/docs/scanner/test-discovery.md +60 -0
- package/bin/docs/stylesheets/extra.css +183 -0
- package/bin/fixtures/benchmarks/core-native/suite-comprehensive.yaml +302 -0
- package/bin/fixtures/benchmarks/core-native/suite.yaml +59 -0
- package/bin/fixtures/benchmarks/core-native/targets/baseline/README.md +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/baseline/app.go +1 -0
- package/bin/fixtures/benchmarks/core-native/targets/conflict-template/app.js +5 -0
- package/bin/fixtures/benchmarks/core-native/targets/container-risky-template/Dockerfile +2 -0
- package/bin/fixtures/benchmarks/core-native/targets/container-valid/Dockerfile +2 -0
- package/bin/fixtures/benchmarks/core-native/targets/dependency-lock-missing/package.json +5 -0
- package/bin/fixtures/benchmarks/core-native/targets/dependency-lock-present/package-lock.json +6 -0
- package/bin/fixtures/benchmarks/core-native/targets/dependency-lock-present/package.json +5 -0
- package/bin/fixtures/benchmarks/core-native/targets/empty-manifest-template/package.json +1 -0
- package/bin/fixtures/benchmarks/core-native/targets/final-newline-template/app.py +1 -0
- package/bin/fixtures/benchmarks/core-native/targets/foundation-present/.github/CODEOWNERS +1 -0
- package/bin/fixtures/benchmarks/core-native/targets/foundation-present/.github/dependabot.yml +6 -0
- package/bin/fixtures/benchmarks/core-native/targets/foundation-present/.github/workflows/validate.yml +15 -0
- package/bin/fixtures/benchmarks/core-native/targets/foundation-present/CODE_OF_CONDUCT.md +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/foundation-present/CONTRIBUTING.md +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/foundation-present/LICENSE +1 -0
- package/bin/fixtures/benchmarks/core-native/targets/foundation-present/README.md +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/foundation-present/SECURITY.md +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/foundation-present/package-lock.json +6 -0
- package/bin/fixtures/benchmarks/core-native/targets/foundation-present/package.json +7 -0
- package/bin/fixtures/benchmarks/core-native/targets/foundation-present/tests/example.test.js +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/go-http-server-timeout-risky-template/go.mod +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/go-http-server-timeout-risky-template/server.go +18 -0
- package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-malformed-template/client.go +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-malformed-template/go.mod +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-risky-template/client.go +7 -0
- package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-risky-template/go.mod +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-safe/client.go +22 -0
- package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-safe/go.mod +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/go-http-timeout-safe/hazards_test.go +8 -0
- package/bin/fixtures/benchmarks/core-native/targets/kubernetes-risky-template/deployment.yaml +27 -0
- package/bin/fixtures/benchmarks/core-native/targets/kubernetes-valid/deployment.yaml +26 -0
- package/bin/fixtures/benchmarks/core-native/targets/openapi-operation-ids-risky-template/openapi.yaml +17 -0
- package/bin/fixtures/benchmarks/core-native/targets/openapi-operation-responses-risky-template/openapi.yaml +11 -0
- package/bin/fixtures/benchmarks/core-native/targets/openapi-root-malformed-template/openapi.yaml +5 -0
- package/bin/fixtures/benchmarks/core-native/targets/openapi-root-risky-template/openapi.yaml +5 -0
- package/bin/fixtures/benchmarks/core-native/targets/openapi-root-valid/openapi.yaml +17 -0
- package/bin/fixtures/benchmarks/core-native/targets/package-test-command/app.js +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/package-test-command/package.json +7 -0
- package/bin/fixtures/benchmarks/core-native/targets/package-test-placeholder/app.js +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/package-test-placeholder/package.json +7 -0
- package/bin/fixtures/benchmarks/core-native/targets/private-key-template/deploy.pem +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/readme-missing/fixture.txt +1 -0
- package/bin/fixtures/benchmarks/core-native/targets/runtime-missing/package-lock.json +6 -0
- package/bin/fixtures/benchmarks/core-native/targets/runtime-missing/package.json +4 -0
- package/bin/fixtures/benchmarks/core-native/targets/terraform-locked/.terraform.lock.hcl +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/terraform-locked/main.tf +7 -0
- package/bin/fixtures/benchmarks/core-native/targets/terraform-unlocked-template/.terraform.lock.hcl +3 -0
- package/bin/fixtures/benchmarks/core-native/targets/terraform-unlocked-template/main.tf +7 -0
- package/bin/fixtures/benchmarks/core-native/targets/test-declaration-valid/app.py +2 -0
- package/bin/fixtures/benchmarks/core-native/targets/test-declaration-valid/tests/test_app.py +5 -0
- package/bin/fixtures/benchmarks/core-native/targets/test-path-without-declaration/app.py +2 -0
- package/bin/fixtures/benchmarks/core-native/targets/test-path-without-declaration/tests/test_app.py +1 -0
- package/bin/fixtures/benchmarks/core-native/targets/workflow-malformed/.github/workflows/validate.yml +1 -0
- package/bin/fixtures/benchmarks/core-native/targets/workflow-no-jobs/.github/workflows/empty.yml +9 -0
- package/bin/fixtures/benchmarks/core-native/targets/workflow-risky/.github/workflows/risky.yml +10 -0
- package/bin/fixtures/benchmarks/core-native/targets/workflow-valid/.github/workflows/validate.yml +14 -0
- package/bin/packs/core-foundation.yaml +25 -0
- package/bin/packs/core-native.yaml +59 -0
- package/bin/prc +0 -0
- package/bin/schemas/adapter-execution-v0.1.schema.json +101 -0
- package/bin/schemas/adapter-execution-v0.2.schema.json +128 -0
- package/bin/schemas/adapter-execution.schema.json +145 -0
- package/bin/schemas/adapter-fixture-report.schema.json +59 -0
- package/bin/schemas/adapter-fixture-suite.schema.json +104 -0
- package/bin/schemas/adapter-manifest-v0.1.schema.json +55 -0
- package/bin/schemas/adapter-manifest-v0.2.schema.json +122 -0
- package/bin/schemas/adapter-manifest-v0.3.schema.json +172 -0
- package/bin/schemas/adapter-manifest.schema.json +299 -0
- package/bin/schemas/adapter-message.schema.json +136 -0
- package/bin/schemas/adapter-registry-report.schema.json +13 -0
- package/bin/schemas/adapter-registry.schema.json +47 -0
- package/bin/schemas/agent-execution-v0.1.schema.json +26 -0
- package/bin/schemas/agent-execution.schema.json +26 -0
- package/bin/schemas/agent-failure-v0.1.schema.json +102 -0
- package/bin/schemas/agent-failure.schema.json +102 -0
- package/bin/schemas/agent-output-v0.1.schema.json +36 -0
- package/bin/schemas/agent-output.schema.json +36 -0
- package/bin/schemas/agent-task-v0.1.schema.json +44 -0
- package/bin/schemas/agent-task.schema.json +46 -0
- package/bin/schemas/assertion-catalog.schema.json +69 -0
- package/bin/schemas/benchmark-report.schema.json +94 -0
- package/bin/schemas/benchmark-suite.schema.json +116 -0
- package/bin/schemas/catalog-bundle.schema.json +27 -0
- package/bin/schemas/catalog-manifest.schema.json +23 -0
- package/bin/schemas/checkov-iac-policy-report.schema.json +82 -0
- package/bin/schemas/control-contracts.schema.json +44 -0
- package/bin/schemas/control-review-output.schema.json +51 -0
- package/bin/schemas/doctor.schema.json +53 -0
- package/bin/schemas/evidence-v0.1.schema.json +21 -0
- package/bin/schemas/evidence.schema.json +21 -0
- package/bin/schemas/finding-v0.1.schema.json +70 -0
- package/bin/schemas/finding.schema.json +70 -0
- package/bin/schemas/fix-contract-v0.1.schema.json +35 -0
- package/bin/schemas/fix-contract-v0.2.schema.json +46 -0
- package/bin/schemas/fix-contract-v0.3.schema.json +49 -0
- package/bin/schemas/fix-contract.schema.json +49 -0
- package/bin/schemas/grype-vulnerability-report.schema.json +88 -0
- package/bin/schemas/history.schema.json +37 -0
- package/bin/schemas/invalidation.schema.json +86 -0
- package/bin/schemas/inventory-v0.1.schema.json +42 -0
- package/bin/schemas/inventory-v0.2.schema.json +95 -0
- package/bin/schemas/inventory-v0.3.schema.json +139 -0
- package/bin/schemas/inventory.schema.json +139 -0
- package/bin/schemas/objective-catalog.schema.json +62 -0
- package/bin/schemas/pack-report.schema.json +16 -0
- package/bin/schemas/pack.schema.json +53 -0
- package/bin/schemas/plan-v0.1.schema.json +31 -0
- package/bin/schemas/plan-v0.2.schema.json +32 -0
- package/bin/schemas/plan-v0.3.schema.json +44 -0
- package/bin/schemas/plan-v0.4.schema.json +48 -0
- package/bin/schemas/plan-v0.5.schema.json +49 -0
- package/bin/schemas/plan-v0.6.schema.json +137 -0
- package/bin/schemas/plan.schema.json +137 -0
- package/bin/schemas/profile.schema.json +42 -0
- package/bin/schemas/project-config.schema.json +128 -0
- package/bin/schemas/release-manifest-v0.1.schema.json +86 -0
- package/bin/schemas/release-manifest-v0.2.schema.json +146 -0
- package/bin/schemas/release-manifest-v0.3.schema.json +146 -0
- package/bin/schemas/release-manifest.schema.json +6 -0
- package/bin/schemas/remediation-candidate-v0.1.schema.json +51 -0
- package/bin/schemas/remediation-candidate-v0.2.schema.json +51 -0
- package/bin/schemas/remediation-candidate-v0.3.schema.json +51 -0
- package/bin/schemas/remediation-candidate-v0.4.schema.json +69 -0
- package/bin/schemas/remediation-candidate.schema.json +69 -0
- package/bin/schemas/remediation-run-v0.1.schema.json +69 -0
- package/bin/schemas/remediation-run-v0.2.schema.json +78 -0
- package/bin/schemas/remediation-run-v0.3.schema.json +86 -0
- package/bin/schemas/remediation-run-v0.4.schema.json +86 -0
- package/bin/schemas/remediation-run-v0.5.schema.json +131 -0
- package/bin/schemas/remediation-run-v0.6.schema.json +143 -0
- package/bin/schemas/remediation-run-v0.7.schema.json +160 -0
- package/bin/schemas/remediation-run-v0.8.schema.json +161 -0
- package/bin/schemas/remediation-run.schema.json +161 -0
- package/bin/schemas/risk-exception-verification.schema.json +17 -0
- package/bin/schemas/risk-exception.schema.json +137 -0
- package/bin/schemas/run-result-v0.1.schema.json +54 -0
- package/bin/schemas/run-result-v0.10.schema.json +64 -0
- package/bin/schemas/run-result-v0.11.schema.json +146 -0
- package/bin/schemas/run-result-v0.2.schema.json +60 -0
- package/bin/schemas/run-result-v0.3.schema.json +52 -0
- package/bin/schemas/run-result-v0.4.schema.json +52 -0
- package/bin/schemas/run-result-v0.5.schema.json +60 -0
- package/bin/schemas/run-result-v0.6.schema.json +61 -0
- package/bin/schemas/run-result-v0.7.schema.json +61 -0
- package/bin/schemas/run-result-v0.8.schema.json +61 -0
- package/bin/schemas/run-result-v0.9.schema.json +77 -0
- package/bin/schemas/run-result.schema.json +165 -0
- package/bin/schemas/signature-verification.schema.json +22 -0
- package/bin/schemas/signature.schema.json +18 -0
- package/bin/schemas/state-check-v0.1.schema.json +27 -0
- package/bin/schemas/state-check.schema.json +28 -0
- package/bin/schemas/trust-store.schema.json +50 -0
- package/bin/schemas/verification-execution-v0.1.schema.json +105 -0
- package/bin/schemas/verification-execution.schema.json +105 -0
- package/bin/schemas/version-v0.1.schema.json +27 -0
- package/bin/schemas/version.schema.json +27 -0
- package/manifest.json +9 -0
- package/package.json +28 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
schema_version: prc.adapter-manifest/v0.4
|
|
2
|
+
id: prc.adapter.syft@1.51
|
|
3
|
+
title: Syft repository CycloneDX SBOM
|
|
4
|
+
description: Runs the reviewed Syft 1.51.0 image against the exact sealed inventory snapshot and preserves a deterministic normalized CycloneDX 1.7 SBOM.
|
|
5
|
+
publisher:
|
|
6
|
+
id: prc-project
|
|
7
|
+
name: Production Readiness Checklist
|
|
8
|
+
owner: scanner-maintainers
|
|
9
|
+
maintenance: active
|
|
10
|
+
protocol: prc-adapter-syft-cyclonedx-json-v1
|
|
11
|
+
output_schema: cyclonedx.bom/v1.7+syft-1.51.0
|
|
12
|
+
observation_kinds: [sbom-generation]
|
|
13
|
+
compatibility:
|
|
14
|
+
engine_apis: [prc.engine/v0.1]
|
|
15
|
+
tool:
|
|
16
|
+
name: syft
|
|
17
|
+
version: 1.51.0
|
|
18
|
+
upstream: https://github.com/anchore/syft
|
|
19
|
+
formats:
|
|
20
|
+
- name: cyclonedx-json
|
|
21
|
+
versions: ["1.7"]
|
|
22
|
+
limitations:
|
|
23
|
+
- Catalogs only regular files in the current sealed repository inventory; it does not describe a built release artifact or container image.
|
|
24
|
+
- Package and file discovery depends on Syft cataloger support and can contain false positives, false negatives, or incomplete metadata.
|
|
25
|
+
- Uses a scanner-owned empty Syft configuration so target configuration cannot disable or redirect cataloging.
|
|
26
|
+
- The normalized artifact removes Syft's nondeterministic generation timestamp, document serial number, and source bom-ref while retaining package, file, and dependency content.
|
|
27
|
+
- SBOM generation does not determine whether components are vulnerable, acceptably licensed, supported, or actually reachable at runtime.
|
|
28
|
+
runner: oci
|
|
29
|
+
image: ghcr.io/anchore/syft@sha256:d2dc3ec86cb2b4e7ddb226ba0305c4523b7c0694c45d9f576b42b4c2f5ce7aa8
|
|
30
|
+
command:
|
|
31
|
+
- scan
|
|
32
|
+
- --quiet
|
|
33
|
+
- --config=/workspace/.prc/syft-config.yaml
|
|
34
|
+
- --parallelism=1
|
|
35
|
+
- --output=cyclonedx-json
|
|
36
|
+
- dir:/workspace
|
|
37
|
+
capabilities:
|
|
38
|
+
read_workspace: true
|
|
39
|
+
write_scratch: false
|
|
40
|
+
network: deny
|
|
41
|
+
network_hosts: []
|
|
42
|
+
secret_handles: []
|
|
43
|
+
child_processes: true
|
|
44
|
+
resources:
|
|
45
|
+
timeout_seconds: 180
|
|
46
|
+
memory_mb: 512
|
|
47
|
+
cpus: 1
|
|
48
|
+
pids: 64
|
|
49
|
+
tmpfs_mb: 1
|
|
50
|
+
max_line_bytes: 262144
|
|
51
|
+
max_messages: 10000
|
|
52
|
+
max_stdin_bytes: 1024
|
|
53
|
+
max_stdout_bytes: 67108864
|
|
54
|
+
max_stderr_bytes: 65536
|
|
@@ -0,0 +1,625 @@
|
|
|
1
|
+
schema_version: prc.assertions/v0.1
|
|
2
|
+
catalog_version: 1.0.0
|
|
3
|
+
assertions:
|
|
4
|
+
- id: PRC-A-CORE-001
|
|
5
|
+
revision: 2
|
|
6
|
+
control_ids: [USEQ-FDCA6C71]
|
|
7
|
+
title: README is present
|
|
8
|
+
statement: A nonempty README file exists at the repository root.
|
|
9
|
+
applicability: "true"
|
|
10
|
+
evidence_required:
|
|
11
|
+
- kind: repository-file
|
|
12
|
+
minimum_authority: repository
|
|
13
|
+
description: A nonempty root README file from the scanned commit.
|
|
14
|
+
implementation_id: prc.native.file-present@0.1
|
|
15
|
+
parameters:
|
|
16
|
+
paths: [README.md, README.rst, README.txt]
|
|
17
|
+
minimum_bytes: 1
|
|
18
|
+
severity: medium
|
|
19
|
+
gate: required
|
|
20
|
+
remediation_class: R2
|
|
21
|
+
- id: PRC-A-CORE-002
|
|
22
|
+
revision: 1
|
|
23
|
+
control_ids: [USEQ-6497B434]
|
|
24
|
+
title: License is present
|
|
25
|
+
statement: A nonempty license file exists at the repository root.
|
|
26
|
+
applicability: "true"
|
|
27
|
+
evidence_required:
|
|
28
|
+
- kind: repository-file
|
|
29
|
+
minimum_authority: repository
|
|
30
|
+
description: A nonempty root license file from the scanned commit.
|
|
31
|
+
implementation_id: prc.native.file-present@0.1
|
|
32
|
+
parameters:
|
|
33
|
+
paths: [LICENSE, LICENSE.md, LICENSE.txt, COPYING]
|
|
34
|
+
minimum_bytes: 1
|
|
35
|
+
severity: medium
|
|
36
|
+
gate: required
|
|
37
|
+
remediation_class: R0
|
|
38
|
+
- id: PRC-A-CORE-003
|
|
39
|
+
revision: 1
|
|
40
|
+
control_ids: [USEQ-89F5E97A]
|
|
41
|
+
title: Contribution guidance is present
|
|
42
|
+
statement: A nonempty contribution guide exists at the repository root.
|
|
43
|
+
applicability: "true"
|
|
44
|
+
evidence_required:
|
|
45
|
+
- kind: repository-file
|
|
46
|
+
minimum_authority: repository
|
|
47
|
+
description: A nonempty root contribution guide from the scanned commit.
|
|
48
|
+
implementation_id: prc.native.file-present@0.1
|
|
49
|
+
parameters:
|
|
50
|
+
paths: [CONTRIBUTING.md, CONTRIBUTING.rst]
|
|
51
|
+
minimum_bytes: 1
|
|
52
|
+
severity: low
|
|
53
|
+
gate: advisory
|
|
54
|
+
remediation_class: R0
|
|
55
|
+
- id: PRC-A-CORE-004
|
|
56
|
+
revision: 1
|
|
57
|
+
control_ids: [USEQ-AC6AC548]
|
|
58
|
+
title: Security policy is present
|
|
59
|
+
statement: A nonempty security policy exists at the repository root.
|
|
60
|
+
applicability: "true"
|
|
61
|
+
evidence_required:
|
|
62
|
+
- kind: repository-file
|
|
63
|
+
minimum_authority: repository
|
|
64
|
+
description: A nonempty root security policy from the scanned commit.
|
|
65
|
+
implementation_id: prc.native.file-present@0.1
|
|
66
|
+
parameters:
|
|
67
|
+
paths: [SECURITY.md, docs/SECURITY.md]
|
|
68
|
+
minimum_bytes: 1
|
|
69
|
+
severity: medium
|
|
70
|
+
gate: required
|
|
71
|
+
remediation_class: R0
|
|
72
|
+
- id: PRC-A-CORE-005
|
|
73
|
+
revision: 1
|
|
74
|
+
control_ids: [USEQ-D73106BF]
|
|
75
|
+
title: Code of conduct is present
|
|
76
|
+
statement: A nonempty code-of-conduct document exists at the repository root.
|
|
77
|
+
applicability: "true"
|
|
78
|
+
evidence_required:
|
|
79
|
+
- kind: repository-file
|
|
80
|
+
minimum_authority: repository
|
|
81
|
+
description: A nonempty root code-of-conduct document from the scanned commit.
|
|
82
|
+
implementation_id: prc.native.file-present@0.1
|
|
83
|
+
parameters:
|
|
84
|
+
paths: [CODE_OF_CONDUCT.md, CODE_OF_CONDUCT.rst]
|
|
85
|
+
minimum_bytes: 1
|
|
86
|
+
severity: low
|
|
87
|
+
gate: advisory
|
|
88
|
+
remediation_class: R0
|
|
89
|
+
- id: PRC-A-CORE-006
|
|
90
|
+
revision: 1
|
|
91
|
+
control_ids: [USEQ-CA602113]
|
|
92
|
+
title: Code ownership is declared
|
|
93
|
+
statement: A nonempty CODEOWNERS file exists in a supported repository location.
|
|
94
|
+
applicability: "true"
|
|
95
|
+
evidence_required:
|
|
96
|
+
- kind: repository-file
|
|
97
|
+
minimum_authority: repository
|
|
98
|
+
description: A nonempty CODEOWNERS file from the scanned commit.
|
|
99
|
+
implementation_id: prc.native.file-present@0.1
|
|
100
|
+
parameters:
|
|
101
|
+
paths: [.github/CODEOWNERS, CODEOWNERS, docs/CODEOWNERS]
|
|
102
|
+
minimum_bytes: 1
|
|
103
|
+
severity: medium
|
|
104
|
+
gate: required
|
|
105
|
+
remediation_class: R0
|
|
106
|
+
- id: PRC-A-CORE-007
|
|
107
|
+
revision: 1
|
|
108
|
+
control_ids: [USEQ-D1076D92]
|
|
109
|
+
title: Dependency resolution is reproducible
|
|
110
|
+
statement: Each detected package ecosystem has a supported lock or checksum file.
|
|
111
|
+
applicability: inventory.package_ecosystems.size() > 0
|
|
112
|
+
evidence_required:
|
|
113
|
+
- kind: repository-file
|
|
114
|
+
minimum_authority: repository
|
|
115
|
+
description: Lock or checksum files corresponding to detected dependency manifests.
|
|
116
|
+
implementation_id: prc.native.dependency-lock@0.1
|
|
117
|
+
parameters: {}
|
|
118
|
+
severity: high
|
|
119
|
+
gate: required
|
|
120
|
+
remediation_class: R2
|
|
121
|
+
- id: PRC-A-CORE-008
|
|
122
|
+
revision: 1
|
|
123
|
+
control_ids: [USEQ-F4D6E3B3]
|
|
124
|
+
title: GitHub Actions use immutable references
|
|
125
|
+
statement: Every external GitHub Action is pinned to a full commit SHA.
|
|
126
|
+
applicability: inventory.ci.github_actions == true
|
|
127
|
+
evidence_required:
|
|
128
|
+
- kind: workflow-parse
|
|
129
|
+
minimum_authority: repository
|
|
130
|
+
description: Parsed workflow action references from the scanned commit.
|
|
131
|
+
implementation_id: prc.native.github-action-pin@0.1
|
|
132
|
+
parameters:
|
|
133
|
+
allow_local_actions: true
|
|
134
|
+
severity: high
|
|
135
|
+
gate: required
|
|
136
|
+
remediation_class: R2
|
|
137
|
+
- id: PRC-A-CORE-009
|
|
138
|
+
revision: 1
|
|
139
|
+
control_ids: [USEQ-12655775]
|
|
140
|
+
title: Continuous integration is configured
|
|
141
|
+
statement: The repository contains a supported continuous-integration configuration.
|
|
142
|
+
applicability: "true"
|
|
143
|
+
evidence_required:
|
|
144
|
+
- kind: repository-file
|
|
145
|
+
minimum_authority: repository
|
|
146
|
+
description: A supported CI configuration from the scanned commit.
|
|
147
|
+
implementation_id: prc.native.ci-present@0.1
|
|
148
|
+
parameters: {}
|
|
149
|
+
severity: medium
|
|
150
|
+
gate: required
|
|
151
|
+
remediation_class: R2
|
|
152
|
+
- id: PRC-A-CORE-010
|
|
153
|
+
revision: 2
|
|
154
|
+
control_ids: [USEQ-12655775]
|
|
155
|
+
title: Automated tests are discoverable
|
|
156
|
+
statement: The repository contains a recognized test location or test command declaration.
|
|
157
|
+
applicability: inventory.source_files > 0
|
|
158
|
+
evidence_required:
|
|
159
|
+
- kind: repository-structure
|
|
160
|
+
minimum_authority: repository
|
|
161
|
+
description: Recognized test paths or manifest test commands from the scanned commit.
|
|
162
|
+
implementation_id: prc.native.test-suite@0.2
|
|
163
|
+
parameters: {}
|
|
164
|
+
severity: high
|
|
165
|
+
gate: required
|
|
166
|
+
remediation_class: R2
|
|
167
|
+
- id: PRC-A-CORE-011
|
|
168
|
+
revision: 1
|
|
169
|
+
control_ids: [USEQ-73488048]
|
|
170
|
+
title: Workflow permissions are explicit
|
|
171
|
+
statement: GitHub Actions workflows declare explicit least-privilege permissions.
|
|
172
|
+
applicability: inventory.ci.github_actions == true
|
|
173
|
+
evidence_required:
|
|
174
|
+
- kind: workflow-parse
|
|
175
|
+
minimum_authority: repository
|
|
176
|
+
description: Parsed top-level and job-level permissions from the scanned commit.
|
|
177
|
+
implementation_id: prc.native.github-workflow-permissions@0.1
|
|
178
|
+
parameters: {}
|
|
179
|
+
severity: high
|
|
180
|
+
gate: required
|
|
181
|
+
remediation_class: R2
|
|
182
|
+
- id: PRC-A-CORE-012
|
|
183
|
+
revision: 1
|
|
184
|
+
control_ids: [USEQ-F0F5ACE7]
|
|
185
|
+
title: Generated code follows normal review controls
|
|
186
|
+
statement: Generated or suggested code is subject to the project's normal ownership, review, testing, security, licensing, and provenance controls.
|
|
187
|
+
applicability: "true"
|
|
188
|
+
evidence_required:
|
|
189
|
+
- kind: reviewer-attestation
|
|
190
|
+
minimum_authority: human
|
|
191
|
+
description: Current scoped review evidence for generated or suggested code.
|
|
192
|
+
implementation_id: prc.native.manual-evidence@0.1
|
|
193
|
+
parameters: {}
|
|
194
|
+
severity: high
|
|
195
|
+
gate: required
|
|
196
|
+
remediation_class: R0
|
|
197
|
+
- id: PRC-A-CORE-013
|
|
198
|
+
revision: 2
|
|
199
|
+
control_ids: [USEQ-70E9D5AA]
|
|
200
|
+
title: Configured secret detection has executed
|
|
201
|
+
statement: The selected profile's pinned secret-detection adapter has a current executed result for the scanned inventory.
|
|
202
|
+
applicability: inventory.source_files > 0
|
|
203
|
+
evidence_required:
|
|
204
|
+
- kind: analysis-result
|
|
205
|
+
minimum_authority: executed
|
|
206
|
+
description: Current output from the exact pinned secret-detection adapter selected by this profile.
|
|
207
|
+
implementation_id: prc.native.analysis-evidence@0.1
|
|
208
|
+
parameters:
|
|
209
|
+
adapter_bindings:
|
|
210
|
+
- adapter_id: prc.adapter.gitleaks@8.30
|
|
211
|
+
manifest_sha256: ee223fd11f9d32b1799bf2b25c50cea294fd1f7b59686f9d438b351b5c4faac8
|
|
212
|
+
observation_kind: secret-detection
|
|
213
|
+
severity: high
|
|
214
|
+
gate: required
|
|
215
|
+
remediation_class: R2
|
|
216
|
+
- id: PRC-A-CORE-014
|
|
217
|
+
revision: 1
|
|
218
|
+
control_ids: [USEQ-DAF77C8F]
|
|
219
|
+
title: Source files end with a newline
|
|
220
|
+
statement: Every recognized source file ends with a line-feed byte.
|
|
221
|
+
applicability: inventory.source_files > 0
|
|
222
|
+
evidence_required:
|
|
223
|
+
- kind: source-format
|
|
224
|
+
minimum_authority: repository
|
|
225
|
+
description: Current content evidence for every recognized source file in the scanned commit.
|
|
226
|
+
implementation_id: prc.native.final-newline@0.1
|
|
227
|
+
parameters: {}
|
|
228
|
+
severity: low
|
|
229
|
+
gate: advisory
|
|
230
|
+
remediation_class: R1
|
|
231
|
+
- id: PRC-A-CORE-015
|
|
232
|
+
revision: 1
|
|
233
|
+
control_ids: [USEQ-72088469]
|
|
234
|
+
title: Source revision is identifiable
|
|
235
|
+
statement: The scanned repository resolves to an immutable Git commit identity.
|
|
236
|
+
applicability: "true"
|
|
237
|
+
evidence_required:
|
|
238
|
+
- kind: repository-identity
|
|
239
|
+
minimum_authority: repository
|
|
240
|
+
description: The immutable source revision captured by the deterministic inventory.
|
|
241
|
+
implementation_id: prc.native.git-revision@0.1
|
|
242
|
+
parameters: {}
|
|
243
|
+
severity: medium
|
|
244
|
+
gate: required
|
|
245
|
+
remediation_class: R0
|
|
246
|
+
- id: PRC-A-CORE-016
|
|
247
|
+
revision: 1
|
|
248
|
+
control_ids: [PRC-36-011]
|
|
249
|
+
title: Dependency updates are configured
|
|
250
|
+
statement: A supported dependency-update automation configuration is present.
|
|
251
|
+
applicability: inventory.package_ecosystems.size() > 0
|
|
252
|
+
evidence_required:
|
|
253
|
+
- kind: repository-file
|
|
254
|
+
minimum_authority: repository
|
|
255
|
+
description: A nonempty supported dependency-update configuration.
|
|
256
|
+
implementation_id: prc.native.file-present@0.1
|
|
257
|
+
parameters:
|
|
258
|
+
paths: [.github/dependabot.yml, .github/dependabot.yaml, renovate.json, renovate.json5, .renovaterc, .renovaterc.json]
|
|
259
|
+
minimum_bytes: 1
|
|
260
|
+
severity: medium
|
|
261
|
+
gate: advisory
|
|
262
|
+
remediation_class: R2
|
|
263
|
+
- id: PRC-A-CORE-017
|
|
264
|
+
revision: 1
|
|
265
|
+
control_ids: [USEQ-F4D6E3B3]
|
|
266
|
+
title: Workflow definitions parse
|
|
267
|
+
statement: Every detected GitHub Actions workflow is valid YAML with a mapping document root.
|
|
268
|
+
applicability: inventory.ci.github_actions == true
|
|
269
|
+
evidence_required:
|
|
270
|
+
- kind: workflow-parse
|
|
271
|
+
minimum_authority: repository
|
|
272
|
+
description: A successful strict parse of every detected workflow file.
|
|
273
|
+
implementation_id: prc.native.github-workflow-valid@0.1
|
|
274
|
+
parameters: {}
|
|
275
|
+
severity: high
|
|
276
|
+
gate: required
|
|
277
|
+
remediation_class: R2
|
|
278
|
+
- id: PRC-A-CORE-018
|
|
279
|
+
revision: 1
|
|
280
|
+
control_ids: [USEQ-12655775]
|
|
281
|
+
title: Workflows define executable jobs
|
|
282
|
+
statement: Every detected GitHub Actions workflow defines at least one job.
|
|
283
|
+
applicability: inventory.ci.github_actions == true
|
|
284
|
+
evidence_required:
|
|
285
|
+
- kind: workflow-parse
|
|
286
|
+
minimum_authority: repository
|
|
287
|
+
description: Parsed nonempty job mappings from every detected workflow.
|
|
288
|
+
implementation_id: prc.native.github-workflow-jobs@0.1
|
|
289
|
+
parameters: {}
|
|
290
|
+
severity: high
|
|
291
|
+
gate: required
|
|
292
|
+
remediation_class: R2
|
|
293
|
+
- id: PRC-A-CORE-019
|
|
294
|
+
revision: 1
|
|
295
|
+
control_ids: [USEQ-B66A3064]
|
|
296
|
+
title: Workflow jobs have bounded runtimes
|
|
297
|
+
statement: Every directly executed GitHub Actions job declares a positive static timeout no greater than six hours.
|
|
298
|
+
applicability: inventory.ci.github_actions == true
|
|
299
|
+
evidence_required:
|
|
300
|
+
- kind: workflow-parse
|
|
301
|
+
minimum_authority: repository
|
|
302
|
+
description: Parsed timeout-minutes values for every job that declares runs-on.
|
|
303
|
+
implementation_id: prc.native.github-workflow-timeouts@0.1
|
|
304
|
+
parameters:
|
|
305
|
+
maximum_minutes: 360
|
|
306
|
+
severity: medium
|
|
307
|
+
gate: required
|
|
308
|
+
remediation_class: R2
|
|
309
|
+
- id: PRC-A-CORE-020
|
|
310
|
+
revision: 2
|
|
311
|
+
control_ids: [USEQ-73488048]
|
|
312
|
+
title: pull_request_target workflows receive security review
|
|
313
|
+
statement: Each workflow using pull_request_target avoids executing untrusted pull-request code and keeps permissions and secrets least privileged.
|
|
314
|
+
applicability: inventory.ci.github_actions == true
|
|
315
|
+
evidence_required:
|
|
316
|
+
- kind: workflow-parse
|
|
317
|
+
minimum_authority: repository
|
|
318
|
+
description: Parsed trigger declarations identify workflows that need data-flow and permission review; trigger presence alone is not proof of unsafe execution.
|
|
319
|
+
implementation_id: prc.native.github-no-pull-request-target@0.1
|
|
320
|
+
parameters: {}
|
|
321
|
+
severity: critical
|
|
322
|
+
gate: required
|
|
323
|
+
remediation_class: R0
|
|
324
|
+
- id: PRC-A-CORE-021
|
|
325
|
+
revision: 1
|
|
326
|
+
control_ids: [USEQ-12655775]
|
|
327
|
+
title: Unresolved merge conflicts are absent
|
|
328
|
+
statement: Recognized source, build, workflow, container, and infrastructure files contain no complete merge-conflict marker set.
|
|
329
|
+
applicability: "true"
|
|
330
|
+
evidence_required:
|
|
331
|
+
- kind: source-integrity
|
|
332
|
+
minimum_authority: repository
|
|
333
|
+
description: Deterministic content inspection of scoped repository files.
|
|
334
|
+
implementation_id: prc.native.merge-conflict-markers@0.1
|
|
335
|
+
parameters: {}
|
|
336
|
+
severity: high
|
|
337
|
+
gate: no-go
|
|
338
|
+
remediation_class: R2
|
|
339
|
+
- id: PRC-A-CORE-022
|
|
340
|
+
revision: 1
|
|
341
|
+
control_ids: [USEQ-D60E6950]
|
|
342
|
+
title: Repository files are not broadly writable
|
|
343
|
+
statement: Inventoried regular files are not writable by group or other users.
|
|
344
|
+
applicability: "true"
|
|
345
|
+
evidence_required:
|
|
346
|
+
- kind: repository-metadata
|
|
347
|
+
minimum_authority: repository
|
|
348
|
+
description: Permission modes captured for every inventoried regular file.
|
|
349
|
+
implementation_id: prc.native.restrictive-file-modes@0.1
|
|
350
|
+
parameters: {}
|
|
351
|
+
severity: medium
|
|
352
|
+
gate: advisory
|
|
353
|
+
remediation_class: R1
|
|
354
|
+
- id: PRC-A-CORE-023
|
|
355
|
+
revision: 1
|
|
356
|
+
control_ids: [USEQ-D1076D92]
|
|
357
|
+
title: Dependency manifests are nonempty
|
|
358
|
+
statement: Every detected dependency manifest contains data.
|
|
359
|
+
applicability: inventory.package_ecosystems.size() > 0
|
|
360
|
+
evidence_required:
|
|
361
|
+
- kind: repository-file
|
|
362
|
+
minimum_authority: repository
|
|
363
|
+
description: Current content evidence for every detected dependency manifest.
|
|
364
|
+
implementation_id: prc.native.inventory-files-nonempty@0.1
|
|
365
|
+
parameters:
|
|
366
|
+
inventory_field: manifests
|
|
367
|
+
severity: high
|
|
368
|
+
gate: required
|
|
369
|
+
remediation_class: R2
|
|
370
|
+
- id: PRC-A-CORE-024
|
|
371
|
+
revision: 1
|
|
372
|
+
control_ids: [USEQ-D1076D92]
|
|
373
|
+
title: Dependency locks are nonempty
|
|
374
|
+
statement: Every detected dependency lock or checksum file contains data.
|
|
375
|
+
applicability: inventory.package_ecosystems.size() > 0
|
|
376
|
+
evidence_required:
|
|
377
|
+
- kind: repository-file
|
|
378
|
+
minimum_authority: repository
|
|
379
|
+
description: Current content evidence for every detected dependency lock or checksum file.
|
|
380
|
+
implementation_id: prc.native.inventory-files-nonempty@0.1
|
|
381
|
+
parameters:
|
|
382
|
+
inventory_field: lock_files
|
|
383
|
+
severity: high
|
|
384
|
+
gate: required
|
|
385
|
+
remediation_class: R2
|
|
386
|
+
- id: PRC-A-CORE-025
|
|
387
|
+
revision: 1
|
|
388
|
+
control_ids: [USEQ-0B7FDB5F]
|
|
389
|
+
title: Runtime versions are declared
|
|
390
|
+
statement: Every detected package ecosystem has a supported runtime or toolchain version declaration.
|
|
391
|
+
applicability: inventory.package_ecosystems.size() > 0
|
|
392
|
+
evidence_required:
|
|
393
|
+
- kind: runtime-declaration
|
|
394
|
+
minimum_authority: repository
|
|
395
|
+
description: A supported version declaration for each detected package ecosystem.
|
|
396
|
+
implementation_id: prc.native.runtime-version@0.1
|
|
397
|
+
parameters: {}
|
|
398
|
+
severity: medium
|
|
399
|
+
gate: required
|
|
400
|
+
remediation_class: R2
|
|
401
|
+
- id: PRC-A-CORE-026
|
|
402
|
+
revision: 1
|
|
403
|
+
control_ids: [USEQ-7D4DA192]
|
|
404
|
+
title: Container base images are immutable
|
|
405
|
+
statement: Every Dockerfile build stage uses scratch or a base image pinned by a sha256 digest.
|
|
406
|
+
applicability: inventory.container_files.size() > 0
|
|
407
|
+
evidence_required:
|
|
408
|
+
- kind: containerfile-parse
|
|
409
|
+
minimum_authority: repository
|
|
410
|
+
description: Parsed FROM instructions from every detected container build file.
|
|
411
|
+
implementation_id: prc.native.container-base-pin@0.1
|
|
412
|
+
parameters: {}
|
|
413
|
+
severity: high
|
|
414
|
+
gate: required
|
|
415
|
+
remediation_class: R2
|
|
416
|
+
- id: PRC-A-CORE-027
|
|
417
|
+
revision: 1
|
|
418
|
+
control_ids: [USEQ-A3559C64]
|
|
419
|
+
title: Final container stages declare a non-root user
|
|
420
|
+
statement: Every Dockerfile final stage declares a static USER other than root or zero.
|
|
421
|
+
applicability: inventory.container_files.size() > 0
|
|
422
|
+
evidence_required:
|
|
423
|
+
- kind: containerfile-parse
|
|
424
|
+
minimum_authority: repository
|
|
425
|
+
description: Parsed USER instruction in the final stage of every detected container build file.
|
|
426
|
+
implementation_id: prc.native.container-nonroot@0.1
|
|
427
|
+
parameters: {}
|
|
428
|
+
severity: high
|
|
429
|
+
gate: required
|
|
430
|
+
remediation_class: R2
|
|
431
|
+
- id: PRC-A-CORE-028
|
|
432
|
+
revision: 1
|
|
433
|
+
control_ids: [USEQ-D1076D92]
|
|
434
|
+
title: Terraform provider selections are locked
|
|
435
|
+
statement: Each directory containing Terraform configuration also contains a nonempty provider dependency lock file.
|
|
436
|
+
applicability: inventory.infrastructure.terraform_files.size() > 0
|
|
437
|
+
evidence_required:
|
|
438
|
+
- kind: repository-file
|
|
439
|
+
minimum_authority: repository
|
|
440
|
+
description: A nonempty .terraform.lock.hcl next to each detected Terraform configuration root.
|
|
441
|
+
implementation_id: prc.native.terraform-lock@0.1
|
|
442
|
+
parameters: {}
|
|
443
|
+
severity: medium
|
|
444
|
+
gate: advisory
|
|
445
|
+
remediation_class: R2
|
|
446
|
+
- id: PRC-A-CORE-029
|
|
447
|
+
revision: 1
|
|
448
|
+
control_ids: [USEQ-A3559C64]
|
|
449
|
+
title: Kubernetes workloads require non-root containers
|
|
450
|
+
statement: Every detected Kubernetes workload declares runAsNonRoot for its pod or every container and does not declare user zero.
|
|
451
|
+
applicability: inventory.infrastructure.kubernetes_files.size() > 0
|
|
452
|
+
evidence_required:
|
|
453
|
+
- kind: kubernetes-parse
|
|
454
|
+
minimum_authority: repository
|
|
455
|
+
description: Parsed pod and container security contexts from detected workload resources.
|
|
456
|
+
implementation_id: prc.native.kubernetes-nonroot@0.2
|
|
457
|
+
parameters: {}
|
|
458
|
+
severity: high
|
|
459
|
+
gate: required
|
|
460
|
+
remediation_class: R2
|
|
461
|
+
- id: PRC-A-CORE-030
|
|
462
|
+
revision: 1
|
|
463
|
+
control_ids: [USEQ-13CBD6C6]
|
|
464
|
+
title: Kubernetes containers declare resource policy
|
|
465
|
+
statement: Every container in a detected Kubernetes workload declares nonempty resource requests and limits.
|
|
466
|
+
applicability: inventory.infrastructure.kubernetes_files.size() > 0
|
|
467
|
+
evidence_required:
|
|
468
|
+
- kind: kubernetes-parse
|
|
469
|
+
minimum_authority: repository
|
|
470
|
+
description: Parsed resource requests and limits from detected workload containers.
|
|
471
|
+
implementation_id: prc.native.kubernetes-resources@0.2
|
|
472
|
+
parameters: {}
|
|
473
|
+
severity: high
|
|
474
|
+
gate: required
|
|
475
|
+
remediation_class: R2
|
|
476
|
+
- id: PRC-A-K8S-001
|
|
477
|
+
revision: 1
|
|
478
|
+
control_ids: [USEQ-A3559C64]
|
|
479
|
+
title: Kubernetes workloads avoid privileged host access
|
|
480
|
+
statement: Detected Kubernetes workloads leave host namespace and HostProcess sharing disabled, declare no hostPath volumes, and do not run privileged containers.
|
|
481
|
+
applicability: inventory.infrastructure.kubernetes_files.size() > 0
|
|
482
|
+
evidence_required:
|
|
483
|
+
- kind: kubernetes-parse
|
|
484
|
+
minimum_authority: repository
|
|
485
|
+
description: Bounded parsing of pod, volume, and container host-access fields in detected workload resources.
|
|
486
|
+
implementation_id: prc.native.kubernetes-host-access@0.1
|
|
487
|
+
parameters: {}
|
|
488
|
+
severity: high
|
|
489
|
+
gate: required
|
|
490
|
+
remediation_class: R2
|
|
491
|
+
- id: PRC-A-K8S-002
|
|
492
|
+
revision: 1
|
|
493
|
+
control_ids: [USEQ-A3559C64]
|
|
494
|
+
title: Kubernetes Linux containers disable privilege escalation
|
|
495
|
+
statement: Every ordinary, init, and ephemeral container in a detected Linux Kubernetes workload explicitly sets allowPrivilegeEscalation to false.
|
|
496
|
+
applicability: inventory.infrastructure.kubernetes_files.size() > 0
|
|
497
|
+
evidence_required:
|
|
498
|
+
- kind: kubernetes-parse
|
|
499
|
+
minimum_authority: repository
|
|
500
|
+
description: Bounded parsing of container privilege-escalation fields in detected Linux workload resources.
|
|
501
|
+
implementation_id: prc.native.kubernetes-privilege-escalation@0.1
|
|
502
|
+
parameters: {}
|
|
503
|
+
severity: high
|
|
504
|
+
gate: required
|
|
505
|
+
remediation_class: R2
|
|
506
|
+
- id: PRC-A-K8S-003
|
|
507
|
+
revision: 1
|
|
508
|
+
control_ids: [USEQ-A3559C64]
|
|
509
|
+
title: Kubernetes Linux containers restrict capabilities
|
|
510
|
+
statement: Every ordinary, init, and ephemeral container in a detected Linux Kubernetes workload drops ALL capabilities and adds back at most NET_BIND_SERVICE.
|
|
511
|
+
applicability: inventory.infrastructure.kubernetes_files.size() > 0
|
|
512
|
+
evidence_required:
|
|
513
|
+
- kind: kubernetes-parse
|
|
514
|
+
minimum_authority: repository
|
|
515
|
+
description: Bounded parsing of container capability add and drop lists in detected Linux workload resources.
|
|
516
|
+
implementation_id: prc.native.kubernetes-capabilities@0.1
|
|
517
|
+
parameters: {}
|
|
518
|
+
severity: high
|
|
519
|
+
gate: required
|
|
520
|
+
remediation_class: R2
|
|
521
|
+
- id: PRC-A-K8S-004
|
|
522
|
+
revision: 1
|
|
523
|
+
control_ids: [USEQ-A3559C64]
|
|
524
|
+
title: Kubernetes Linux containers use bounded seccomp profiles
|
|
525
|
+
statement: Every ordinary, init, and ephemeral container in a detected Linux Kubernetes workload inherits or selects a RuntimeDefault or Localhost seccomp profile.
|
|
526
|
+
applicability: inventory.infrastructure.kubernetes_files.size() > 0
|
|
527
|
+
evidence_required:
|
|
528
|
+
- kind: kubernetes-parse
|
|
529
|
+
minimum_authority: repository
|
|
530
|
+
description: Bounded parsing of pod and container seccomp profile types in detected Linux workload resources.
|
|
531
|
+
implementation_id: prc.native.kubernetes-seccomp@0.1
|
|
532
|
+
parameters: {}
|
|
533
|
+
severity: medium
|
|
534
|
+
gate: required
|
|
535
|
+
remediation_class: R2
|
|
536
|
+
- id: PRC-A-CORE-031
|
|
537
|
+
revision: 1
|
|
538
|
+
control_ids: [USEQ-E85957E3]
|
|
539
|
+
title: Private-key armor is absent from repository files
|
|
540
|
+
statement: Recognized armored private-key blocks are absent from bounded source, configuration, documentation, infrastructure, and key-file content in the inventoried repository.
|
|
541
|
+
applicability: inventory.file_count > 0
|
|
542
|
+
evidence_required:
|
|
543
|
+
- kind: sensitive-material-scan
|
|
544
|
+
minimum_authority: repository
|
|
545
|
+
description: Content-addressed bounded inspection for standards-defined private-key armor blocks without retaining key material.
|
|
546
|
+
implementation_id: prc.native.private-key-armor@0.1
|
|
547
|
+
parameters: {}
|
|
548
|
+
severity: critical
|
|
549
|
+
gate: no-go
|
|
550
|
+
remediation_class: R2
|
|
551
|
+
- id: PRC-A-GO-001
|
|
552
|
+
revision: 2
|
|
553
|
+
control_ids: [USEQ-F6ACEF15]
|
|
554
|
+
title: Go net/http package helpers do not use the default client
|
|
555
|
+
statement: Non-test Go source does not call net/http Get, Head, Post, or PostForm package helpers whose end-to-end timeout depends on mutable global DefaultClient state.
|
|
556
|
+
applicability: '"go" in inventory.package_ecosystems'
|
|
557
|
+
evidence_required:
|
|
558
|
+
- kind: go-ast-analysis
|
|
559
|
+
minimum_authority: repository
|
|
560
|
+
description: Bounded syntax-aware inspection of inventoried non-test Go source for direct calls to net/http package convenience helpers backed by mutable global DefaultClient state.
|
|
561
|
+
implementation_id: prc.native.go-http-timeout@0.1
|
|
562
|
+
parameters: {}
|
|
563
|
+
severity: high
|
|
564
|
+
gate: required
|
|
565
|
+
remediation_class: R2
|
|
566
|
+
- id: PRC-A-GO-002
|
|
567
|
+
revision: 1
|
|
568
|
+
control_ids: [USEQ-B66A3064]
|
|
569
|
+
title: Go HTTP servers use configurable Server instances
|
|
570
|
+
statement: Non-test Go source does not call net/http ListenAndServe, ListenAndServeTLS, Serve, or ServeTLS package helpers whose constructed Server cannot configure request timeout fields.
|
|
571
|
+
applicability: '"go" in inventory.package_ecosystems'
|
|
572
|
+
evidence_required:
|
|
573
|
+
- kind: go-ast-analysis
|
|
574
|
+
minimum_authority: repository
|
|
575
|
+
description: Bounded syntax-aware inspection of inventoried non-test Go source for direct calls to net/http package server helpers that construct Server values without configurable timeout fields.
|
|
576
|
+
implementation_id: prc.native.go-http-server-timeout@0.1
|
|
577
|
+
parameters: {}
|
|
578
|
+
severity: high
|
|
579
|
+
gate: required
|
|
580
|
+
remediation_class: R2
|
|
581
|
+
- id: PRC-A-API-001
|
|
582
|
+
revision: 1
|
|
583
|
+
control_ids: [USEQ-13208C54]
|
|
584
|
+
title: OpenAPI documents expose required root metadata
|
|
585
|
+
statement: Every detected OpenAPI 3.0, 3.1, or 3.2 document has one bounded YAML or JSON document, required root and info metadata, and the version-specific required structural fields.
|
|
586
|
+
applicability: 'inventory.components.exists(c, c.kind == "api-description" && c.ecosystem == "openapi")'
|
|
587
|
+
evidence_required:
|
|
588
|
+
- kind: openapi-parse
|
|
589
|
+
minimum_authority: repository
|
|
590
|
+
description: Content-addressed bounded parsing of detected OpenAPI YAML or JSON documents for required 3.0, 3.1, or 3.2 root structure and metadata.
|
|
591
|
+
implementation_id: prc.native.openapi-root@0.1
|
|
592
|
+
parameters: {}
|
|
593
|
+
severity: medium
|
|
594
|
+
gate: required
|
|
595
|
+
remediation_class: R2
|
|
596
|
+
- id: PRC-A-API-002
|
|
597
|
+
revision: 1
|
|
598
|
+
control_ids: [USEQ-13208C54]
|
|
599
|
+
title: OpenAPI operations define valid responses
|
|
600
|
+
statement: Every directly declared operation under OpenAPI paths or webhooks has a nonempty Responses Object whose response keys and inline response descriptions satisfy the supported OpenAPI structure.
|
|
601
|
+
applicability: 'inventory.components.exists(c, c.kind == "api-description" && c.ecosystem == "openapi")'
|
|
602
|
+
evidence_required:
|
|
603
|
+
- kind: openapi-parse
|
|
604
|
+
minimum_authority: repository
|
|
605
|
+
description: Content-addressed bounded parsing of directly declared OpenAPI path and webhook operations, including 3.2 query and additionalOperations entries.
|
|
606
|
+
implementation_id: prc.native.openapi-operation-responses@0.1
|
|
607
|
+
parameters: {}
|
|
608
|
+
severity: high
|
|
609
|
+
gate: required
|
|
610
|
+
remediation_class: R2
|
|
611
|
+
- id: PRC-A-API-003
|
|
612
|
+
revision: 1
|
|
613
|
+
control_ids: [USEQ-13208C54]
|
|
614
|
+
title: Declared OpenAPI operation IDs are unique
|
|
615
|
+
statement: Every operationId declared by a directly declared OpenAPI path or webhook operation is a nonempty string and is unique within its OpenAPI document.
|
|
616
|
+
applicability: 'inventory.components.exists(c, c.kind == "api-description" && c.ecosystem == "openapi")'
|
|
617
|
+
evidence_required:
|
|
618
|
+
- kind: openapi-parse
|
|
619
|
+
minimum_authority: repository
|
|
620
|
+
description: Content-addressed bounded parsing of operationId fields on directly declared OpenAPI path and webhook operations, including 3.2 query and additionalOperations entries.
|
|
621
|
+
implementation_id: prc.native.openapi-operation-ids@0.1
|
|
622
|
+
parameters: {}
|
|
623
|
+
severity: medium
|
|
624
|
+
gate: required
|
|
625
|
+
remediation_class: R2
|