@cdxgen/cdxgen 0.0.1 → 13.0.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/README.md +921 -87
- package/bin/audit.js +239 -0
- package/bin/cdxgen.js +2324 -0
- package/bin/convert.js +213 -0
- package/bin/evinse.js +353 -0
- package/bin/hbom.js +495 -0
- package/bin/repl.js +2224 -0
- package/bin/sign.js +195 -0
- package/bin/tracebom.js +295 -0
- package/bin/validate.js +268 -0
- package/bin/verify.js +189 -0
- package/data/README.md +307 -0
- package/data/bom-1.4.schema.json +1605 -0
- package/data/bom-1.5.schema.json +3660 -0
- package/data/bom-1.6.schema.json +5511 -0
- package/data/bom-1.7.schema.json +6700 -0
- package/data/cbomosdb-queries.json +68 -0
- package/data/component-tags.json +339 -0
- package/data/container-knowledge-index.json +125 -0
- package/data/cosdb-queries.json +17 -0
- package/data/crypto-oid.json +1998 -0
- package/data/cryptography-defs.json +3793 -0
- package/data/cryptography-defs.schema.json +576 -0
- package/data/cyclonedx-2.0-bundled.schema.json +7182 -0
- package/data/frameworks-list.json +219 -0
- package/data/glibc-stdlib.json +117 -0
- package/data/gtfobins-index.json +6296 -0
- package/data/helpers/init.gradle +71 -0
- package/data/jsf-0.82.schema.json +211 -0
- package/data/known-licenses.json +82 -0
- package/data/lic-mapping.json +338 -0
- package/data/license-aliases.json +6624 -0
- package/data/license-db.json +39059 -0
- package/data/license-deprecations.json +302 -0
- package/data/lolbas-index.json +150 -0
- package/data/predictive-audit-allowlist.json +11 -0
- package/data/pypi-pkg-aliases.json +1199 -0
- package/data/python-stdlib.json +308 -0
- package/data/queries-darwin.json +193 -0
- package/data/queries-win.json +257 -0
- package/data/queries.json +268 -0
- package/data/ruby-known-modules.json +281 -0
- package/data/rules/ai-agent-governance.yaml +323 -0
- package/data/rules/ai-bom.yaml +268 -0
- package/data/rules/ai-oversight.yaml +186 -0
- package/data/rules/ai-provenance.yaml +92 -0
- package/data/rules/asar-archives.yaml +150 -0
- package/data/rules/cbom-security.yaml +165 -0
- package/data/rules/chrome-extensions.yaml +248 -0
- package/data/rules/ci-permissions.yaml +802 -0
- package/data/rules/container-risk.yaml +353 -0
- package/data/rules/dependency-sources.yaml +236 -0
- package/data/rules/golem-go.yaml +229 -0
- package/data/rules/hbom-compliance.yaml +325 -0
- package/data/rules/hbom-performance.yaml +307 -0
- package/data/rules/hbom-security.yaml +248 -0
- package/data/rules/host-topology.yaml +165 -0
- package/data/rules/mcp-servers.yaml +388 -0
- package/data/rules/obom-runtime.yaml +1776 -0
- package/data/rules/package-integrity.yaml +364 -0
- package/data/rules/rootfs-hardening.yaml +179 -0
- package/data/rules/vscode-extensions.yaml +237 -0
- package/data/spdx-export.schema.json +6794 -0
- package/data/spdx-license-list.json +7449 -0
- package/data/spdx-licenses.json +759 -0
- package/data/spdx.schema.json +819 -0
- package/data/templates/README.md +3 -0
- package/data/templates/asvs-4.0.3.cdx.json +2943 -0
- package/data/templates/asvs-5.0.cdx.json +3046 -0
- package/data/templates/bsimm-v13.cdx.json +1008 -0
- package/data/templates/masvs-2.0.0.cdx.json +225 -0
- package/data/templates/nist-ssdf-1.1.cdx.json +828 -0
- package/data/templates/pcissc-secure-slc-1.1.cdx.json +1027 -0
- package/data/templates/scvs-1.0.0.cdx.json +813 -0
- package/data/templates/ssaf-DRAFT-2023-11.cdx.json +127 -0
- package/data/vendor-alias.json +41967 -0
- package/data/wrapdb-releases.json +4227 -0
- package/index.cjs +15 -0
- package/lib/audit/index.js +2800 -0
- package/lib/audit/progress.js +114 -0
- package/lib/audit/reporters.js +937 -0
- package/lib/audit/scoring.js +560 -0
- package/lib/audit/targets.js +798 -0
- package/lib/cli/bomAssembly.js +1833 -0
- package/lib/cli/cliOptions.js +513 -0
- package/lib/cli/index.js +2759 -0
- package/lib/cli/jsBom.js +2087 -0
- package/lib/cli/jvmBom.js +1858 -0
- package/lib/cli/managedBom.js +2083 -0
- package/lib/cli/nativeBom.js +2125 -0
- package/lib/core/activity.js +1087 -0
- package/lib/core/env.js +719 -0
- package/lib/core/fs.js +1058 -0
- package/lib/core/httpClient.js +730 -0
- package/lib/core/logger.js +142 -0
- package/lib/core/parallel.js +323 -0
- package/lib/core/paths.js +70 -0
- package/lib/core/projectConfig.js +122 -0
- package/lib/core/propertySanitizer.js +174 -0
- package/lib/core/spdx.js +5 -0
- package/lib/core/state.js +59 -0
- package/lib/core/text.js +207 -0
- package/lib/core/ui.js +876 -0
- package/lib/core/urls.js +84 -0
- package/lib/ecosystems/asarutils.js +1636 -0
- package/lib/ecosystems/bunutils.js +402 -0
- package/lib/ecosystems/caxa.js +77 -0
- package/lib/ecosystems/chromextutils.js +1174 -0
- package/lib/ecosystems/cmakeResolver.js +587 -0
- package/lib/ecosystems/cppEvidence.js +305 -0
- package/lib/ecosystems/denoutils.js +1094 -0
- package/lib/ecosystems/dotnetutils.js +132 -0
- package/lib/ecosystems/ecosystems.js +2772 -0
- package/lib/ecosystems/golem.js +1807 -0
- package/lib/ecosystems/gradleutils.js +1048 -0
- package/lib/ecosystems/jsEvidence.js +317 -0
- package/lib/ecosystems/npmutils.js +586 -0
- package/lib/ecosystems/parsers-bazel.js +875 -0
- package/lib/ecosystems/parsers-dotnet.js +1430 -0
- package/lib/ecosystems/parsers-gleam.js +302 -0
- package/lib/ecosystems/parsers-go.js +818 -0
- package/lib/ecosystems/parsers-js.js +4222 -0
- package/lib/ecosystems/parsers-jvm.js +948 -0
- package/lib/ecosystems/parsers-misc.js +3191 -0
- package/lib/ecosystems/parsers-python.js +2070 -0
- package/lib/ecosystems/parsers-rust.js +1294 -0
- package/lib/ecosystems/parsers-zig.js +861 -0
- package/lib/ecosystems/pep770.js +341 -0
- package/lib/ecosystems/pylockutils.js +427 -0
- package/lib/ecosystems/pythonutils.js +1281 -0
- package/lib/ecosystems/registryProvenance.js +1003 -0
- package/lib/ecosystems/remote/huggingface.js +1343 -0
- package/lib/ecosystems/rubyutils.js +1629 -0
- package/lib/ecosystems/rusi.js +820 -0
- package/lib/ecosystems/sbtutils.js +972 -0
- package/lib/ecosystems/tea.js +607 -0
- package/lib/ecosystems/utils.js +575 -0
- package/lib/ecosystems/zigResolver.js +410 -0
- package/lib/evinser/db.js +145 -0
- package/lib/evinser/evinser.js +2362 -0
- package/lib/evinser/scalasem.js +65 -0
- package/lib/evinser/swiftsem.js +767 -0
- package/lib/helpers/annotationFormatter.js +84 -0
- package/lib/helpers/bomSigner.js +312 -0
- package/lib/helpers/exportUtils.js +160 -0
- package/lib/helpers/remote/dependency-track.js +117 -0
- package/lib/helpers/versutils.js +202 -0
- package/lib/helpers/vsixutils.js +1069 -0
- package/lib/inventory/agentFormulationParser.js +322 -0
- package/lib/inventory/aiCollector.js +2140 -0
- package/lib/inventory/aiInventory.js +414 -0
- package/lib/inventory/aiModelVariants.js +121 -0
- package/lib/inventory/aiOversightCollector.js +661 -0
- package/lib/inventory/aiProvenanceCollector.js +822 -0
- package/lib/inventory/analyzer.js +6089 -0
- package/lib/inventory/analyzerScope.js +807 -0
- package/lib/inventory/astWorker.js +20 -0
- package/lib/inventory/atomUtils.js +1092 -0
- package/lib/inventory/auditCategories.js +192 -0
- package/lib/inventory/bomUtils.js +369 -0
- package/lib/inventory/cacheCommands.js +182 -0
- package/lib/inventory/cacheDir.js +104 -0
- package/lib/inventory/cbomutils.js +590 -0
- package/lib/inventory/cdxrs.js +434 -0
- package/lib/inventory/ciParsers/azurePipelines.js +295 -0
- package/lib/inventory/ciParsers/circleCi.js +286 -0
- package/lib/inventory/ciParsers/common.js +24 -0
- package/lib/inventory/ciParsers/githubActions.js +2434 -0
- package/lib/inventory/ciParsers/gitlabCi.js +213 -0
- package/lib/inventory/ciParsers/jenkins.js +180 -0
- package/lib/inventory/citations.js +234 -0
- package/lib/inventory/communityAiConfigParser.js +756 -0
- package/lib/inventory/containerRisk.js +204 -0
- package/lib/inventory/cryptoAlgorithmFamily.js +258 -0
- package/lib/inventory/deps.js +807 -0
- package/lib/inventory/depsUtils.js +588 -0
- package/lib/inventory/display.js +2128 -0
- package/lib/inventory/dosai.js +601 -0
- package/lib/inventory/dosaiParsers.js +154 -0
- package/lib/inventory/dynamic.js +145 -0
- package/lib/inventory/envcontext.js +1789 -0
- package/lib/inventory/evidenceUtils.js +774 -0
- package/lib/inventory/fetchBatch.js +779 -0
- package/lib/inventory/fetchRate.js +255 -0
- package/lib/inventory/forgeEnricher.js +300 -0
- package/lib/inventory/formulationParsers.js +422 -0
- package/lib/inventory/gtfobins.js +339 -0
- package/lib/inventory/hbom.js +719 -0
- package/lib/inventory/hbomAnalysis.js +310 -0
- package/lib/inventory/hbomLoader.js +35 -0
- package/lib/inventory/hostTopology.js +835 -0
- package/lib/inventory/inventoryStats.js +100 -0
- package/lib/inventory/jsonLike.js +121 -0
- package/lib/inventory/licenseEnhancer.js +918 -0
- package/lib/inventory/lolbas.js +285 -0
- package/lib/inventory/mcp.js +253 -0
- package/lib/inventory/mcpConfigParser.js +683 -0
- package/lib/inventory/mcpDiscovery.js +112 -0
- package/lib/inventory/mcpPinning.js +209 -0
- package/lib/inventory/osPackageResolver.js +493 -0
- package/lib/inventory/osinfo.js +277 -0
- package/lib/inventory/osqueryTransform.js +274 -0
- package/lib/inventory/plugins.js +466 -0
- package/lib/inventory/protobom.js +231 -0
- package/lib/inventory/protobomLoader.js +43 -0
- package/lib/inventory/provenanceUtils.js +224 -0
- package/lib/inventory/purl.js +749 -0
- package/lib/inventory/rustFormulationParser.js +339 -0
- package/lib/inventory/sbomDocument.js +340 -0
- package/lib/inventory/source.js +1488 -0
- package/lib/inventory/spdx.js +361 -0
- package/lib/inventory/spdxExpression.js +512 -0
- package/lib/inventory/spdxUtils.js +107 -0
- package/lib/inventory/table.js +263 -0
- package/lib/inventory/traceRunner.js +439 -0
- package/lib/inventory/unicodeScan.js +147 -0
- package/lib/managers/binary.js +3307 -0
- package/lib/managers/containerutils.js +125 -0
- package/lib/managers/docker.js +2145 -0
- package/lib/managers/dockerConnection.js +162 -0
- package/lib/managers/oci.js +704 -0
- package/lib/managers/piptree.js +267 -0
- package/lib/parsers/cmakeCache.js +199 -0
- package/lib/parsers/gguf.js +492 -0
- package/lib/parsers/gitAiNotes.js +233 -0
- package/lib/parsers/gitmodules.js +239 -0
- package/lib/parsers/htmlExtract.js +610 -0
- package/lib/parsers/huggingfaceManifest.js +551 -0
- package/lib/parsers/huggingfaceUtils.js +506 -0
- package/lib/parsers/iri.js +618 -0
- package/lib/parsers/npmrc.js +99 -0
- package/lib/parsers/ollama.js +101 -0
- package/lib/parsers/xml.js +841 -0
- package/lib/server/openapi.yaml +433 -0
- package/lib/server/server.js +616 -0
- package/lib/stages/postgen/annotator.js +977 -0
- package/lib/stages/postgen/auditBom.js +468 -0
- package/lib/stages/postgen/postgen.js +1239 -0
- package/lib/stages/postgen/ruleEngine.js +731 -0
- package/lib/stages/postgen/sortBom.js +195 -0
- package/lib/stages/postgen/spdxConverter.js +796 -0
- package/lib/stages/postgen/specVersionCompat.js +703 -0
- package/lib/stages/pregen/envAudit.js +388 -0
- package/lib/stages/pregen/pregen.js +637 -0
- package/lib/third-party/README.md +9 -0
- package/lib/third-party/arborist/CHANGELOG.md +1109 -0
- package/lib/third-party/arborist/LICENSE.md +20 -0
- package/lib/third-party/arborist/README.md +315 -0
- package/lib/third-party/arborist/lib/arborist/index.js +258 -0
- package/lib/third-party/arborist/lib/arborist/load-actual.js +605 -0
- package/lib/third-party/arborist/lib/arborist/load-virtual.js +300 -0
- package/lib/third-party/arborist/lib/bin-links.js +120 -0
- package/lib/third-party/arborist/lib/calc-dep-flags.js +130 -0
- package/lib/third-party/arborist/lib/case-insensitive-map.js +51 -0
- package/lib/third-party/arborist/lib/consistent-resolve.js +42 -0
- package/lib/third-party/arborist/lib/debug.js +50 -0
- package/lib/third-party/arborist/lib/dep-valid.js +190 -0
- package/lib/third-party/arborist/lib/edge.js +417 -0
- package/lib/third-party/arborist/lib/from-path.js +36 -0
- package/lib/third-party/arborist/lib/gather-dep-set.js +43 -0
- package/lib/third-party/arborist/lib/index.js +22 -0
- package/lib/third-party/arborist/lib/inventory.js +138 -0
- package/lib/third-party/arborist/lib/link.js +169 -0
- package/lib/third-party/arborist/lib/node.js +1673 -0
- package/lib/third-party/arborist/lib/npm-extension.js +45 -0
- package/lib/third-party/arborist/lib/override-resolves.js +11 -0
- package/lib/third-party/arborist/lib/override-set.js +319 -0
- package/lib/third-party/arborist/lib/package-extensions.js +289 -0
- package/lib/third-party/arborist/lib/printable.js +210 -0
- package/lib/third-party/arborist/lib/proc-log.js +30 -0
- package/lib/third-party/arborist/lib/realpath.js +100 -0
- package/lib/third-party/arborist/lib/relpath.js +4 -0
- package/lib/third-party/arborist/lib/shrinkwrap.js +1291 -0
- package/lib/third-party/arborist/lib/spec-from-lock.js +34 -0
- package/lib/third-party/arborist/lib/tree-check.js +165 -0
- package/lib/third-party/arborist/lib/validate-npm-package-name.js +107 -0
- package/lib/third-party/arborist/lib/version-from-tgz.js +51 -0
- package/lib/third-party/arborist/lib/yarn-lock.js +397 -0
- package/lib/validator/bomValidator.js +985 -0
- package/lib/validator/complianceEngine.js +241 -0
- package/lib/validator/complianceRules.js +1680 -0
- package/lib/validator/generated/runtime.mjs +17 -0
- package/lib/validator/generated/validate-1.6.mjs +21258 -0
- package/lib/validator/generated/validate-1.7.mjs +24803 -0
- package/lib/validator/generated/validate-2.0.mjs +22931 -0
- package/lib/validator/index.js +246 -0
- package/lib/validator/reporters/annotations.js +142 -0
- package/lib/validator/reporters/console.js +160 -0
- package/lib/validator/reporters/index.js +41 -0
- package/lib/validator/reporters/json.js +37 -0
- package/lib/validator/reporters/sarif.js +184 -0
- package/package.json +209 -26
- package/types/bin/audit.d.ts +3 -0
- package/types/bin/audit.d.ts.map +1 -0
- package/types/bin/cdxgen.d.ts +3 -0
- package/types/bin/cdxgen.d.ts.map +1 -0
- package/types/bin/convert.d.ts +3 -0
- package/types/bin/convert.d.ts.map +1 -0
- package/types/bin/evinse.d.ts +3 -0
- package/types/bin/evinse.d.ts.map +1 -0
- package/types/bin/hbom.d.ts +3 -0
- package/types/bin/hbom.d.ts.map +1 -0
- package/types/bin/repl.d.ts +3 -0
- package/types/bin/repl.d.ts.map +1 -0
- package/types/bin/sign.d.ts +3 -0
- package/types/bin/sign.d.ts.map +1 -0
- package/types/bin/tracebom.d.ts +3 -0
- package/types/bin/tracebom.d.ts.map +1 -0
- package/types/bin/validate.d.ts +14 -0
- package/types/bin/validate.d.ts.map +1 -0
- package/types/bin/verify.d.ts +3 -0
- package/types/bin/verify.d.ts.map +1 -0
- package/types/lib/audit/index.d.ts +153 -0
- package/types/lib/audit/index.d.ts.map +1 -0
- package/types/lib/audit/progress.d.ts +31 -0
- package/types/lib/audit/progress.d.ts.map +1 -0
- package/types/lib/audit/reporters.d.ts +62 -0
- package/types/lib/audit/reporters.d.ts.map +1 -0
- package/types/lib/audit/scoring.d.ts +36 -0
- package/types/lib/audit/scoring.d.ts.map +1 -0
- package/types/lib/audit/targets.d.ts +77 -0
- package/types/lib/audit/targets.d.ts.map +1 -0
- package/types/lib/cli/bomAssembly.d.ts +315 -0
- package/types/lib/cli/bomAssembly.d.ts.map +1 -0
- package/types/lib/cli/cliOptions.d.ts +156 -0
- package/types/lib/cli/cliOptions.d.ts.map +1 -0
- package/types/lib/cli/index.d.ts +107 -0
- package/types/lib/cli/index.d.ts.map +1 -0
- package/types/lib/cli/jsBom.d.ts +94 -0
- package/types/lib/cli/jsBom.d.ts.map +1 -0
- package/types/lib/cli/jvmBom.d.ts +54 -0
- package/types/lib/cli/jvmBom.d.ts.map +1 -0
- package/types/lib/cli/managedBom.d.ts +105 -0
- package/types/lib/cli/managedBom.d.ts.map +1 -0
- package/types/lib/cli/nativeBom.d.ts +143 -0
- package/types/lib/cli/nativeBom.d.ts.map +1 -0
- package/types/lib/core/activity.d.ts +178 -0
- package/types/lib/core/activity.d.ts.map +1 -0
- package/types/lib/core/env.d.ts +192 -0
- package/types/lib/core/env.d.ts.map +1 -0
- package/types/lib/core/fs.d.ts +158 -0
- package/types/lib/core/fs.d.ts.map +1 -0
- package/types/lib/core/httpClient.d.ts +149 -0
- package/types/lib/core/httpClient.d.ts.map +1 -0
- package/types/lib/core/logger.d.ts +28 -0
- package/types/lib/core/logger.d.ts.map +1 -0
- package/types/lib/core/parallel.d.ts +95 -0
- package/types/lib/core/parallel.d.ts.map +1 -0
- package/types/lib/core/paths.d.ts +36 -0
- package/types/lib/core/paths.d.ts.map +1 -0
- package/types/lib/core/projectConfig.d.ts +23 -0
- package/types/lib/core/projectConfig.d.ts.map +1 -0
- package/types/lib/core/propertySanitizer.d.ts +23 -0
- package/types/lib/core/propertySanitizer.d.ts.map +1 -0
- package/types/lib/core/spdx.d.ts +5 -0
- package/types/lib/core/spdx.d.ts.map +1 -0
- package/types/lib/core/state.d.ts +20 -0
- package/types/lib/core/state.d.ts.map +1 -0
- package/types/lib/core/text.d.ts +78 -0
- package/types/lib/core/text.d.ts.map +1 -0
- package/types/lib/core/ui.d.ts +87 -0
- package/types/lib/core/ui.d.ts.map +1 -0
- package/types/lib/core/urls.d.ts +43 -0
- package/types/lib/core/urls.d.ts.map +1 -0
- package/types/lib/ecosystems/asarutils.d.ts +71 -0
- package/types/lib/ecosystems/asarutils.d.ts.map +1 -0
- package/types/lib/ecosystems/bunutils.d.ts +38 -0
- package/types/lib/ecosystems/bunutils.d.ts.map +1 -0
- package/types/lib/ecosystems/caxa.d.ts +8 -0
- package/types/lib/ecosystems/caxa.d.ts.map +1 -0
- package/types/lib/ecosystems/chromextutils.d.ts +97 -0
- package/types/lib/ecosystems/chromextutils.d.ts.map +1 -0
- package/types/lib/ecosystems/cmakeResolver.d.ts +176 -0
- package/types/lib/ecosystems/cmakeResolver.d.ts.map +1 -0
- package/types/lib/ecosystems/cppEvidence.d.ts +35 -0
- package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -0
- package/types/lib/ecosystems/denoutils.d.ts +76 -0
- package/types/lib/ecosystems/denoutils.d.ts.map +1 -0
- package/types/lib/ecosystems/dotnetutils.d.ts +45 -0
- package/types/lib/ecosystems/dotnetutils.d.ts.map +1 -0
- package/types/lib/ecosystems/ecosystems.d.ts +279 -0
- package/types/lib/ecosystems/ecosystems.d.ts.map +1 -0
- package/types/lib/ecosystems/golem.d.ts +60 -0
- package/types/lib/ecosystems/golem.d.ts.map +1 -0
- package/types/lib/ecosystems/gradleutils.d.ts +139 -0
- package/types/lib/ecosystems/gradleutils.d.ts.map +1 -0
- package/types/lib/ecosystems/jsEvidence.d.ts +17 -0
- package/types/lib/ecosystems/jsEvidence.d.ts.map +1 -0
- package/types/lib/ecosystems/npmutils.d.ts +183 -0
- package/types/lib/ecosystems/npmutils.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-bazel.d.ts +36 -0
- package/types/lib/ecosystems/parsers-bazel.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-dotnet.d.ts +116 -0
- package/types/lib/ecosystems/parsers-dotnet.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-gleam.d.ts +33 -0
- package/types/lib/ecosystems/parsers-gleam.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-go.d.ts +92 -0
- package/types/lib/ecosystems/parsers-go.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-js.d.ts +242 -0
- package/types/lib/ecosystems/parsers-js.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-jvm.d.ts +100 -0
- package/types/lib/ecosystems/parsers-jvm.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-misc.d.ts +450 -0
- package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-python.d.ts +145 -0
- package/types/lib/ecosystems/parsers-python.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-rust.d.ts +56 -0
- package/types/lib/ecosystems/parsers-rust.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-zig.d.ts +83 -0
- package/types/lib/ecosystems/parsers-zig.d.ts.map +1 -0
- package/types/lib/ecosystems/pep770.d.ts +38 -0
- package/types/lib/ecosystems/pep770.d.ts.map +1 -0
- package/types/lib/ecosystems/pylockutils.d.ts +68 -0
- package/types/lib/ecosystems/pylockutils.d.ts.map +1 -0
- package/types/lib/ecosystems/pythonutils.d.ts +70 -0
- package/types/lib/ecosystems/pythonutils.d.ts.map +1 -0
- package/types/lib/ecosystems/registryProvenance.d.ts +26 -0
- package/types/lib/ecosystems/registryProvenance.d.ts.map +1 -0
- package/types/lib/ecosystems/remote/huggingface.d.ts +31 -0
- package/types/lib/ecosystems/remote/huggingface.d.ts.map +1 -0
- package/types/lib/ecosystems/rubyutils.d.ts +182 -0
- package/types/lib/ecosystems/rubyutils.d.ts.map +1 -0
- package/types/lib/ecosystems/rusi.d.ts +40 -0
- package/types/lib/ecosystems/rusi.d.ts.map +1 -0
- package/types/lib/ecosystems/sbtutils.d.ts +179 -0
- package/types/lib/ecosystems/sbtutils.d.ts.map +1 -0
- package/types/lib/ecosystems/tea.d.ts +180 -0
- package/types/lib/ecosystems/tea.d.ts.map +1 -0
- package/types/lib/ecosystems/utils.d.ts +41 -0
- package/types/lib/ecosystems/utils.d.ts.map +1 -0
- package/types/lib/ecosystems/zigResolver.d.ts +70 -0
- package/types/lib/ecosystems/zigResolver.d.ts.map +1 -0
- package/types/lib/evinser/db.d.ts +17 -0
- package/types/lib/evinser/db.d.ts.map +1 -0
- package/types/lib/evinser/evinser.d.ts +354 -0
- package/types/lib/evinser/evinser.d.ts.map +1 -0
- package/types/lib/evinser/scalasem.d.ts +15 -0
- package/types/lib/evinser/scalasem.d.ts.map +1 -0
- package/types/lib/evinser/swiftsem.d.ts +103 -0
- package/types/lib/evinser/swiftsem.d.ts.map +1 -0
- package/types/lib/helpers/annotationFormatter.d.ts +23 -0
- package/types/lib/helpers/annotationFormatter.d.ts.map +1 -0
- package/types/lib/helpers/bomSigner.d.ts +28 -0
- package/types/lib/helpers/bomSigner.d.ts.map +1 -0
- package/types/lib/helpers/exportUtils.d.ts +52 -0
- package/types/lib/helpers/exportUtils.d.ts.map +1 -0
- package/types/lib/helpers/remote/dependency-track.d.ts +23 -0
- package/types/lib/helpers/remote/dependency-track.d.ts.map +1 -0
- package/types/lib/helpers/versutils.d.ts +8 -0
- package/types/lib/helpers/versutils.d.ts.map +1 -0
- package/types/lib/helpers/vsixutils.d.ts +130 -0
- package/types/lib/helpers/vsixutils.d.ts.map +1 -0
- package/types/lib/inventory/agentFormulationParser.d.ts +21 -0
- package/types/lib/inventory/agentFormulationParser.d.ts.map +1 -0
- package/types/lib/inventory/aiCollector.d.ts +61 -0
- package/types/lib/inventory/aiCollector.d.ts.map +1 -0
- package/types/lib/inventory/aiInventory.d.ts +103 -0
- package/types/lib/inventory/aiInventory.d.ts.map +1 -0
- package/types/lib/inventory/aiModelVariants.d.ts +31 -0
- package/types/lib/inventory/aiModelVariants.d.ts.map +1 -0
- package/types/lib/inventory/aiOversightCollector.d.ts +28 -0
- package/types/lib/inventory/aiOversightCollector.d.ts.map +1 -0
- package/types/lib/inventory/aiProvenanceCollector.d.ts +13 -0
- package/types/lib/inventory/aiProvenanceCollector.d.ts.map +1 -0
- package/types/lib/inventory/analyzer.d.ts +157 -0
- package/types/lib/inventory/analyzer.d.ts.map +1 -0
- package/types/lib/inventory/analyzerScope.d.ts +106 -0
- package/types/lib/inventory/analyzerScope.d.ts.map +1 -0
- package/types/lib/inventory/astWorker.d.ts +9 -0
- package/types/lib/inventory/astWorker.d.ts.map +1 -0
- package/types/lib/inventory/atomUtils.d.ts +159 -0
- package/types/lib/inventory/atomUtils.d.ts.map +1 -0
- package/types/lib/inventory/auditCategories.d.ts +80 -0
- package/types/lib/inventory/auditCategories.d.ts.map +1 -0
- package/types/lib/inventory/bomUtils.d.ts +145 -0
- package/types/lib/inventory/bomUtils.d.ts.map +1 -0
- package/types/lib/inventory/cacheCommands.d.ts +28 -0
- package/types/lib/inventory/cacheCommands.d.ts.map +1 -0
- package/types/lib/inventory/cacheDir.d.ts +55 -0
- package/types/lib/inventory/cacheDir.d.ts.map +1 -0
- package/types/lib/inventory/cbomutils.d.ts +37 -0
- package/types/lib/inventory/cbomutils.d.ts.map +1 -0
- package/types/lib/inventory/cdxrs.d.ts +90 -0
- package/types/lib/inventory/cdxrs.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/azurePipelines.d.ts +27 -0
- package/types/lib/inventory/ciParsers/azurePipelines.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/circleCi.d.ts +27 -0
- package/types/lib/inventory/ciParsers/circleCi.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/common.d.ts +11 -0
- package/types/lib/inventory/ciParsers/common.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/githubActions.d.ts +38 -0
- package/types/lib/inventory/ciParsers/githubActions.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/gitlabCi.d.ts +26 -0
- package/types/lib/inventory/ciParsers/gitlabCi.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/jenkins.d.ts +26 -0
- package/types/lib/inventory/ciParsers/jenkins.d.ts.map +1 -0
- package/types/lib/inventory/citations.d.ts +90 -0
- package/types/lib/inventory/citations.d.ts.map +1 -0
- package/types/lib/inventory/communityAiConfigParser.d.ts +14 -0
- package/types/lib/inventory/communityAiConfigParser.d.ts.map +1 -0
- package/types/lib/inventory/containerRisk.d.ts +20 -0
- package/types/lib/inventory/containerRisk.d.ts.map +1 -0
- package/types/lib/inventory/cryptoAlgorithmFamily.d.ts +37 -0
- package/types/lib/inventory/cryptoAlgorithmFamily.d.ts.map +1 -0
- package/types/lib/inventory/deps.d.ts +140 -0
- package/types/lib/inventory/deps.d.ts.map +1 -0
- package/types/lib/inventory/depsUtils.d.ts +74 -0
- package/types/lib/inventory/depsUtils.d.ts.map +1 -0
- package/types/lib/inventory/display.d.ts +227 -0
- package/types/lib/inventory/display.d.ts.map +1 -0
- package/types/lib/inventory/dosai.d.ts +130 -0
- package/types/lib/inventory/dosai.d.ts.map +1 -0
- package/types/lib/inventory/dosaiParsers.d.ts +59 -0
- package/types/lib/inventory/dosaiParsers.d.ts.map +1 -0
- package/types/lib/inventory/dynamic.d.ts +25 -0
- package/types/lib/inventory/dynamic.d.ts.map +1 -0
- package/types/lib/inventory/envcontext.d.ts +377 -0
- package/types/lib/inventory/envcontext.d.ts.map +1 -0
- package/types/lib/inventory/evidenceUtils.d.ts +74 -0
- package/types/lib/inventory/evidenceUtils.d.ts.map +1 -0
- package/types/lib/inventory/fetchBatch.d.ts +127 -0
- package/types/lib/inventory/fetchBatch.d.ts.map +1 -0
- package/types/lib/inventory/fetchRate.d.ts +118 -0
- package/types/lib/inventory/fetchRate.d.ts.map +1 -0
- package/types/lib/inventory/forgeEnricher.d.ts +31 -0
- package/types/lib/inventory/forgeEnricher.d.ts.map +1 -0
- package/types/lib/inventory/formulationParsers.d.ts +50 -0
- package/types/lib/inventory/formulationParsers.d.ts.map +1 -0
- package/types/lib/inventory/gtfobins.d.ts +27 -0
- package/types/lib/inventory/gtfobins.d.ts.map +1 -0
- package/types/lib/inventory/hbom.d.ts +58 -0
- package/types/lib/inventory/hbom.d.ts.map +1 -0
- package/types/lib/inventory/hbomAnalysis.d.ts +56 -0
- package/types/lib/inventory/hbomAnalysis.d.ts.map +1 -0
- package/types/lib/inventory/hbomLoader.d.ts +7 -0
- package/types/lib/inventory/hbomLoader.d.ts.map +1 -0
- package/types/lib/inventory/hostTopology.d.ts +47 -0
- package/types/lib/inventory/hostTopology.d.ts.map +1 -0
- package/types/lib/inventory/inventoryStats.d.ts +42 -0
- package/types/lib/inventory/inventoryStats.d.ts.map +1 -0
- package/types/lib/inventory/jsonLike.d.ts +23 -0
- package/types/lib/inventory/jsonLike.d.ts.map +1 -0
- package/types/lib/inventory/licenseEnhancer.d.ts +70 -0
- package/types/lib/inventory/licenseEnhancer.d.ts.map +1 -0
- package/types/lib/inventory/lolbas.d.ts +16 -0
- package/types/lib/inventory/lolbas.d.ts.map +1 -0
- package/types/lib/inventory/mcp.d.ts +29 -0
- package/types/lib/inventory/mcp.d.ts.map +1 -0
- package/types/lib/inventory/mcpConfigParser.d.ts +20 -0
- package/types/lib/inventory/mcpConfigParser.d.ts.map +1 -0
- package/types/lib/inventory/mcpDiscovery.d.ts +33 -0
- package/types/lib/inventory/mcpDiscovery.d.ts.map +1 -0
- package/types/lib/inventory/mcpPinning.d.ts +11 -0
- package/types/lib/inventory/mcpPinning.d.ts.map +1 -0
- package/types/lib/inventory/osPackageResolver.d.ts +49 -0
- package/types/lib/inventory/osPackageResolver.d.ts.map +1 -0
- package/types/lib/inventory/osinfo.d.ts +120 -0
- package/types/lib/inventory/osinfo.d.ts.map +1 -0
- package/types/lib/inventory/osqueryTransform.d.ts +84 -0
- package/types/lib/inventory/osqueryTransform.d.ts.map +1 -0
- package/types/lib/inventory/plugins.d.ts +58 -0
- package/types/lib/inventory/plugins.d.ts.map +1 -0
- package/types/lib/inventory/protobom.d.ts +71 -0
- package/types/lib/inventory/protobom.d.ts.map +1 -0
- package/types/lib/inventory/protobomLoader.d.ts +17 -0
- package/types/lib/inventory/protobomLoader.d.ts.map +1 -0
- package/types/lib/inventory/provenanceUtils.d.ts +98 -0
- package/types/lib/inventory/provenanceUtils.d.ts.map +1 -0
- package/types/lib/inventory/purl.d.ts +313 -0
- package/types/lib/inventory/purl.d.ts.map +1 -0
- package/types/lib/inventory/rustFormulationParser.d.ts +17 -0
- package/types/lib/inventory/rustFormulationParser.d.ts.map +1 -0
- package/types/lib/inventory/sbomDocument.d.ts +59 -0
- package/types/lib/inventory/sbomDocument.d.ts.map +1 -0
- package/types/lib/inventory/source.d.ts +163 -0
- package/types/lib/inventory/source.d.ts.map +1 -0
- package/types/lib/inventory/spdx.d.ts +66 -0
- package/types/lib/inventory/spdx.d.ts.map +1 -0
- package/types/lib/inventory/spdxExpression.d.ts +58 -0
- package/types/lib/inventory/spdxExpression.d.ts.map +1 -0
- package/types/lib/inventory/spdxUtils.d.ts +12 -0
- package/types/lib/inventory/spdxUtils.d.ts.map +1 -0
- package/types/lib/inventory/table.d.ts +19 -0
- package/types/lib/inventory/table.d.ts.map +1 -0
- package/types/lib/inventory/traceRunner.d.ts +80 -0
- package/types/lib/inventory/traceRunner.d.ts.map +1 -0
- package/types/lib/inventory/unicodeScan.d.ts +46 -0
- package/types/lib/inventory/unicodeScan.d.ts.map +1 -0
- package/types/lib/managers/binary.d.ts +76 -0
- package/types/lib/managers/binary.d.ts.map +1 -0
- package/types/lib/managers/containerutils.d.ts +30 -0
- package/types/lib/managers/containerutils.d.ts.map +1 -0
- package/types/lib/managers/docker.d.ts +157 -0
- package/types/lib/managers/docker.d.ts.map +1 -0
- package/types/lib/managers/dockerConnection.d.ts +42 -0
- package/types/lib/managers/dockerConnection.d.ts.map +1 -0
- package/types/lib/managers/oci.d.ts +21 -0
- package/types/lib/managers/oci.d.ts.map +1 -0
- package/types/lib/managers/piptree.d.ts +13 -0
- package/types/lib/managers/piptree.d.ts.map +1 -0
- package/types/lib/parsers/cmakeCache.d.ts +70 -0
- package/types/lib/parsers/cmakeCache.d.ts.map +1 -0
- package/types/lib/parsers/gguf.d.ts +39 -0
- package/types/lib/parsers/gguf.d.ts.map +1 -0
- package/types/lib/parsers/gitAiNotes.d.ts +15 -0
- package/types/lib/parsers/gitAiNotes.d.ts.map +1 -0
- package/types/lib/parsers/gitmodules.d.ts +88 -0
- package/types/lib/parsers/gitmodules.d.ts.map +1 -0
- package/types/lib/parsers/htmlExtract.d.ts +34 -0
- package/types/lib/parsers/htmlExtract.d.ts.map +1 -0
- package/types/lib/parsers/huggingfaceManifest.d.ts +153 -0
- package/types/lib/parsers/huggingfaceManifest.d.ts.map +1 -0
- package/types/lib/parsers/huggingfaceUtils.d.ts +155 -0
- package/types/lib/parsers/huggingfaceUtils.d.ts.map +1 -0
- package/types/lib/parsers/iri.d.ts +68 -0
- package/types/lib/parsers/iri.d.ts.map +1 -0
- package/types/lib/parsers/npmrc.d.ts +33 -0
- package/types/lib/parsers/npmrc.d.ts.map +1 -0
- package/types/lib/parsers/ollama.d.ts +22 -0
- package/types/lib/parsers/ollama.d.ts.map +1 -0
- package/types/lib/parsers/xml.d.ts +47 -0
- package/types/lib/parsers/xml.d.ts.map +1 -0
- package/types/lib/server/server.d.ts +51 -0
- package/types/lib/server/server.d.ts.map +1 -0
- package/types/lib/stages/postgen/annotator.d.ts +36 -0
- package/types/lib/stages/postgen/annotator.d.ts.map +1 -0
- package/types/lib/stages/postgen/auditBom.d.ts +92 -0
- package/types/lib/stages/postgen/auditBom.d.ts.map +1 -0
- package/types/lib/stages/postgen/postgen.d.ts +59 -0
- package/types/lib/stages/postgen/postgen.d.ts.map +1 -0
- package/types/lib/stages/postgen/ruleEngine.d.ts +18 -0
- package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -0
- package/types/lib/stages/postgen/sortBom.d.ts +34 -0
- package/types/lib/stages/postgen/sortBom.d.ts.map +1 -0
- package/types/lib/stages/postgen/spdxConverter.d.ts +11 -0
- package/types/lib/stages/postgen/spdxConverter.d.ts.map +1 -0
- package/types/lib/stages/postgen/specVersionCompat.d.ts +71 -0
- package/types/lib/stages/postgen/specVersionCompat.d.ts.map +1 -0
- package/types/lib/stages/pregen/envAudit.d.ts +14 -0
- package/types/lib/stages/pregen/envAudit.d.ts.map +1 -0
- package/types/lib/stages/pregen/pregen.d.ts +59 -0
- package/types/lib/stages/pregen/pregen.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/arborist/index.d.ts +47 -0
- package/types/lib/third-party/arborist/lib/arborist/index.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts +4 -0
- package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts +4 -0
- package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/bin-links.d.ts +18 -0
- package/types/lib/third-party/arborist/lib/bin-links.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts +9 -0
- package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/debug.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/debug.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/dep-valid.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/dep-valid.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/edge.d.ts +46 -0
- package/types/lib/third-party/arborist/lib/edge.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/from-path.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/from-path.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/index.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/index.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/inventory.d.ts +14 -0
- package/types/lib/third-party/arborist/lib/inventory.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/link.d.ts +18 -0
- package/types/lib/third-party/arborist/lib/link.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/node.d.ts +112 -0
- package/types/lib/third-party/arborist/lib/node.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/npm-extension.d.ts +18 -0
- package/types/lib/third-party/arborist/lib/npm-extension.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/override-resolves.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/override-resolves.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/override-set.d.ts +27 -0
- package/types/lib/third-party/arborist/lib/override-set.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/package-extensions.d.ts +36 -0
- package/types/lib/third-party/arborist/lib/package-extensions.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/printable.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/printable.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/proc-log.d.ts +20 -0
- package/types/lib/third-party/arborist/lib/proc-log.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/realpath.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/realpath.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/relpath.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/relpath.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts +54 -0
- package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/tree-check.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/tree-check.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts +13 -0
- package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts +6 -0
- package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/yarn-lock.d.ts +35 -0
- package/types/lib/third-party/arborist/lib/yarn-lock.d.ts.map +1 -0
- package/types/lib/validator/bomValidator.d.ts +40 -0
- package/types/lib/validator/bomValidator.d.ts.map +1 -0
- package/types/lib/validator/complianceEngine.d.ts +72 -0
- package/types/lib/validator/complianceEngine.d.ts.map +1 -0
- package/types/lib/validator/complianceRules.d.ts +61 -0
- package/types/lib/validator/complianceRules.d.ts.map +1 -0
- package/types/lib/validator/index.d.ts +101 -0
- package/types/lib/validator/index.d.ts.map +1 -0
- package/types/lib/validator/reporters/annotations.d.ts +37 -0
- package/types/lib/validator/reporters/annotations.d.ts.map +1 -0
- package/types/lib/validator/reporters/console.d.ts +34 -0
- package/types/lib/validator/reporters/console.d.ts.map +1 -0
- package/types/lib/validator/reporters/index.d.ts +30 -0
- package/types/lib/validator/reporters/index.d.ts.map +1 -0
- package/types/lib/validator/reporters/json.d.ts +11 -0
- package/types/lib/validator/reporters/json.d.ts.map +1 -0
- package/types/lib/validator/reporters/sarif.d.ts +22 -0
- package/types/lib/validator/reporters/sarif.d.ts.map +1 -0
- package/mod.d.ts +0 -7
- package/mod.js +0 -22
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
- id: CTR-001
|
|
2
|
+
name: "Container image ships setuid/setgid GTFOBins execution primitive"
|
|
3
|
+
description: "Known GTFOBins execution helpers become materially riskier when the image keeps the binary setuid or setgid."
|
|
4
|
+
severity: critical
|
|
5
|
+
category: container-risk
|
|
6
|
+
dry-run-support: full
|
|
7
|
+
condition: |
|
|
8
|
+
components[
|
|
9
|
+
$prop($, 'cdx:gtfobins:matched') = 'true'
|
|
10
|
+
and (
|
|
11
|
+
$listContains($prop($, 'cdx:gtfobins:functions'), 'shell')
|
|
12
|
+
or $listContains($prop($, 'cdx:gtfobins:functions'), 'command')
|
|
13
|
+
or $listContains($prop($, 'cdx:gtfobins:functions'), 'reverse-shell')
|
|
14
|
+
or $listContains($prop($, 'cdx:gtfobins:functions'), 'bind-shell')
|
|
15
|
+
)
|
|
16
|
+
and (
|
|
17
|
+
$prop($, 'internal:has_setuid') = 'true'
|
|
18
|
+
or $prop($, 'internal:has_setgid') = 'true'
|
|
19
|
+
)
|
|
20
|
+
]
|
|
21
|
+
location: |
|
|
22
|
+
{
|
|
23
|
+
"bomRef": $."bom-ref",
|
|
24
|
+
"purl": purl,
|
|
25
|
+
"file": $prop($, 'internal:SrcFile')
|
|
26
|
+
}
|
|
27
|
+
message: "Executable '{{ name }}' at '{{ $prop($, 'internal:SrcFile') }}' combines GTFOBins execution features with setuid/setgid permissions"
|
|
28
|
+
mitigation: "Remove the setuid/setgid bit, replace the image with a slimmer base, and keep container privilege boundaries strict (no host mounts, no privileged mode, no extra capabilities)."
|
|
29
|
+
attack:
|
|
30
|
+
tactics: [TA0004]
|
|
31
|
+
techniques: [T1548, T1611]
|
|
32
|
+
evidence: |
|
|
33
|
+
{
|
|
34
|
+
"canonicalName": $prop($, 'cdx:gtfobins:name'),
|
|
35
|
+
"functions": $prop($, 'cdx:gtfobins:functions'),
|
|
36
|
+
"contexts": $prop($, 'cdx:gtfobins:contexts'),
|
|
37
|
+
"riskTags": $prop($, 'cdx:gtfobins:riskTags'),
|
|
38
|
+
"srcFile": $prop($, 'internal:SrcFile'),
|
|
39
|
+
"reference": $prop($, 'cdx:gtfobins:reference')
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
- id: CTR-002
|
|
43
|
+
name: "Container image includes privileged container-escape helper"
|
|
44
|
+
description: "Container runtime or namespace-management helpers that are already classified as GTFOBins can accelerate container breakout when runtime isolation is weakened."
|
|
45
|
+
severity: critical
|
|
46
|
+
category: container-risk
|
|
47
|
+
dry-run-support: full
|
|
48
|
+
condition: |
|
|
49
|
+
components[
|
|
50
|
+
$prop($, 'cdx:gtfobins:matched') = 'true'
|
|
51
|
+
and $listContains($prop($, 'cdx:gtfobins:riskTags'), 'container-escape')
|
|
52
|
+
and (
|
|
53
|
+
$prop($, 'internal:has_setuid') = 'true'
|
|
54
|
+
or $prop($, 'internal:has_setgid') = 'true'
|
|
55
|
+
or $listContains($prop($, 'cdx:gtfobins:privilegedContexts'), 'capabilities')
|
|
56
|
+
)
|
|
57
|
+
]
|
|
58
|
+
location: |
|
|
59
|
+
{
|
|
60
|
+
"bomRef": $."bom-ref",
|
|
61
|
+
"purl": purl,
|
|
62
|
+
"file": $prop($, 'internal:SrcFile')
|
|
63
|
+
}
|
|
64
|
+
message: "Container-escape helper '{{ name }}' is present at '{{ $prop($, 'internal:SrcFile') }}' with elevated execution semantics"
|
|
65
|
+
mitigation: "Remove container runtime and namespace-management tooling from application images, avoid CAP_SYS_ADMIN-like capability grants, and block access to the Docker/containerd sockets."
|
|
66
|
+
attack:
|
|
67
|
+
tactics: [TA0004]
|
|
68
|
+
techniques: [T1611]
|
|
69
|
+
evidence: |
|
|
70
|
+
{
|
|
71
|
+
"canonicalName": $prop($, 'cdx:gtfobins:name'),
|
|
72
|
+
"privilegedContexts": $prop($, 'cdx:gtfobins:privilegedContexts'),
|
|
73
|
+
"riskTags": $prop($, 'cdx:gtfobins:riskTags'),
|
|
74
|
+
"srcFile": $prop($, 'internal:SrcFile')
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
- id: CTR-003
|
|
78
|
+
name: "Container image includes privileged GTFOBins library-load or escalation primitive"
|
|
79
|
+
description: "GTFOBins entries that can load attacker-controlled shared libraries or directly escalate privileges are strong hardening failures in container images."
|
|
80
|
+
severity: high
|
|
81
|
+
category: container-risk
|
|
82
|
+
dry-run-support: full
|
|
83
|
+
condition: |
|
|
84
|
+
components[
|
|
85
|
+
$prop($, 'cdx:gtfobins:matched') = 'true'
|
|
86
|
+
and (
|
|
87
|
+
$listContains($prop($, 'cdx:gtfobins:functions'), 'library-load')
|
|
88
|
+
or $listContains($prop($, 'cdx:gtfobins:functions'), 'privilege-escalation')
|
|
89
|
+
)
|
|
90
|
+
and (
|
|
91
|
+
$prop($, 'internal:has_setuid') = 'true'
|
|
92
|
+
or $prop($, 'internal:has_setgid') = 'true'
|
|
93
|
+
or $listContains($prop($, 'cdx:gtfobins:privilegedContexts'), 'sudo')
|
|
94
|
+
or $listContains($prop($, 'cdx:gtfobins:privilegedContexts'), 'suid')
|
|
95
|
+
or $listContains($prop($, 'cdx:gtfobins:privilegedContexts'), 'capabilities')
|
|
96
|
+
)
|
|
97
|
+
]
|
|
98
|
+
location: |
|
|
99
|
+
{
|
|
100
|
+
"bomRef": $."bom-ref",
|
|
101
|
+
"purl": purl,
|
|
102
|
+
"file": $prop($, 'internal:SrcFile')
|
|
103
|
+
}
|
|
104
|
+
message: "Binary '{{ name }}' exposes GTFOBins privilege-escalation or library-load behavior in a privileged execution context"
|
|
105
|
+
mitigation: "Remove the helper from the image where possible, strip privileged bits/capabilities, and keep writable mounts away from privileged processes."
|
|
106
|
+
attack:
|
|
107
|
+
tactics: [TA0002, TA0004, TA0005]
|
|
108
|
+
techniques: [T1574, T1548]
|
|
109
|
+
evidence: |
|
|
110
|
+
{
|
|
111
|
+
"canonicalName": $prop($, 'cdx:gtfobins:name'),
|
|
112
|
+
"functions": $prop($, 'cdx:gtfobins:functions'),
|
|
113
|
+
"privilegedContexts": $prop($, 'cdx:gtfobins:privilegedContexts'),
|
|
114
|
+
"srcFile": $prop($, 'internal:SrcFile')
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
- id: CTR-004
|
|
118
|
+
name: "Container image retains privileged GTFOBins exfiltration primitive"
|
|
119
|
+
description: "A GTFOBins helper that can read local files or upload data becomes especially dangerous when it also runs with setuid/setgid or other elevated contexts."
|
|
120
|
+
severity: high
|
|
121
|
+
category: container-risk
|
|
122
|
+
dry-run-support: full
|
|
123
|
+
condition: |
|
|
124
|
+
components[
|
|
125
|
+
$prop($, 'cdx:gtfobins:matched') = 'true'
|
|
126
|
+
and (
|
|
127
|
+
$listContains($prop($, 'cdx:gtfobins:riskTags'), 'data-exfiltration')
|
|
128
|
+
or $listContains($prop($, 'cdx:gtfobins:functions'), 'upload')
|
|
129
|
+
)
|
|
130
|
+
and (
|
|
131
|
+
$prop($, 'internal:has_setuid') = 'true'
|
|
132
|
+
or $prop($, 'internal:has_setgid') = 'true'
|
|
133
|
+
or $listContains($prop($, 'cdx:gtfobins:privilegedContexts'), 'sudo')
|
|
134
|
+
or $listContains($prop($, 'cdx:gtfobins:privilegedContexts'), 'suid')
|
|
135
|
+
or $listContains($prop($, 'cdx:gtfobins:privilegedContexts'), 'capabilities')
|
|
136
|
+
)
|
|
137
|
+
]
|
|
138
|
+
location: |
|
|
139
|
+
{
|
|
140
|
+
"bomRef": $."bom-ref",
|
|
141
|
+
"purl": purl,
|
|
142
|
+
"file": $prop($, 'internal:SrcFile')
|
|
143
|
+
}
|
|
144
|
+
message: "Binary '{{ name }}' can read or exfiltrate local data from a privileged execution path"
|
|
145
|
+
mitigation: "Drop privileged bits, keep secrets off the image filesystem, and remove unnecessary upload/file-read helpers from runtime images."
|
|
146
|
+
attack:
|
|
147
|
+
tactics: [TA0009, TA0010]
|
|
148
|
+
techniques: [T1005, T1041]
|
|
149
|
+
evidence: |
|
|
150
|
+
{
|
|
151
|
+
"canonicalName": $prop($, 'cdx:gtfobins:name'),
|
|
152
|
+
"functions": $prop($, 'cdx:gtfobins:functions'),
|
|
153
|
+
"privilegedContexts": $prop($, 'cdx:gtfobins:privilegedContexts'),
|
|
154
|
+
"srcFile": $prop($, 'internal:SrcFile')
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
- id: CTR-005
|
|
158
|
+
name: "Container image includes mutable-path GTFOBins remote-execution helper"
|
|
159
|
+
description: "Remote-execution-capable GTFOBins helpers under mutable or non-standard image paths often indicate an avoidable attack toolkit or image tampering."
|
|
160
|
+
severity: medium
|
|
161
|
+
category: container-risk
|
|
162
|
+
dry-run-support: full
|
|
163
|
+
condition: |
|
|
164
|
+
components[
|
|
165
|
+
$prop($, 'cdx:gtfobins:matched') = 'true'
|
|
166
|
+
and (
|
|
167
|
+
$listContains($prop($, 'cdx:gtfobins:functions'), 'reverse-shell')
|
|
168
|
+
or $listContains($prop($, 'cdx:gtfobins:functions'), 'bind-shell')
|
|
169
|
+
or (
|
|
170
|
+
(
|
|
171
|
+
$listContains($prop($, 'cdx:gtfobins:functions'), 'shell')
|
|
172
|
+
or $listContains($prop($, 'cdx:gtfobins:functions'), 'command')
|
|
173
|
+
)
|
|
174
|
+
and (
|
|
175
|
+
$listContains($prop($, 'cdx:gtfobins:functions'), 'upload')
|
|
176
|
+
or $listContains($prop($, 'cdx:gtfobins:functions'), 'download')
|
|
177
|
+
)
|
|
178
|
+
)
|
|
179
|
+
)
|
|
180
|
+
and (
|
|
181
|
+
$startsWith($prop($, 'internal:SrcFile'), '/usr/local/')
|
|
182
|
+
or $startsWith($prop($, 'internal:SrcFile'), '/opt/')
|
|
183
|
+
or $startsWith($prop($, 'internal:SrcFile'), '/app/')
|
|
184
|
+
or $startsWith($prop($, 'internal:SrcFile'), '/tmp/')
|
|
185
|
+
or $startsWith($prop($, 'internal:SrcFile'), '/var/tmp/')
|
|
186
|
+
or $startsWith($prop($, 'internal:SrcFile'), '/root/')
|
|
187
|
+
or $startsWith($prop($, 'internal:SrcFile'), '/home/')
|
|
188
|
+
)
|
|
189
|
+
]
|
|
190
|
+
location: |
|
|
191
|
+
{
|
|
192
|
+
"bomRef": $."bom-ref",
|
|
193
|
+
"purl": purl,
|
|
194
|
+
"file": $prop($, 'internal:SrcFile')
|
|
195
|
+
}
|
|
196
|
+
message: "GTFOBins remote-execution helper '{{ name }}' is present in mutable image path '{{ $prop($, 'internal:SrcFile') }}'"
|
|
197
|
+
mitigation: "Keep runtime images immutable and minimal, move administrative tooling to separate debug images, and investigate how the helper entered the image."
|
|
198
|
+
attack:
|
|
199
|
+
tactics: [TA0008, TA0011]
|
|
200
|
+
techniques: [T1105, T1570]
|
|
201
|
+
evidence: |
|
|
202
|
+
{
|
|
203
|
+
"canonicalName": $prop($, 'cdx:gtfobins:name'),
|
|
204
|
+
"functions": $prop($, 'cdx:gtfobins:functions'),
|
|
205
|
+
"riskTags": $prop($, 'cdx:gtfobins:riskTags'),
|
|
206
|
+
"srcFile": $prop($, 'internal:SrcFile')
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
- id: CTR-006
|
|
210
|
+
name: "Container image ships dedicated offensive container toolkit"
|
|
211
|
+
description: "Dedicated container or Kubernetes intrusion toolkits such as Peirates, CDK, or DEEPCE should not ship inside production runtime images."
|
|
212
|
+
severity: high
|
|
213
|
+
category: container-risk
|
|
214
|
+
dry-run-support: full
|
|
215
|
+
condition: |
|
|
216
|
+
components[
|
|
217
|
+
$prop($, 'cdx:container:matched') = 'true'
|
|
218
|
+
and $listContains($prop($, 'cdx:container:riskTags'), 'offensive-toolkit')
|
|
219
|
+
]
|
|
220
|
+
location: |
|
|
221
|
+
{
|
|
222
|
+
"bomRef": $."bom-ref",
|
|
223
|
+
"purl": purl,
|
|
224
|
+
"file": $prop($, 'internal:SrcFile')
|
|
225
|
+
}
|
|
226
|
+
message: "Dedicated offensive toolkit '{{ name }}' is present at '{{ $prop($, 'internal:SrcFile') }}'"
|
|
227
|
+
mitigation: "Remove offensive testing binaries from runtime images, rebuild from a minimal trusted base, and keep container debugging or red-team tooling in separate break-glass images."
|
|
228
|
+
attack:
|
|
229
|
+
tactics: [TA0002, TA0004, TA0006, TA0007]
|
|
230
|
+
techniques: [T1552.007, T1609, T1611, T1613]
|
|
231
|
+
evidence: |
|
|
232
|
+
{
|
|
233
|
+
"canonicalName": $prop($, 'cdx:container:name'),
|
|
234
|
+
"offenseTools": $prop($, 'cdx:container:offenseTools'),
|
|
235
|
+
"riskTags": $prop($, 'cdx:container:riskTags'),
|
|
236
|
+
"attackTechniques": $prop($, 'cdx:container:attackTechniques'),
|
|
237
|
+
"knowledgeSources": $prop($, 'cdx:container:knowledgeSources'),
|
|
238
|
+
"srcFile": $prop($, 'internal:SrcFile')
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
- id: CTR-007
|
|
242
|
+
name: "Container image includes seccomp-sensitive namespace escape helper"
|
|
243
|
+
description: "Helpers that rely on syscalls blocked by Docker's default seccomp profile become materially riskier when operators use `seccomp=unconfined` or permissive custom profiles."
|
|
244
|
+
severity: medium
|
|
245
|
+
category: container-risk
|
|
246
|
+
dry-run-support: full
|
|
247
|
+
condition: |
|
|
248
|
+
components[
|
|
249
|
+
$prop($, 'cdx:container:matched') = 'true'
|
|
250
|
+
and $prop($, 'cdx:container:seccompProfile') = 'docker-default'
|
|
251
|
+
and $prop($, 'cdx:container:seccompBlockedSyscalls') != ''
|
|
252
|
+
and (
|
|
253
|
+
$listContains($prop($, 'cdx:container:riskTags'), 'container-escape')
|
|
254
|
+
or $listContains($prop($, 'cdx:container:riskTags'), 'namespace-escape')
|
|
255
|
+
)
|
|
256
|
+
]
|
|
257
|
+
location: |
|
|
258
|
+
{
|
|
259
|
+
"bomRef": $."bom-ref",
|
|
260
|
+
"purl": purl,
|
|
261
|
+
"file": $prop($, 'internal:SrcFile')
|
|
262
|
+
}
|
|
263
|
+
message: "Seccomp-sensitive escape helper '{{ name }}' is present at '{{ $prop($, 'internal:SrcFile') }}' and depends on syscalls blocked by the Docker default seccomp profile"
|
|
264
|
+
mitigation: "Keep Docker or OCI runtimes on the default seccomp profile, never use `seccomp=unconfined` for app workloads, and review custom profiles so they do not allow namespace or host-escape syscalls without a clear need."
|
|
265
|
+
attack:
|
|
266
|
+
tactics: [TA0004]
|
|
267
|
+
techniques: [T1611]
|
|
268
|
+
evidence: |
|
|
269
|
+
{
|
|
270
|
+
"canonicalName": $prop($, 'cdx:container:name'),
|
|
271
|
+
"offenseTools": $prop($, 'cdx:container:offenseTools'),
|
|
272
|
+
"riskTags": $prop($, 'cdx:container:riskTags'),
|
|
273
|
+
"seccompProfile": $prop($, 'cdx:container:seccompProfile'),
|
|
274
|
+
"seccompBlockedSyscalls": $prop($, 'cdx:container:seccompBlockedSyscalls'),
|
|
275
|
+
"knowledgeSources": $prop($, 'cdx:container:knowledgeSources'),
|
|
276
|
+
"srcFile": $prop($, 'internal:SrcFile')
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
- id: CTR-008
|
|
280
|
+
name: "Container dependency relies on the mutable 'latest' tag"
|
|
281
|
+
description: "Using the 'latest' tag for container image dependencies undermines supply chain reproducibility and makes SBOM attestations fragile since the underlying image can change without notice."
|
|
282
|
+
severity: medium
|
|
283
|
+
category: container-risk
|
|
284
|
+
dry-run-support: full
|
|
285
|
+
condition: |
|
|
286
|
+
components[
|
|
287
|
+
type = 'container'
|
|
288
|
+
and (
|
|
289
|
+
$contains(name, ':latest') or $contains(version, 'latest') or $not($exists(version)) or version = ''
|
|
290
|
+
)
|
|
291
|
+
]
|
|
292
|
+
location: |
|
|
293
|
+
{
|
|
294
|
+
"bomRef": $."bom-ref",
|
|
295
|
+
"purl": purl
|
|
296
|
+
}
|
|
297
|
+
message: "Container component '{{ name }}' uses the mutable 'latest' tag or lacks a pinned version"
|
|
298
|
+
mitigation: "Pin the container dependency to a specific immutable digest (e.g., using @sha256:...) or a stable release tag to ensure reproducibility and reliable attestations."
|
|
299
|
+
evidence: |
|
|
300
|
+
{
|
|
301
|
+
"name": name,
|
|
302
|
+
"version": version,
|
|
303
|
+
"purl": purl
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
- id: CTR-009
|
|
307
|
+
name: "Container dependency lacks attached SBOM"
|
|
308
|
+
description: "Container dependencies should have an attached SBOM (attestation) in the container registry to verify their software bill of materials."
|
|
309
|
+
severity: medium
|
|
310
|
+
category: container-risk
|
|
311
|
+
dry-run-support: full
|
|
312
|
+
condition: |
|
|
313
|
+
components[
|
|
314
|
+
type = 'container'
|
|
315
|
+
and $not($hasSbom($))
|
|
316
|
+
]
|
|
317
|
+
location: |
|
|
318
|
+
{
|
|
319
|
+
"bomRef": $."bom-ref",
|
|
320
|
+
"purl": purl
|
|
321
|
+
}
|
|
322
|
+
message: "Container component '{{ name }}' lacks an attached SBOM in the registry"
|
|
323
|
+
mitigation: "Generate an SBOM and attach it to the container image using the attach feature (cdx-sign --attach)."
|
|
324
|
+
evidence: |
|
|
325
|
+
{
|
|
326
|
+
"name": name,
|
|
327
|
+
"purl": purl
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
- id: CTR-010
|
|
331
|
+
name: "Container dependency lacks signed SBOM attestation"
|
|
332
|
+
description: "Container dependencies should have a cryptographically signed SBOM attestation in the container registry to ensure authenticity and integrity."
|
|
333
|
+
severity: medium
|
|
334
|
+
category: container-risk
|
|
335
|
+
dry-run-support: full
|
|
336
|
+
condition: |
|
|
337
|
+
components[
|
|
338
|
+
type = 'container'
|
|
339
|
+
and $hasSbom($)
|
|
340
|
+
and $not($hasSignedSbom($))
|
|
341
|
+
]
|
|
342
|
+
location: |
|
|
343
|
+
{
|
|
344
|
+
"bomRef": $."bom-ref",
|
|
345
|
+
"purl": purl
|
|
346
|
+
}
|
|
347
|
+
message: "Container component '{{ name }}' lacks a signed SBOM attestation in the registry"
|
|
348
|
+
mitigation: "Sign the container SBOM using a private key and attach the signed version to the registry (cdx-sign -k private.key --attach <tag>)."
|
|
349
|
+
evidence: |
|
|
350
|
+
{
|
|
351
|
+
"name": name,
|
|
352
|
+
"purl": purl
|
|
353
|
+
}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# Dependency Source Integrity Rules
|
|
2
|
+
# Category: dependency-source
|
|
3
|
+
# Evaluates package manager data for non-registry, local, or mutable sources
|
|
4
|
+
- id: PKG-001
|
|
5
|
+
name: "Install script from direct manifest source"
|
|
6
|
+
description: "npm packages with install scripts declared from git, URL, or local path sources in the manifest increase supply chain attack surface"
|
|
7
|
+
severity: high
|
|
8
|
+
category: dependency-source
|
|
9
|
+
dry-run-support: full
|
|
10
|
+
condition: |
|
|
11
|
+
components[
|
|
12
|
+
$prop($, 'cdx:npm:hasInstallScript') = 'true'
|
|
13
|
+
and $hasProp($, 'cdx:npm:manifestSourceType')
|
|
14
|
+
]
|
|
15
|
+
location: |
|
|
16
|
+
{ "bomRef": $."bom-ref", "purl": purl }
|
|
17
|
+
message: "npm package '{{ name }}@{{ version }}' executes install script from manifest-declared source type(s): {{ $prop($, 'cdx:npm:manifestSourceType') }}"
|
|
18
|
+
mitigation: "Avoid git, URL, or local-path dependencies with lifecycle hooks; use registry-published dependencies or vendor explicitly"
|
|
19
|
+
evidence: |
|
|
20
|
+
{
|
|
21
|
+
"manifestSourceType": $prop($, 'cdx:npm:manifestSourceType'),
|
|
22
|
+
"manifestSource": $prop($, 'cdx:npm:manifestSource'),
|
|
23
|
+
"riskyScripts": $prop($, 'cdx:npm:risky_scripts'),
|
|
24
|
+
"resolvedPath": $prop($, 'cdx:npm:resolvedPath'),
|
|
25
|
+
"isLink": $prop($, 'cdx:npm:isLink')
|
|
26
|
+
}
|
|
27
|
+
- id: PKG-002
|
|
28
|
+
name: "Go module uses local replacement"
|
|
29
|
+
description: "Go modules with local_dir replacements are non-hermetic and may not be reproducible"
|
|
30
|
+
severity: high
|
|
31
|
+
category: dependency-source
|
|
32
|
+
dry-run-support: full
|
|
33
|
+
condition: |
|
|
34
|
+
components[
|
|
35
|
+
$hasProp($, 'cdx:go:local_dir')
|
|
36
|
+
]
|
|
37
|
+
location: |
|
|
38
|
+
{ "bomRef": $."bom-ref", "purl": purl }
|
|
39
|
+
message: "Go module '{{ name }}' uses local replacement: {{ $prop($, 'cdx:go:local_dir') }}"
|
|
40
|
+
mitigation: "Use published module versions or vendor dependencies explicitly for reproducible builds"
|
|
41
|
+
evidence: |
|
|
42
|
+
{
|
|
43
|
+
"localDir": $prop($, 'cdx:go:local_dir'),
|
|
44
|
+
"toolchain": $prop($, 'cdx:go:toolchain')
|
|
45
|
+
}
|
|
46
|
+
- id: PKG-003
|
|
47
|
+
name: "Swift local checkout in build"
|
|
48
|
+
description: "Swift packages with localCheckoutPath indicate developer-only dependencies not suitable for release"
|
|
49
|
+
severity: high
|
|
50
|
+
category: dependency-source
|
|
51
|
+
dry-run-support: full
|
|
52
|
+
condition: |
|
|
53
|
+
components[
|
|
54
|
+
$hasProp($, 'cdx:swift:localCheckoutPath')
|
|
55
|
+
]
|
|
56
|
+
location: |
|
|
57
|
+
{ "bomRef": $."bom-ref", "purl": purl }
|
|
58
|
+
message: "Swift package '{{ name }}' uses local checkout: {{ $prop($, 'cdx:swift:localCheckoutPath') }}"
|
|
59
|
+
mitigation: "Use remote package references (URL or registry) for release artifacts"
|
|
60
|
+
evidence: |
|
|
61
|
+
{
|
|
62
|
+
"checkoutPath": $prop($, 'cdx:swift:localCheckoutPath'),
|
|
63
|
+
"packageName": $prop($, 'cdx:swift:packageName')
|
|
64
|
+
}
|
|
65
|
+
- id: PKG-004
|
|
66
|
+
name: "Nix flake missing reproducibility metadata"
|
|
67
|
+
description: "Nix dependencies without revision or nar_hash cannot be verified for content integrity"
|
|
68
|
+
severity: high
|
|
69
|
+
category: dependency-source
|
|
70
|
+
dry-run-support: full
|
|
71
|
+
condition: |
|
|
72
|
+
components[
|
|
73
|
+
$startsWith(purl, 'pkg:nix/')
|
|
74
|
+
and (
|
|
75
|
+
$prop($, 'cdx:nix:revision') = null
|
|
76
|
+
or $prop($, 'cdx:nix:nar_hash') = null
|
|
77
|
+
)
|
|
78
|
+
]
|
|
79
|
+
location: |
|
|
80
|
+
{ "bomRef": $."bom-ref", "purl": purl }
|
|
81
|
+
message: "Nix package '{{ name }}' missing reproducibility metadata (revision or nar_hash)"
|
|
82
|
+
mitigation: "Ensure flake.lock includes both revision and nar_hash for content-addressed reproducibility"
|
|
83
|
+
evidence: |
|
|
84
|
+
{
|
|
85
|
+
"inputUrl": $prop($, 'cdx:nix:input_url'),
|
|
86
|
+
"ref": $prop($, 'cdx:nix:ref'),
|
|
87
|
+
"hasRevision": $hasProp($, 'cdx:nix:revision'),
|
|
88
|
+
"hasNarHash": $hasProp($, 'cdx:nix:nar_hash')
|
|
89
|
+
}
|
|
90
|
+
- id: PKG-005
|
|
91
|
+
name: "Ruby gem tracks mutable branch"
|
|
92
|
+
description: "Ruby gems sourced from a git branch move whenever the branch moves. Bundler records the currently resolved revision in Gemfile.lock, but the Gemfile still asks for a branch, so the next bundle update will silently pull different code"
|
|
93
|
+
severity: medium
|
|
94
|
+
category: dependency-source
|
|
95
|
+
dry-run-support: full
|
|
96
|
+
condition: |
|
|
97
|
+
components[
|
|
98
|
+
$hasProp($, 'cdx:gem:remoteBranch')
|
|
99
|
+
and $hasProp($, 'cdx:gem:remoteRevision')
|
|
100
|
+
]
|
|
101
|
+
location: |
|
|
102
|
+
{ "bomRef": $."bom-ref", "purl": purl }
|
|
103
|
+
message: "Ruby gem '{{ name }}' tracks the mutable branch '{{ $prop($, 'cdx:gem:remoteBranch') }}', currently resolved to revision {{ $prop($, 'cdx:gem:remoteRevision') }}"
|
|
104
|
+
mitigation: "Pin to a specific revision in the Gemfile: gem 'foo', git: '...', ref: '<commit-sha>'"
|
|
105
|
+
evidence: |
|
|
106
|
+
{
|
|
107
|
+
"remote": $prop($, 'cdx:gem:remote'),
|
|
108
|
+
"branch": $prop($, 'cdx:gem:remoteBranch'),
|
|
109
|
+
"revision": $prop($, 'cdx:gem:remoteRevision'),
|
|
110
|
+
"tag": $prop($, 'cdx:gem:remoteTag')
|
|
111
|
+
}
|
|
112
|
+
- id: PKG-006
|
|
113
|
+
name: "Python dependency from non-approved registry"
|
|
114
|
+
description: "PyPI packages from unapproved registries may introduce unvetted code"
|
|
115
|
+
severity: low
|
|
116
|
+
category: dependency-source
|
|
117
|
+
dry-run-support: full
|
|
118
|
+
condition: |
|
|
119
|
+
components[
|
|
120
|
+
$hasProp($, 'cdx:pypi:registry')
|
|
121
|
+
and $prop($, 'cdx:pypi:registry') != 'https://pypi.org/simple'
|
|
122
|
+
and $prop($, 'cdx:pypi:registry') != 'https://pypi.org'
|
|
123
|
+
]
|
|
124
|
+
location: |
|
|
125
|
+
{ "bomRef": $."bom-ref", "purl": purl }
|
|
126
|
+
message: "Python package '{{ name }}' sourced from non-default registry: {{ $prop($, 'cdx:pypi:registry') }}"
|
|
127
|
+
mitigation: "Verify registry trustworthiness"
|
|
128
|
+
evidence: |
|
|
129
|
+
{
|
|
130
|
+
"registry": $prop($, 'cdx:pypi:registry'),
|
|
131
|
+
"resolvedFrom": $prop($, 'cdx:pypi:resolved_from')
|
|
132
|
+
}
|
|
133
|
+
- id: PKG-007
|
|
134
|
+
name: "Cargo dependency from mutable git source"
|
|
135
|
+
description: "Cargo git dependencies without revision or tag pinning can change unexpectedly and reduce build reproducibility"
|
|
136
|
+
severity: high
|
|
137
|
+
category: dependency-source
|
|
138
|
+
dry-run-support: full
|
|
139
|
+
condition: |
|
|
140
|
+
components[
|
|
141
|
+
$hasProp($, 'cdx:cargo:git')
|
|
142
|
+
and $prop($, 'cdx:cargo:gitRev') = null
|
|
143
|
+
and $prop($, 'cdx:cargo:gitTag') = null
|
|
144
|
+
]
|
|
145
|
+
location: |
|
|
146
|
+
{ "bomRef": $."bom-ref", "purl": purl }
|
|
147
|
+
message: "Cargo dependency '{{ name }}@{{ version }}' tracks git source '{{ $prop($, 'cdx:cargo:git') }}' without an immutable revision pin"
|
|
148
|
+
mitigation: "Prefer crates.io releases or pin git dependencies with `rev = \"<commit-sha>\"` or a signed, reviewed tag"
|
|
149
|
+
evidence: |
|
|
150
|
+
{
|
|
151
|
+
"git": $prop($, 'cdx:cargo:git'),
|
|
152
|
+
"branch": $prop($, 'cdx:cargo:gitBranch'),
|
|
153
|
+
"tag": $prop($, 'cdx:cargo:gitTag'),
|
|
154
|
+
"dependencyKind": $prop($, 'cdx:cargo:dependencyKind')
|
|
155
|
+
}
|
|
156
|
+
- id: PKG-008
|
|
157
|
+
name: "Cargo dependency from local path"
|
|
158
|
+
description: "Cargo path dependencies are local source references that reduce release reproducibility and may bypass registry review controls"
|
|
159
|
+
severity: high
|
|
160
|
+
category: dependency-source
|
|
161
|
+
dry-run-support: full
|
|
162
|
+
condition: |
|
|
163
|
+
components[
|
|
164
|
+
$hasProp($, 'cdx:cargo:path')
|
|
165
|
+
]
|
|
166
|
+
location: |
|
|
167
|
+
{ "bomRef": $."bom-ref", "purl": purl }
|
|
168
|
+
message: "Cargo dependency '{{ name }}@{{ version }}' uses local path source '{{ $prop($, 'cdx:cargo:path') }}'"
|
|
169
|
+
mitigation: "Use published crate versions for release builds or vendor the dependency explicitly with clear provenance review"
|
|
170
|
+
evidence: |
|
|
171
|
+
{
|
|
172
|
+
"path": $prop($, 'cdx:cargo:path'),
|
|
173
|
+
"dependencyKind": $prop($, 'cdx:cargo:dependencyKind'),
|
|
174
|
+
"target": $prop($, 'cdx:cargo:target')
|
|
175
|
+
}
|
|
176
|
+
- id: PKG-009
|
|
177
|
+
name: "Collider package resolved from insecure HTTP origin"
|
|
178
|
+
description: "Collider lock entries that resolve from HTTP origins can be observed or modified in transit before wrap-hash verification occurs"
|
|
179
|
+
severity: medium
|
|
180
|
+
category: dependency-source
|
|
181
|
+
dry-run-support: full
|
|
182
|
+
condition: |
|
|
183
|
+
components[
|
|
184
|
+
$prop($, 'cdx:collider:originScheme') = 'http'
|
|
185
|
+
]
|
|
186
|
+
location: |
|
|
187
|
+
{ "bomRef": $."bom-ref", "purl": purl }
|
|
188
|
+
message: "Collider package '{{ name }}@{{ version }}' resolves from insecure origin '{{ $prop($, 'cdx:collider:origin') }}'"
|
|
189
|
+
mitigation: "Prefer HTTPS, trusted file:// repositories, or an authenticated internal mirror for Collider package origins"
|
|
190
|
+
evidence: |
|
|
191
|
+
{
|
|
192
|
+
"origin": $prop($, 'cdx:collider:origin'),
|
|
193
|
+
"originHost": $prop($, 'cdx:collider:originHost'),
|
|
194
|
+
"dependencyKind": $prop($, 'cdx:collider:dependencyKind')
|
|
195
|
+
}
|
|
196
|
+
- id: PKG-010
|
|
197
|
+
name: "Collider origin required sanitization before BOM emission"
|
|
198
|
+
description: "Collider lock origin URLs should not carry credentials, query strings, or fragments because those values may embed secrets or unstable signed URLs"
|
|
199
|
+
severity: low
|
|
200
|
+
category: dependency-source
|
|
201
|
+
dry-run-support: full
|
|
202
|
+
condition: |
|
|
203
|
+
components[
|
|
204
|
+
$prop($, 'cdx:collider:originSanitized') = 'true'
|
|
205
|
+
]
|
|
206
|
+
location: |
|
|
207
|
+
{ "bomRef": $."bom-ref", "purl": purl }
|
|
208
|
+
message: "Collider package '{{ name }}@{{ version }}' had sensitive origin fields stripped before BOM emission"
|
|
209
|
+
mitigation: "Avoid embedding credentials or signed query parameters in Collider repository origin URLs; prefer stable repository base URLs"
|
|
210
|
+
evidence: |
|
|
211
|
+
{
|
|
212
|
+
"origin": $prop($, 'cdx:collider:origin'),
|
|
213
|
+
"originHost": $prop($, 'cdx:collider:originHost'),
|
|
214
|
+
"dependencyKind": $prop($, 'cdx:collider:dependencyKind')
|
|
215
|
+
}
|
|
216
|
+
- id: PKG-011
|
|
217
|
+
name: "Python dependency uses direct manifest source"
|
|
218
|
+
description: "Python dependencies declared via git, direct URL, or local path in requirements or pyproject files bypass normal registry version mediation"
|
|
219
|
+
severity: high
|
|
220
|
+
category: dependency-source
|
|
221
|
+
dry-run-support: full
|
|
222
|
+
condition: |
|
|
223
|
+
components[
|
|
224
|
+
$hasProp($, 'cdx:pypi:manifestSourceType')
|
|
225
|
+
]
|
|
226
|
+
location: |
|
|
227
|
+
{ "bomRef": $."bom-ref", "purl": purl }
|
|
228
|
+
message: "Python package '{{ name }}@{{ version }}' is declared from manifest {{ $prop($, 'cdx:pypi:manifestSourceType') }} source '{{ $prop($, 'cdx:pypi:manifestSource') }}'"
|
|
229
|
+
mitigation: "Prefer registry-published releases for production builds, or pin and review direct git/URL/path sources explicitly"
|
|
230
|
+
evidence: |
|
|
231
|
+
{
|
|
232
|
+
"manifestSourceType": $prop($, 'cdx:pypi:manifestSourceType'),
|
|
233
|
+
"manifestSource": $prop($, 'cdx:pypi:manifestSource'),
|
|
234
|
+
"registry": $prop($, 'cdx:pypi:registry'),
|
|
235
|
+
"resolvedFrom": $prop($, 'cdx:pypi:resolved_from')
|
|
236
|
+
}
|