@cdxgen/cdxgen 13.3.0 → 13.5.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 +12 -9
- package/bin/cdxgen-secure.js +15 -0
- package/bin/cdxgen.js +115 -31
- package/bin/evinse.js +23 -1
- package/bin/hbom.js +15 -7
- package/bin/repl.js +115 -0
- package/bin/sign.js +45 -15
- package/bin/tracebom.js +5 -1
- package/bin/validate.js +84 -18
- package/bin/verify.js +155 -86
- package/data/cbomosdb-queries.json +13 -1
- package/data/component-tags.json +8 -0
- package/data/helpers/init.gradle +46 -21
- package/data/queries-darwin.json +25 -1
- package/data/queries-win.json +19 -1
- package/data/queries.json +41 -0
- package/data/remediations.json +344 -1
- package/data/rules/cbom-security.yaml +235 -4
- package/data/rules/dependency-sources.yaml +67 -0
- package/data/rules/go-binaries.yaml +46 -0
- package/data/rules/golem-go.yaml +80 -0
- package/data/rules/hbom-compliance.yaml +40 -22
- package/data/rules/hbom-performance.yaml +7 -1
- package/data/rules/host-topology.yaml +1 -1
- package/data/rules/obom-runtime.yaml +31 -2
- package/data/rules/php-runtime.yaml +143 -0
- package/data/rules/scala-evidence.yaml +115 -0
- package/lib/audit/index.js +52 -6
- package/lib/cli/bomAssembly.js +28 -3
- package/lib/cli/cliOptions.js +110 -3
- package/lib/cli/index.js +186 -58
- package/lib/cli/jsBom.js +50 -29
- package/lib/cli/jvmBom.js +779 -146
- package/lib/cli/managedBom.js +1021 -261
- package/lib/cli/nativeBom.js +364 -58
- package/lib/core/activity.js +12 -0
- package/lib/core/env.js +47 -17
- package/lib/core/fs.js +31 -21
- package/lib/core/httpClient.js +233 -69
- package/lib/core/pluginRun.js +184 -0
- package/lib/core/processTree.js +100 -0
- package/lib/core/projectConfig.js +1 -0
- package/lib/core/projectTooling.js +97 -0
- package/lib/core/propertySanitizer.js +72 -0
- package/lib/core/runState.js +39 -0
- package/lib/core/toml.js +72 -0
- package/lib/ecosystems/asarutils.js +4 -2
- package/lib/ecosystems/bunutils.js +5 -7
- package/lib/ecosystems/cargoCache.js +231 -8
- package/lib/ecosystems/cmakeResolver.js +10 -21
- package/lib/ecosystems/cppBuildContext.js +631 -0
- package/lib/ecosystems/cppEvidence.js +337 -22
- package/lib/ecosystems/cppIncludeResolver.js +294 -0
- package/lib/ecosystems/denoutils.js +93 -66
- package/lib/ecosystems/ecosystems.js +1967 -788
- package/lib/ecosystems/golem.js +578 -18
- package/lib/ecosystems/gradleutils.js +340 -46
- package/lib/ecosystems/jsEvidence.js +85 -24
- package/lib/ecosystems/kosi.js +21 -4
- package/lib/ecosystems/npmutils.js +64 -0
- package/lib/ecosystems/parsers-dotnet.js +668 -153
- package/lib/ecosystems/parsers-elm.js +46 -28
- package/lib/ecosystems/parsers-gleam.js +3 -4
- package/lib/ecosystems/parsers-go.js +1283 -297
- package/lib/ecosystems/parsers-js.js +92 -26
- package/lib/ecosystems/parsers-julia.js +2 -3
- package/lib/ecosystems/parsers-jvm.js +463 -29
- package/lib/ecosystems/parsers-misc.js +405 -93
- package/lib/ecosystems/parsers-python.js +152 -20
- package/lib/ecosystems/parsers-rust.js +4 -4
- package/lib/ecosystems/parsers-terraform.js +1573 -19
- package/lib/ecosystems/pythonutils.js +102 -6
- package/lib/ecosystems/remote/huggingface.js +3 -0
- package/lib/ecosystems/rubyutils.js +73 -20
- package/lib/ecosystems/rusi.js +32 -9
- package/lib/ecosystems/sbtutils.js +243 -187
- package/lib/ecosystems/scalacliutils.js +343 -0
- package/lib/ecosystems/scalasem.js +2620 -0
- package/lib/ecosystems/terraformRegistry.js +288 -0
- package/lib/ecosystems/utils.js +2 -0
- package/lib/ecosystems/vendoredCode.js +156 -0
- package/lib/evinser/evinser.js +695 -78
- package/lib/evinser/swiftsem.js +68 -5
- package/lib/helpers/agenticToolutils.js +2 -2
- package/lib/helpers/bomSigner.js +576 -128
- package/lib/inventory/agentSkillSpec.js +17 -0
- package/lib/inventory/aiCollector.js +4 -1
- package/lib/inventory/analyzer.js +110 -127
- package/lib/inventory/apkInstalledDb.js +243 -0
- package/lib/inventory/atomUtils.js +204 -48
- package/lib/inventory/auditCategories.js +10 -3
- package/lib/inventory/buildToolRateLimit.js +144 -0
- package/lib/inventory/cacheCommands.js +2 -1
- package/lib/inventory/cacheDir.js +52 -9
- package/lib/inventory/certificates.js +2371 -0
- package/lib/inventory/cmakeBuildDirs.js +254 -0
- package/lib/inventory/communityAiConfigParser.js +4 -9
- package/lib/inventory/deps.js +507 -128
- package/lib/inventory/display.js +200 -3
- package/lib/inventory/dosai.js +747 -101
- package/lib/inventory/dosaiParsers.js +310 -15
- package/lib/inventory/dynamic.js +96 -8
- package/lib/inventory/envcontext.js +168 -5
- package/lib/inventory/evidenceUtils.js +590 -132
- package/lib/inventory/fetchBatch.js +574 -38
- package/lib/inventory/fetchDiskCache.js +597 -0
- package/lib/inventory/forgeEnricher.js +14 -5
- package/lib/inventory/formulationParsers.js +3 -2
- package/lib/inventory/goBuildInfo.js +140 -0
- package/lib/inventory/hbom.js +67 -7
- package/lib/inventory/hbomAnalysis.js +16 -0
- package/lib/inventory/hostTopology.js +21 -0
- package/lib/inventory/jvmLocalRepos.js +917 -0
- package/lib/inventory/mcpConfigParser.js +2 -3
- package/lib/inventory/osPackagePurl.js +244 -0
- package/lib/inventory/osPackageResolver.js +89 -87
- package/lib/inventory/osinfo.js +79 -31
- package/lib/inventory/osqueryTransform.js +114 -5
- package/lib/inventory/parentSelection.js +146 -0
- package/lib/inventory/phpBuildInfo.js +487 -0
- package/lib/inventory/phpHostProbe.js +641 -0
- package/lib/inventory/rootfsCerts.js +426 -0
- package/lib/inventory/rustFormulationParser.js +3 -4
- package/lib/inventory/scalaCoords.js +153 -0
- package/lib/inventory/source.js +215 -11
- package/lib/inventory/spdx.js +245 -0
- package/lib/inventory/traceRunner.js +93 -8
- package/lib/inventory/tracedCrypto.js +423 -0
- package/lib/managers/binary.js +529 -183
- package/lib/managers/docker.js +199 -44
- package/lib/managers/oci.js +24 -2
- package/lib/parsers/cmakeCache.js +69 -0
- package/lib/parsers/cmakeLists.js +16 -2
- package/lib/parsers/cmakePresets.js +400 -0
- package/lib/parsers/compileCommands.js +557 -0
- package/lib/parsers/email.js +277 -0
- package/lib/parsers/largeJson.js +34 -2
- package/lib/parsers/strictJson.js +322 -0
- package/lib/parsers/terraformConfig.js +1073 -0
- package/lib/parsers/terraformSource.js +652 -0
- package/lib/server/server.js +209 -1
- package/lib/stages/postgen/annotator.js +17 -1
- package/lib/stages/postgen/introspection/markers.js +1 -1
- package/lib/stages/postgen/introspection/reflect.js +4 -1
- package/lib/stages/postgen/postgen.js +20 -6
- package/lib/stages/postgen/ruleEngine.js +58 -1
- package/lib/stages/postgen/specVersionCompat.js +62 -0
- package/lib/stages/pregen/pregen.js +117 -5
- package/lib/validator/bomValidator.js +26 -5
- package/lib/validator/generated/runtime.mjs +13 -0
- package/lib/validator/generated/validate-1.6.mjs +26 -7
- package/lib/validator/generated/validate-1.7.mjs +31 -12
- package/lib/validator/generated/validate-2.0.mjs +30 -11
- package/lib/validator/index.js +25 -10
- package/lib/validator/reporters/json.js +1 -0
- package/package.json +23 -23
- package/types/bin/cdxgen-secure.d.ts +3 -0
- package/types/bin/cdxgen-secure.d.ts.map +1 -0
- package/types/bin/repl.d.ts.map +1 -1
- package/types/lib/audit/index.d.ts.map +1 -1
- package/types/lib/cli/bomAssembly.d.ts +9 -2
- package/types/lib/cli/bomAssembly.d.ts.map +1 -1
- package/types/lib/cli/cliOptions.d.ts +43 -0
- package/types/lib/cli/cliOptions.d.ts.map +1 -1
- package/types/lib/cli/index.d.ts.map +1 -1
- package/types/lib/cli/jsBom.d.ts.map +1 -1
- package/types/lib/cli/jvmBom.d.ts +44 -1
- package/types/lib/cli/jvmBom.d.ts.map +1 -1
- package/types/lib/cli/managedBom.d.ts +7 -4
- package/types/lib/cli/managedBom.d.ts.map +1 -1
- package/types/lib/cli/nativeBom.d.ts +3 -1
- package/types/lib/cli/nativeBom.d.ts.map +1 -1
- package/types/lib/core/activity.d.ts.map +1 -1
- package/types/lib/core/env.d.ts +27 -2
- package/types/lib/core/env.d.ts.map +1 -1
- package/types/lib/core/fs.d.ts.map +1 -1
- package/types/lib/core/httpClient.d.ts +13 -8
- package/types/lib/core/httpClient.d.ts.map +1 -1
- package/types/lib/core/pluginRun.d.ts +97 -0
- package/types/lib/core/pluginRun.d.ts.map +1 -0
- package/types/lib/core/processTree.d.ts +36 -0
- package/types/lib/core/processTree.d.ts.map +1 -0
- package/types/lib/core/projectConfig.d.ts.map +1 -1
- package/types/lib/core/projectTooling.d.ts +41 -0
- package/types/lib/core/projectTooling.d.ts.map +1 -0
- package/types/lib/core/propertySanitizer.d.ts +26 -0
- package/types/lib/core/propertySanitizer.d.ts.map +1 -1
- package/types/lib/core/runState.d.ts +29 -0
- package/types/lib/core/runState.d.ts.map +1 -0
- package/types/lib/core/toml.d.ts +20 -0
- package/types/lib/core/toml.d.ts.map +1 -0
- package/types/lib/ecosystems/asarutils.d.ts.map +1 -1
- package/types/lib/ecosystems/bunutils.d.ts.map +1 -1
- package/types/lib/ecosystems/cargoCache.d.ts +12 -0
- package/types/lib/ecosystems/cargoCache.d.ts.map +1 -1
- package/types/lib/ecosystems/cmakeResolver.d.ts +5 -3
- package/types/lib/ecosystems/cmakeResolver.d.ts.map +1 -1
- package/types/lib/ecosystems/cppBuildContext.d.ts +55 -0
- package/types/lib/ecosystems/cppBuildContext.d.ts.map +1 -0
- package/types/lib/ecosystems/cppEvidence.d.ts +19 -3
- package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -1
- package/types/lib/ecosystems/cppIncludeResolver.d.ts +92 -0
- package/types/lib/ecosystems/cppIncludeResolver.d.ts.map +1 -0
- package/types/lib/ecosystems/denoutils.d.ts +9 -3
- package/types/lib/ecosystems/denoutils.d.ts.map +1 -1
- package/types/lib/ecosystems/ecosystems.d.ts +62 -13
- package/types/lib/ecosystems/ecosystems.d.ts.map +1 -1
- package/types/lib/ecosystems/golem.d.ts +81 -1
- package/types/lib/ecosystems/golem.d.ts.map +1 -1
- package/types/lib/ecosystems/gradleutils.d.ts +59 -7
- package/types/lib/ecosystems/gradleutils.d.ts.map +1 -1
- package/types/lib/ecosystems/jsEvidence.d.ts.map +1 -1
- package/types/lib/ecosystems/kosi.d.ts.map +1 -1
- package/types/lib/ecosystems/npmutils.d.ts +15 -0
- package/types/lib/ecosystems/npmutils.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-dotnet.d.ts +155 -5
- package/types/lib/ecosystems/parsers-dotnet.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-elm.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-gleam.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-go.d.ts +119 -5
- package/types/lib/ecosystems/parsers-go.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-js.d.ts +6 -1
- package/types/lib/ecosystems/parsers-js.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-julia.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-jvm.d.ts +74 -3
- package/types/lib/ecosystems/parsers-jvm.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-misc.d.ts +21 -59
- package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-python.d.ts +57 -6
- package/types/lib/ecosystems/parsers-python.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-terraform.d.ts +38 -21
- package/types/lib/ecosystems/parsers-terraform.d.ts.map +1 -1
- package/types/lib/ecosystems/pythonutils.d.ts +26 -1
- package/types/lib/ecosystems/pythonutils.d.ts.map +1 -1
- package/types/lib/ecosystems/remote/huggingface.d.ts.map +1 -1
- package/types/lib/ecosystems/rubyutils.d.ts +21 -1
- package/types/lib/ecosystems/rubyutils.d.ts.map +1 -1
- package/types/lib/ecosystems/rusi.d.ts.map +1 -1
- package/types/lib/ecosystems/sbtutils.d.ts +88 -2
- package/types/lib/ecosystems/sbtutils.d.ts.map +1 -1
- package/types/lib/ecosystems/scalacliutils.d.ts +56 -0
- package/types/lib/ecosystems/scalacliutils.d.ts.map +1 -0
- package/types/lib/ecosystems/scalasem.d.ts +311 -0
- package/types/lib/ecosystems/scalasem.d.ts.map +1 -0
- package/types/lib/ecosystems/terraformRegistry.d.ts +9 -0
- package/types/lib/ecosystems/terraformRegistry.d.ts.map +1 -0
- package/types/lib/ecosystems/utils.d.ts +2 -2
- package/types/lib/ecosystems/utils.d.ts.map +1 -1
- package/types/lib/ecosystems/vendoredCode.d.ts +32 -0
- package/types/lib/ecosystems/vendoredCode.d.ts.map +1 -0
- package/types/lib/evinser/evinser.d.ts +100 -8
- package/types/lib/evinser/evinser.d.ts.map +1 -1
- package/types/lib/evinser/swiftsem.d.ts +10 -0
- package/types/lib/evinser/swiftsem.d.ts.map +1 -1
- package/types/lib/helpers/bomSigner.d.ts +80 -4
- package/types/lib/helpers/bomSigner.d.ts.map +1 -1
- package/types/lib/inventory/agentSkillSpec.d.ts +13 -0
- package/types/lib/inventory/agentSkillSpec.d.ts.map +1 -0
- package/types/lib/inventory/aiCollector.d.ts.map +1 -1
- package/types/lib/inventory/analyzer.d.ts.map +1 -1
- package/types/lib/inventory/apkInstalledDb.d.ts +42 -0
- package/types/lib/inventory/apkInstalledDb.d.ts.map +1 -0
- package/types/lib/inventory/atomUtils.d.ts +96 -10
- package/types/lib/inventory/atomUtils.d.ts.map +1 -1
- package/types/lib/inventory/auditCategories.d.ts +3 -0
- package/types/lib/inventory/auditCategories.d.ts.map +1 -1
- package/types/lib/inventory/buildToolRateLimit.d.ts +38 -0
- package/types/lib/inventory/buildToolRateLimit.d.ts.map +1 -0
- package/types/lib/inventory/cacheCommands.d.ts +2 -1
- package/types/lib/inventory/cacheCommands.d.ts.map +1 -1
- package/types/lib/inventory/cacheDir.d.ts +12 -4
- package/types/lib/inventory/cacheDir.d.ts.map +1 -1
- package/types/lib/inventory/certificates.d.ts +205 -0
- package/types/lib/inventory/certificates.d.ts.map +1 -0
- package/types/lib/inventory/cmakeBuildDirs.d.ts +58 -0
- package/types/lib/inventory/cmakeBuildDirs.d.ts.map +1 -0
- package/types/lib/inventory/communityAiConfigParser.d.ts.map +1 -1
- package/types/lib/inventory/deps.d.ts +61 -2
- package/types/lib/inventory/deps.d.ts.map +1 -1
- package/types/lib/inventory/display.d.ts +18 -0
- package/types/lib/inventory/display.d.ts.map +1 -1
- package/types/lib/inventory/dosai.d.ts +202 -14
- package/types/lib/inventory/dosai.d.ts.map +1 -1
- package/types/lib/inventory/dosaiParsers.d.ts +53 -7
- package/types/lib/inventory/dosaiParsers.d.ts.map +1 -1
- package/types/lib/inventory/dynamic.d.ts +16 -1
- package/types/lib/inventory/dynamic.d.ts.map +1 -1
- package/types/lib/inventory/envcontext.d.ts +40 -2
- package/types/lib/inventory/envcontext.d.ts.map +1 -1
- package/types/lib/inventory/evidenceUtils.d.ts +48 -14
- package/types/lib/inventory/evidenceUtils.d.ts.map +1 -1
- package/types/lib/inventory/fetchBatch.d.ts +83 -14
- package/types/lib/inventory/fetchBatch.d.ts.map +1 -1
- package/types/lib/inventory/fetchDiskCache.d.ts +169 -0
- package/types/lib/inventory/fetchDiskCache.d.ts.map +1 -0
- package/types/lib/inventory/forgeEnricher.d.ts.map +1 -1
- package/types/lib/inventory/formulationParsers.d.ts.map +1 -1
- package/types/lib/inventory/goBuildInfo.d.ts +10 -0
- package/types/lib/inventory/goBuildInfo.d.ts.map +1 -0
- package/types/lib/inventory/hbom.d.ts.map +1 -1
- package/types/lib/inventory/hbomAnalysis.d.ts +10 -0
- package/types/lib/inventory/hbomAnalysis.d.ts.map +1 -1
- package/types/lib/inventory/hostTopology.d.ts.map +1 -1
- package/types/lib/inventory/jvmLocalRepos.d.ts +178 -0
- package/types/lib/inventory/jvmLocalRepos.d.ts.map +1 -0
- package/types/lib/inventory/mcpConfigParser.d.ts.map +1 -1
- package/types/lib/inventory/osPackagePurl.d.ts +99 -0
- package/types/lib/inventory/osPackagePurl.d.ts.map +1 -0
- package/types/lib/inventory/osPackageResolver.d.ts +6 -2
- package/types/lib/inventory/osPackageResolver.d.ts.map +1 -1
- package/types/lib/inventory/osinfo.d.ts +31 -6
- package/types/lib/inventory/osinfo.d.ts.map +1 -1
- package/types/lib/inventory/osqueryTransform.d.ts +51 -0
- package/types/lib/inventory/osqueryTransform.d.ts.map +1 -1
- package/types/lib/inventory/parentSelection.d.ts +34 -0
- package/types/lib/inventory/parentSelection.d.ts.map +1 -0
- package/types/lib/inventory/phpBuildInfo.d.ts +142 -0
- package/types/lib/inventory/phpBuildInfo.d.ts.map +1 -0
- package/types/lib/inventory/phpHostProbe.d.ts +35 -0
- package/types/lib/inventory/phpHostProbe.d.ts.map +1 -0
- package/types/lib/inventory/rootfsCerts.d.ts +27 -0
- package/types/lib/inventory/rootfsCerts.d.ts.map +1 -0
- package/types/lib/inventory/rustFormulationParser.d.ts.map +1 -1
- package/types/lib/inventory/scalaCoords.d.ts +80 -0
- package/types/lib/inventory/scalaCoords.d.ts.map +1 -0
- package/types/lib/inventory/source.d.ts +28 -0
- package/types/lib/inventory/source.d.ts.map +1 -1
- package/types/lib/inventory/spdx.d.ts +24 -0
- package/types/lib/inventory/spdx.d.ts.map +1 -1
- package/types/lib/inventory/traceRunner.d.ts +16 -1
- package/types/lib/inventory/traceRunner.d.ts.map +1 -1
- package/types/lib/inventory/tracedCrypto.d.ts +64 -0
- package/types/lib/inventory/tracedCrypto.d.ts.map +1 -0
- package/types/lib/managers/binary.d.ts +10 -0
- package/types/lib/managers/binary.d.ts.map +1 -1
- package/types/lib/managers/docker.d.ts +12 -0
- package/types/lib/managers/docker.d.ts.map +1 -1
- package/types/lib/managers/oci.d.ts +3 -1
- package/types/lib/managers/oci.d.ts.map +1 -1
- package/types/lib/parsers/cmakeCache.d.ts +16 -0
- package/types/lib/parsers/cmakeCache.d.ts.map +1 -1
- package/types/lib/parsers/cmakeLists.d.ts +2 -1
- package/types/lib/parsers/cmakeLists.d.ts.map +1 -1
- package/types/lib/parsers/cmakePresets.d.ts +78 -0
- package/types/lib/parsers/cmakePresets.d.ts.map +1 -0
- package/types/lib/parsers/compileCommands.d.ts +115 -0
- package/types/lib/parsers/compileCommands.d.ts.map +1 -0
- package/types/lib/parsers/email.d.ts +19 -0
- package/types/lib/parsers/email.d.ts.map +1 -0
- package/types/lib/parsers/largeJson.d.ts +13 -0
- package/types/lib/parsers/largeJson.d.ts.map +1 -1
- package/types/lib/parsers/strictJson.d.ts +46 -0
- package/types/lib/parsers/strictJson.d.ts.map +1 -0
- package/types/lib/parsers/terraformConfig.d.ts +70 -0
- package/types/lib/parsers/terraformConfig.d.ts.map +1 -0
- package/types/lib/parsers/terraformSource.d.ts +66 -0
- package/types/lib/parsers/terraformSource.d.ts.map +1 -0
- package/types/lib/server/server.d.ts +8 -0
- package/types/lib/server/server.d.ts.map +1 -1
- package/types/lib/stages/postgen/annotator.d.ts.map +1 -1
- package/types/lib/stages/postgen/introspection/reflect.d.ts.map +1 -1
- package/types/lib/stages/postgen/postgen.d.ts.map +1 -1
- package/types/lib/stages/postgen/ruleEngine.d.ts +7 -4
- package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -1
- package/types/lib/stages/postgen/specVersionCompat.d.ts.map +1 -1
- package/types/lib/stages/pregen/pregen.d.ts +14 -1
- package/types/lib/stages/pregen/pregen.d.ts.map +1 -1
- package/types/lib/validator/bomValidator.d.ts.map +1 -1
- package/types/lib/validator/index.d.ts +8 -0
- package/types/lib/validator/index.d.ts.map +1 -1
- package/types/lib/validator/reporters/json.d.ts.map +1 -1
- package/lib/third-party/arborist/snapshots/calc-dep-flags.test.cjs +0 -462
package/data/remediations.json
CHANGED
|
@@ -111,6 +111,30 @@
|
|
|
111
111
|
},
|
|
112
112
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES?id=java"
|
|
113
113
|
},
|
|
114
|
+
"jvm.maven.tooling-disabled": {
|
|
115
|
+
"ecosystem": "java",
|
|
116
|
+
"kind": "fallback.engaged",
|
|
117
|
+
"impact": "transitive-deps",
|
|
118
|
+
"title": "Maven was skipped because dependency installation is disabled; only the direct dependencies declared in pom.xml files were captured",
|
|
119
|
+
"targetTier": "resolved",
|
|
120
|
+
"actions": [
|
|
121
|
+
{
|
|
122
|
+
"kind": "config",
|
|
123
|
+
"command": "Only for a project you trust: pass --install-deps so cdxgen can run Maven. Secure mode keeps installs off unless this flag is given. Outside secure mode, --introspect also runs Maven without installing packages."
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"kind": "rerun"
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
"verify": {
|
|
130
|
+
"rules": [],
|
|
131
|
+
"expectTier": "resolved",
|
|
132
|
+
"eventsCleared": [
|
|
133
|
+
"jvm.maven.tooling-disabled"
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES?id=java"
|
|
137
|
+
},
|
|
114
138
|
"jvm.gradle.unresolved-config": {
|
|
115
139
|
"ecosystem": "java",
|
|
116
140
|
"kind": "fallback.engaged",
|
|
@@ -263,6 +287,46 @@
|
|
|
263
287
|
},
|
|
264
288
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES?id=java"
|
|
265
289
|
},
|
|
290
|
+
"build.rate-limited": {
|
|
291
|
+
"ecosystem": "generic",
|
|
292
|
+
"kind": "evidence.degraded",
|
|
293
|
+
"impact": "transitive-deps",
|
|
294
|
+
"title": "A build tool's repository rate limited the machine, so its dependency tree did not resolve",
|
|
295
|
+
"targetTier": null,
|
|
296
|
+
"actions": [
|
|
297
|
+
{
|
|
298
|
+
"kind": "config",
|
|
299
|
+
"command": "Maven: declare a <mirror> in the Maven settings.xml, or set MVNW_REPOURL for the Maven wrapper"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"kind": "config",
|
|
303
|
+
"command": "Gradle: declare the mirror repository in a Gradle init script"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"kind": "config",
|
|
307
|
+
"command": "sbt: list the mirror in ~/.sbt/repositories and pass -Dsbt.override.build.repos=true in SBT_OPTS or .sbtopts"
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"kind": "config",
|
|
311
|
+
"command": "Mill and scala-cli: set central.from and central.to in Coursier's mirror.properties, separating several central.from URLs with semicolons"
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"kind": "env",
|
|
315
|
+
"command": "Point MAVEN_CENTRAL_URL at a mirror for cdxgen's own lookups"
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"kind": "rerun"
|
|
319
|
+
}
|
|
320
|
+
],
|
|
321
|
+
"verify": {
|
|
322
|
+
"rules": [],
|
|
323
|
+
"expectTier": null,
|
|
324
|
+
"eventsCleared": [
|
|
325
|
+
"build.rate-limited"
|
|
326
|
+
]
|
|
327
|
+
},
|
|
328
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/ADVANCED"
|
|
329
|
+
},
|
|
266
330
|
"js.no-lockfile": {
|
|
267
331
|
"ecosystem": "npm",
|
|
268
332
|
"kind": "evidence.degraded",
|
|
@@ -575,6 +639,30 @@
|
|
|
575
639
|
},
|
|
576
640
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
577
641
|
},
|
|
642
|
+
"python.poetry-export.tooling-disabled": {
|
|
643
|
+
"ecosystem": "python",
|
|
644
|
+
"kind": "fallback.engaged",
|
|
645
|
+
"impact": "transitive-deps",
|
|
646
|
+
"title": "poetry export and pdm export were skipped because dependency installation is disabled; only the packages in the lock file were captured",
|
|
647
|
+
"targetTier": null,
|
|
648
|
+
"actions": [
|
|
649
|
+
{
|
|
650
|
+
"kind": "config",
|
|
651
|
+
"command": "Only for a project you trust: pass --install-deps so cdxgen can run Poetry or PDM. Secure mode keeps installs off unless this flag is given. Outside secure mode, --introspect also runs Poetry or PDM without installing packages."
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
"kind": "rerun"
|
|
655
|
+
}
|
|
656
|
+
],
|
|
657
|
+
"verify": {
|
|
658
|
+
"rules": [],
|
|
659
|
+
"expectTier": null,
|
|
660
|
+
"eventsCleared": [
|
|
661
|
+
"python.poetry-export.tooling-disabled"
|
|
662
|
+
]
|
|
663
|
+
},
|
|
664
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
665
|
+
},
|
|
578
666
|
"clojure.lein.missing": {
|
|
579
667
|
"ecosystem": "clojure",
|
|
580
668
|
"kind": "fallback.engaged",
|
|
@@ -632,6 +720,30 @@
|
|
|
632
720
|
},
|
|
633
721
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
634
722
|
},
|
|
723
|
+
"clojure.lein.tooling-disabled": {
|
|
724
|
+
"ecosystem": "clojure",
|
|
725
|
+
"kind": "fallback.engaged",
|
|
726
|
+
"impact": "transitive-deps",
|
|
727
|
+
"title": "Leiningen was skipped because dependency installation is disabled; only the dependencies declared in project.clj were captured",
|
|
728
|
+
"targetTier": null,
|
|
729
|
+
"actions": [
|
|
730
|
+
{
|
|
731
|
+
"kind": "config",
|
|
732
|
+
"command": "Only for a project you trust: pass --install-deps so cdxgen can run Leiningen. Secure mode keeps installs off unless this flag is given. Outside secure mode, --introspect also runs Leiningen without installing packages."
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
"kind": "rerun"
|
|
736
|
+
}
|
|
737
|
+
],
|
|
738
|
+
"verify": {
|
|
739
|
+
"rules": [],
|
|
740
|
+
"expectTier": null,
|
|
741
|
+
"eventsCleared": [
|
|
742
|
+
"clojure.lein.tooling-disabled"
|
|
743
|
+
]
|
|
744
|
+
},
|
|
745
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
746
|
+
},
|
|
635
747
|
"swift.toolchain.missing": {
|
|
636
748
|
"ecosystem": "swift",
|
|
637
749
|
"kind": "fallback.engaged",
|
|
@@ -678,11 +790,35 @@
|
|
|
678
790
|
},
|
|
679
791
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
680
792
|
},
|
|
793
|
+
"swift.tooling-disabled": {
|
|
794
|
+
"ecosystem": "swift",
|
|
795
|
+
"kind": "fallback.engaged",
|
|
796
|
+
"impact": "transitive-deps",
|
|
797
|
+
"title": "SwiftPM was skipped because dependency installation is disabled; only the packages in Package.resolved were captured",
|
|
798
|
+
"targetTier": null,
|
|
799
|
+
"actions": [
|
|
800
|
+
{
|
|
801
|
+
"kind": "config",
|
|
802
|
+
"command": "Only for a project you trust: pass --install-deps so cdxgen can run SwiftPM. Secure mode keeps installs off unless this flag is given. Outside secure mode, --introspect also runs SwiftPM without installing packages."
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"kind": "rerun"
|
|
806
|
+
}
|
|
807
|
+
],
|
|
808
|
+
"verify": {
|
|
809
|
+
"rules": [],
|
|
810
|
+
"expectTier": null,
|
|
811
|
+
"eventsCleared": [
|
|
812
|
+
"swift.tooling-disabled"
|
|
813
|
+
]
|
|
814
|
+
},
|
|
815
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
816
|
+
},
|
|
681
817
|
"dotnet.sdk.missing": {
|
|
682
818
|
"ecosystem": "csharp",
|
|
683
819
|
"kind": "evidence.degraded",
|
|
684
820
|
"impact": "components",
|
|
685
|
-
"title": ".NET
|
|
821
|
+
"title": "The .NET runtime dosai needs is not installed, so dotnet slices are degraded",
|
|
686
822
|
"targetTier": "resolved",
|
|
687
823
|
"actions": [
|
|
688
824
|
{
|
|
@@ -709,6 +845,30 @@
|
|
|
709
845
|
},
|
|
710
846
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
711
847
|
},
|
|
848
|
+
"dotnet.msbuild.tooling-disabled": {
|
|
849
|
+
"ecosystem": "csharp",
|
|
850
|
+
"kind": "fallback.engaged",
|
|
851
|
+
"impact": "versions",
|
|
852
|
+
"title": "dotnet msbuild was skipped because dependency installation is disabled; package versions set by MSBuild properties that no project or props file defines are empty",
|
|
853
|
+
"targetTier": "manifest",
|
|
854
|
+
"actions": [
|
|
855
|
+
{
|
|
856
|
+
"kind": "config",
|
|
857
|
+
"command": "Only for a project you trust: pass --install-deps so cdxgen can run MSBuild. Secure mode keeps installs off unless this flag is given. Outside secure mode, --introspect also runs MSBuild without installing packages."
|
|
858
|
+
},
|
|
859
|
+
{
|
|
860
|
+
"kind": "rerun"
|
|
861
|
+
}
|
|
862
|
+
],
|
|
863
|
+
"verify": {
|
|
864
|
+
"rules": [],
|
|
865
|
+
"expectTier": "manifest",
|
|
866
|
+
"eventsCleared": [
|
|
867
|
+
"dotnet.msbuild.tooling-disabled"
|
|
868
|
+
]
|
|
869
|
+
},
|
|
870
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
871
|
+
},
|
|
712
872
|
"dosai.semantics.persist-failed": {
|
|
713
873
|
"ecosystem": "csharp",
|
|
714
874
|
"kind": "evidence.degraded",
|
|
@@ -733,6 +893,48 @@
|
|
|
733
893
|
},
|
|
734
894
|
"docs": "https://cyclonedx.github.io/cdxgen/#/EVINSE"
|
|
735
895
|
},
|
|
896
|
+
"dosai.semantics.trimmed-report": {
|
|
897
|
+
"ecosystem": "csharp",
|
|
898
|
+
"kind": "evidence.degraded",
|
|
899
|
+
"impact": "none",
|
|
900
|
+
"title": "The persisted dosai report is partial: its methods half was written with --sections",
|
|
901
|
+
"targetTier": "resolved",
|
|
902
|
+
"actions": [
|
|
903
|
+
{
|
|
904
|
+
"kind": "config",
|
|
905
|
+
"detail": "Run dosai methods without --sections, or run cdxgen with --evidence, so the persisted report holds every section."
|
|
906
|
+
}
|
|
907
|
+
],
|
|
908
|
+
"verify": {
|
|
909
|
+
"rules": [],
|
|
910
|
+
"expectTier": "resolved",
|
|
911
|
+
"eventsCleared": [
|
|
912
|
+
"dosai.semantics.trimmed-report"
|
|
913
|
+
]
|
|
914
|
+
},
|
|
915
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/EVINSE"
|
|
916
|
+
},
|
|
917
|
+
"dosai.usages.trimmed-report": {
|
|
918
|
+
"ecosystem": "csharp",
|
|
919
|
+
"kind": "evidence.degraded",
|
|
920
|
+
"impact": "components",
|
|
921
|
+
"title": "The supplied dosai usages slice was written without sections cdxgen reads",
|
|
922
|
+
"targetTier": "resolved",
|
|
923
|
+
"actions": [
|
|
924
|
+
{
|
|
925
|
+
"kind": "config",
|
|
926
|
+
"detail": "Run dosai methods without --sections, or with every section cdxgen reads, for the report passed with --usages-slices-file."
|
|
927
|
+
}
|
|
928
|
+
],
|
|
929
|
+
"verify": {
|
|
930
|
+
"rules": [],
|
|
931
|
+
"expectTier": "resolved",
|
|
932
|
+
"eventsCleared": [
|
|
933
|
+
"dosai.usages.trimmed-report"
|
|
934
|
+
]
|
|
935
|
+
},
|
|
936
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/EVINSE"
|
|
937
|
+
},
|
|
736
938
|
"cocoa.pods.missing": {
|
|
737
939
|
"ecosystem": "cocoa",
|
|
738
940
|
"kind": "fallback.engaged",
|
|
@@ -756,6 +958,54 @@
|
|
|
756
958
|
},
|
|
757
959
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
758
960
|
},
|
|
961
|
+
"cocoa.podfile-json.tooling-disabled": {
|
|
962
|
+
"ecosystem": "cocoa",
|
|
963
|
+
"kind": "fallback.engaged",
|
|
964
|
+
"impact": "components",
|
|
965
|
+
"title": "pod ipc podfile-json was skipped because dependency installation is disabled; every pod from Podfile.lock is included without per-target filtering",
|
|
966
|
+
"targetTier": null,
|
|
967
|
+
"actions": [
|
|
968
|
+
{
|
|
969
|
+
"kind": "config",
|
|
970
|
+
"command": "Only for a project you trust: pass --install-deps so cdxgen can run CocoaPods. Secure mode keeps installs off unless this flag is given. Outside secure mode, --introspect also runs CocoaPods without installing packages."
|
|
971
|
+
},
|
|
972
|
+
{
|
|
973
|
+
"kind": "rerun"
|
|
974
|
+
}
|
|
975
|
+
],
|
|
976
|
+
"verify": {
|
|
977
|
+
"rules": [],
|
|
978
|
+
"expectTier": null,
|
|
979
|
+
"eventsCleared": [
|
|
980
|
+
"cocoa.podfile-json.tooling-disabled"
|
|
981
|
+
]
|
|
982
|
+
},
|
|
983
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
984
|
+
},
|
|
985
|
+
"cocoa.podspec.tooling-disabled": {
|
|
986
|
+
"ecosystem": "cocoa",
|
|
987
|
+
"kind": "fallback.engaged",
|
|
988
|
+
"impact": "licenses",
|
|
989
|
+
"title": "Ruby podspecs were not evaluated because dependency installation is disabled; their pods lack license and author details",
|
|
990
|
+
"targetTier": null,
|
|
991
|
+
"actions": [
|
|
992
|
+
{
|
|
993
|
+
"kind": "config",
|
|
994
|
+
"command": "Only for a project you trust: pass --install-deps so cdxgen can run CocoaPods. Secure mode keeps installs off unless this flag is given. Outside secure mode, --introspect also runs CocoaPods without installing packages."
|
|
995
|
+
},
|
|
996
|
+
{
|
|
997
|
+
"kind": "rerun"
|
|
998
|
+
}
|
|
999
|
+
],
|
|
1000
|
+
"verify": {
|
|
1001
|
+
"rules": [],
|
|
1002
|
+
"expectTier": null,
|
|
1003
|
+
"eventsCleared": [
|
|
1004
|
+
"cocoa.podspec.tooling-disabled"
|
|
1005
|
+
]
|
|
1006
|
+
},
|
|
1007
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
1008
|
+
},
|
|
759
1009
|
"ruby.build-deps.missing": {
|
|
760
1010
|
"ecosystem": "ruby",
|
|
761
1011
|
"kind": "evidence.degraded",
|
|
@@ -1008,6 +1258,54 @@
|
|
|
1008
1258
|
},
|
|
1009
1259
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES?id=php"
|
|
1010
1260
|
},
|
|
1261
|
+
"php.host-probe.package-db-unreadable": {
|
|
1262
|
+
"ecosystem": "php",
|
|
1263
|
+
"kind": "evidence.degraded",
|
|
1264
|
+
"impact": "components",
|
|
1265
|
+
"title": "A package database could not be read in full, so the PHP no package owns on this host was not identified",
|
|
1266
|
+
"targetTier": null,
|
|
1267
|
+
"actions": [
|
|
1268
|
+
{
|
|
1269
|
+
"kind": "config",
|
|
1270
|
+
"command": "Run cdxgen as a user that can read the package databases (for example with sudo), so PHP files can be matched to the packages that own them"
|
|
1271
|
+
},
|
|
1272
|
+
{
|
|
1273
|
+
"kind": "rerun"
|
|
1274
|
+
}
|
|
1275
|
+
],
|
|
1276
|
+
"verify": {
|
|
1277
|
+
"rules": [],
|
|
1278
|
+
"expectTier": null,
|
|
1279
|
+
"eventsCleared": [
|
|
1280
|
+
"php.host-probe.package-db-unreadable"
|
|
1281
|
+
]
|
|
1282
|
+
},
|
|
1283
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES?id=php"
|
|
1284
|
+
},
|
|
1285
|
+
"php.composer.platform-unattributed": {
|
|
1286
|
+
"ecosystem": "php",
|
|
1287
|
+
"kind": "evidence.degraded",
|
|
1288
|
+
"impact": "versions",
|
|
1289
|
+
"title": "A composer.lock below the scanned directory sits beside a composer.json without a name, so its PHP and extension requirements were not recorded",
|
|
1290
|
+
"targetTier": null,
|
|
1291
|
+
"actions": [
|
|
1292
|
+
{
|
|
1293
|
+
"kind": "config",
|
|
1294
|
+
"command": "Give the project a \"name\" in its composer.json, or scan the project directory itself"
|
|
1295
|
+
},
|
|
1296
|
+
{
|
|
1297
|
+
"kind": "rerun"
|
|
1298
|
+
}
|
|
1299
|
+
],
|
|
1300
|
+
"verify": {
|
|
1301
|
+
"rules": [],
|
|
1302
|
+
"expectTier": null,
|
|
1303
|
+
"eventsCleared": [
|
|
1304
|
+
"php.composer.platform-unattributed"
|
|
1305
|
+
]
|
|
1306
|
+
},
|
|
1307
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES?id=php"
|
|
1308
|
+
},
|
|
1011
1309
|
"dart.pub-get-needed": {
|
|
1012
1310
|
"ecosystem": "dart",
|
|
1013
1311
|
"kind": "evidence.degraded",
|
|
@@ -1103,6 +1401,30 @@
|
|
|
1103
1401
|
},
|
|
1104
1402
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
1105
1403
|
},
|
|
1404
|
+
"os.apk-installed-db.unreadable": {
|
|
1405
|
+
"ecosystem": "generic",
|
|
1406
|
+
"kind": "evidence.degraded",
|
|
1407
|
+
"impact": "components",
|
|
1408
|
+
"title": "The apk installed database could not be read in full, so the packages of this host are missing from the OBOM",
|
|
1409
|
+
"targetTier": null,
|
|
1410
|
+
"actions": [
|
|
1411
|
+
{
|
|
1412
|
+
"kind": "config",
|
|
1413
|
+
"command": "Run cdxgen as a user that can read the apk installed database (for example as root), so the packages it lists are inventoried"
|
|
1414
|
+
},
|
|
1415
|
+
{
|
|
1416
|
+
"kind": "rerun"
|
|
1417
|
+
}
|
|
1418
|
+
],
|
|
1419
|
+
"verify": {
|
|
1420
|
+
"rules": [],
|
|
1421
|
+
"expectTier": null,
|
|
1422
|
+
"eventsCleared": [
|
|
1423
|
+
"os.apk-installed-db.unreadable"
|
|
1424
|
+
]
|
|
1425
|
+
},
|
|
1426
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
1427
|
+
},
|
|
1106
1428
|
"policy.secure-mode": {
|
|
1107
1429
|
"ecosystem": "generic",
|
|
1108
1430
|
"kind": "evidence.degraded",
|
|
@@ -1187,5 +1509,26 @@
|
|
|
1187
1509
|
]
|
|
1188
1510
|
},
|
|
1189
1511
|
"docs": "https://cyclonedx.github.io/cdxgen/#/ENV"
|
|
1512
|
+
},
|
|
1513
|
+
"policy.rate-limited": {
|
|
1514
|
+
"ecosystem": "generic",
|
|
1515
|
+
"kind": "evidence.degraded",
|
|
1516
|
+
"impact": "licenses",
|
|
1517
|
+
"title": "A registry rate limited this run, so its metadata came from local caches only",
|
|
1518
|
+
"targetTier": null,
|
|
1519
|
+
"actions": [
|
|
1520
|
+
{
|
|
1521
|
+
"kind": "env",
|
|
1522
|
+
"command": "Point MAVEN_CENTRAL_URL at a mirror or repository manager, or wait for the block to expire, then re-run"
|
|
1523
|
+
}
|
|
1524
|
+
],
|
|
1525
|
+
"verify": {
|
|
1526
|
+
"rules": [],
|
|
1527
|
+
"expectTier": null,
|
|
1528
|
+
"eventsCleared": [
|
|
1529
|
+
"policy.rate-limited"
|
|
1530
|
+
]
|
|
1531
|
+
},
|
|
1532
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/ENV"
|
|
1190
1533
|
}
|
|
1191
1534
|
}
|
|
@@ -141,21 +141,22 @@
|
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
- id: CBC-001
|
|
144
|
-
name: "Expired
|
|
145
|
-
description: "
|
|
144
|
+
name: "Expired Certificate"
|
|
145
|
+
description: "A certificate whose validity ended before the audit ran will fail trust validation and cause service disruptions."
|
|
146
146
|
severity: high
|
|
147
147
|
category: cbom-compliance
|
|
148
148
|
dry-run-support: full
|
|
149
149
|
condition: |
|
|
150
150
|
components[
|
|
151
151
|
cryptoProperties.assetType = 'certificate'
|
|
152
|
-
and $
|
|
152
|
+
and $certEndMillis(cryptoProperties.certificateProperties.notValidAfter) != null
|
|
153
|
+
and $certEndMillis(cryptoProperties.certificateProperties.notValidAfter) < $toMillis($now())
|
|
153
154
|
]
|
|
154
155
|
location: |
|
|
155
156
|
{
|
|
156
157
|
"bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
|
|
157
158
|
}
|
|
158
|
-
message: "Certificate for Subject '{{ cryptoProperties.certificateProperties.subjectName }}'
|
|
159
|
+
message: "Certificate for Subject '{{ cryptoProperties.certificateProperties.subjectName }}' expired on {{ cryptoProperties.certificateProperties.notValidAfter }}"
|
|
159
160
|
mitigation: "Renew the certificate and update the deployment trust stores."
|
|
160
161
|
evidence: |
|
|
161
162
|
{
|
|
@@ -163,3 +164,233 @@
|
|
|
163
164
|
"issuer": cryptoProperties.certificateProperties.issuerName,
|
|
164
165
|
"notValidAfter": cryptoProperties.certificateProperties.notValidAfter
|
|
165
166
|
}
|
|
167
|
+
|
|
168
|
+
- id: CBC-002
|
|
169
|
+
name: "Certificate expiring within 30 days"
|
|
170
|
+
description: "A certificate that is still valid but expires within 30 days will soon cause trust validation failures."
|
|
171
|
+
severity: medium
|
|
172
|
+
category: cbom-compliance
|
|
173
|
+
dry-run-support: full
|
|
174
|
+
condition: |
|
|
175
|
+
components[
|
|
176
|
+
cryptoProperties.assetType = 'certificate'
|
|
177
|
+
and $certEndMillis(cryptoProperties.certificateProperties.notValidAfter) != null
|
|
178
|
+
and $certEndMillis(cryptoProperties.certificateProperties.notValidAfter) >= $toMillis($now())
|
|
179
|
+
and $certEndMillis(cryptoProperties.certificateProperties.notValidAfter) < ($toMillis($now()) + 2592000000)
|
|
180
|
+
]
|
|
181
|
+
location: |
|
|
182
|
+
{
|
|
183
|
+
"bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
|
|
184
|
+
}
|
|
185
|
+
message: "Certificate for Subject '{{ cryptoProperties.certificateProperties.subjectName }}' expires on {{ cryptoProperties.certificateProperties.notValidAfter }}"
|
|
186
|
+
mitigation: "Plan the certificate renewal and update the deployment trust stores before it expires."
|
|
187
|
+
evidence: |
|
|
188
|
+
{
|
|
189
|
+
"subject": cryptoProperties.certificateProperties.subjectName,
|
|
190
|
+
"issuer": cryptoProperties.certificateProperties.issuerName,
|
|
191
|
+
"notValidAfter": cryptoProperties.certificateProperties.notValidAfter
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
# The eight SPKI SHA-256 hashes Go 1.27.3 and 1.26.10 hard-code into
|
|
195
|
+
# crypto/x509 (CVE-2026-111943).
|
|
196
|
+
# https://github.com/golang/go/commit/90617fb7ceb59cf08bee7826bb51b8c8fb8c11de
|
|
197
|
+
- id: CBC-003
|
|
198
|
+
name: "Certificate or key distrusted by Go (CVE-2026-111943)"
|
|
199
|
+
description: "Go 1.27.3 and 1.26.10 reject every chain containing one of eight intermediate CA keys, matched by the SHA-256 of the certificate's SubjectPublicKeyInfo. The hash matches re-issued and cross-signed copies of the same key as well."
|
|
200
|
+
severity: high
|
|
201
|
+
category: cbom-security
|
|
202
|
+
dry-run-support: full
|
|
203
|
+
standards:
|
|
204
|
+
nist-800-53:
|
|
205
|
+
- "SC-13 Cryptographic Protection"
|
|
206
|
+
condition: |
|
|
207
|
+
(
|
|
208
|
+
$deny := [
|
|
209
|
+
"ebed6475c2c2d80fcb199f3fe8dd6e6b3ce60b77eb15d4e42c3dec0c6f5b5105",
|
|
210
|
+
"49dd353dc2b919a3770645117d0e60c16115e7d1bc259eefe734b00ea434fe5f",
|
|
211
|
+
"e0254c7fcdc265e2f0f8a428dabb75ab4ae039b4872d62f5ee57f0877d5a8a41",
|
|
212
|
+
"5c0660a2b164910d8ff589c18e14552e9e0ec237dcefe2cb736d41a4811f81a0",
|
|
213
|
+
"43bffa19d6ef651451f6841e019931e96f6f2eaeff28ab4b6f1ce4576de2717b",
|
|
214
|
+
"63ecefee431d49523bc1136c4e72d0206a477086caf606cd5cf025686c109cf8",
|
|
215
|
+
"ec4ffa1ad0ac88081314b7aaffef6a91f97cd57291bb5ba686c5415f5eb4f6b6",
|
|
216
|
+
"92c063d67e8f14db71d288e11266ffdaf69cbf115f7bab14f3bc2f68d25e0e30"
|
|
217
|
+
];
|
|
218
|
+
components[
|
|
219
|
+
(
|
|
220
|
+
cryptoProperties.assetType = 'certificate'
|
|
221
|
+
or cryptoProperties.assetType = 'related-crypto-material'
|
|
222
|
+
)
|
|
223
|
+
and $exists(properties[name = 'cdx:crypto:spkiSha256'].value[$lowercase($) in $deny])
|
|
224
|
+
]
|
|
225
|
+
)
|
|
226
|
+
location: |
|
|
227
|
+
{
|
|
228
|
+
"bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
|
|
229
|
+
}
|
|
230
|
+
message: "Certificate or key '{{ name }}' carries a public key Go 1.27.3/1.26.10 distrust (CVE-2026-111943)"
|
|
231
|
+
mitigation: "Replace the certificate chain and remove the key from every trust store, bundle and pin. https://github.com/golang/go/commit/90617fb7ceb59cf08bee7826bb51b8c8fb8c11de"
|
|
232
|
+
evidence: |
|
|
233
|
+
{
|
|
234
|
+
"spkiSha256": $prop($, 'cdx:crypto:spkiSha256'),
|
|
235
|
+
"subject": cryptoProperties.certificateProperties.subjectName,
|
|
236
|
+
"locations": $count(evidence.occurrences)
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
- id: CBC-004
|
|
240
|
+
name: "Certificate issued under a Go-distrusted key (CVE-2026-111943)"
|
|
241
|
+
description: "The certificate was issued by one of the eight intermediate CA keys Go 1.27.3 and 1.26.10 distrust, so Go clients rebuilt with those releases will refuse the chain even while the operating system still accepts it."
|
|
242
|
+
severity: high
|
|
243
|
+
category: cbom-security
|
|
244
|
+
dry-run-support: full
|
|
245
|
+
standards:
|
|
246
|
+
nist-800-53:
|
|
247
|
+
- "SC-13 Cryptographic Protection"
|
|
248
|
+
condition: |
|
|
249
|
+
(
|
|
250
|
+
$deny := [
|
|
251
|
+
"ebed6475c2c2d80fcb199f3fe8dd6e6b3ce60b77eb15d4e42c3dec0c6f5b5105",
|
|
252
|
+
"49dd353dc2b919a3770645117d0e60c16115e7d1bc259eefe734b00ea434fe5f",
|
|
253
|
+
"e0254c7fcdc265e2f0f8a428dabb75ab4ae039b4872d62f5ee57f0877d5a8a41",
|
|
254
|
+
"5c0660a2b164910d8ff589c18e14552e9e0ec237dcefe2cb736d41a4811f81a0",
|
|
255
|
+
"43bffa19d6ef651451f6841e019931e96f6f2eaeff28ab4b6f1ce4576de2717b",
|
|
256
|
+
"63ecefee431d49523bc1136c4e72d0206a477086caf606cd5cf025686c109cf8",
|
|
257
|
+
"ec4ffa1ad0ac88081314b7aaffef6a91f97cd57291bb5ba686c5415f5eb4f6b6",
|
|
258
|
+
"92c063d67e8f14db71d288e11266ffdaf69cbf115f7bab14f3bc2f68d25e0e30"
|
|
259
|
+
];
|
|
260
|
+
$badSkis := components[
|
|
261
|
+
cryptoProperties.assetType = 'certificate'
|
|
262
|
+
and $exists(properties[name = 'cdx:crypto:spkiSha256'].value[$lowercase($) in $deny])
|
|
263
|
+
].properties[name = 'cdx:crypto:subjectKeyId'].value[$ != null].$lowercase($);
|
|
264
|
+
components[
|
|
265
|
+
cryptoProperties.assetType = 'certificate'
|
|
266
|
+
and $not($exists(properties[name = 'cdx:crypto:spkiSha256'].value[$lowercase($) in $deny]))
|
|
267
|
+
and (
|
|
268
|
+
$count(properties[name = 'cdx:crypto:issuerSpkiSha256' or name = 'cdx:crypto:unverifiedIssuerSpkiSha256'].value[$lowercase($) in $deny]) > 0
|
|
269
|
+
or (
|
|
270
|
+
$prop($, 'cdx:crypto:authorityKeyId') != null
|
|
271
|
+
and $lowercase($nullSafeProp($, 'cdx:crypto:authorityKeyId')) in $badSkis
|
|
272
|
+
)
|
|
273
|
+
)
|
|
274
|
+
]
|
|
275
|
+
)
|
|
276
|
+
location: |
|
|
277
|
+
{
|
|
278
|
+
"bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
|
|
279
|
+
}
|
|
280
|
+
message: "Certificate '{{ name }}' was issued under a public key Go 1.27.3/1.26.10 distrust (CVE-2026-111943)"
|
|
281
|
+
mitigation: "Re-issue the certificate under a trusted CA and update the server chain. https://github.com/golang/go/commit/90617fb7ceb59cf08bee7826bb51b8c8fb8c11de"
|
|
282
|
+
evidence: |
|
|
283
|
+
{
|
|
284
|
+
"authorityKeyId": $prop($, 'cdx:crypto:authorityKeyId'),
|
|
285
|
+
"issuerSpkiSha256": properties[name = 'cdx:crypto:issuerSpkiSha256'].value,
|
|
286
|
+
"subject": cryptoProperties.certificateProperties.subjectName
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
# Post-quantum OIDs (ML-DSA RFC 9881, SLH-DSA RFC 9909, ML-KEM RFC 9935) and
|
|
290
|
+
# the classical-only cutoff. NIST IR 8547 (initial public draft) proposes
|
|
291
|
+
# classical algorithms be disallowed after 2035.
|
|
292
|
+
- id: CBC-005
|
|
293
|
+
name: "Classical-only CA certificate valid past the post-quantum transition"
|
|
294
|
+
description: "A CA certificate whose key and signature algorithms are both classical stays valid beyond 2035-01-01, past the date NIST IR 8547 (initial public draft) proposes to disallow classical algorithms."
|
|
295
|
+
severity: low
|
|
296
|
+
category: cbom-security
|
|
297
|
+
dry-run-support: full
|
|
298
|
+
condition: |
|
|
299
|
+
(
|
|
300
|
+
$pq := [
|
|
301
|
+
"2.16.840.1.101.3.4.3.17", "2.16.840.1.101.3.4.3.18", "2.16.840.1.101.3.4.3.19",
|
|
302
|
+
"2.16.840.1.101.3.4.3.20", "2.16.840.1.101.3.4.3.21", "2.16.840.1.101.3.4.3.22",
|
|
303
|
+
"2.16.840.1.101.3.4.3.23", "2.16.840.1.101.3.4.3.24", "2.16.840.1.101.3.4.3.25",
|
|
304
|
+
"2.16.840.1.101.3.4.3.26", "2.16.840.1.101.3.4.3.27", "2.16.840.1.101.3.4.3.28",
|
|
305
|
+
"2.16.840.1.101.3.4.3.29", "2.16.840.1.101.3.4.3.30", "2.16.840.1.101.3.4.3.31",
|
|
306
|
+
"2.16.840.1.101.3.4.4.1", "2.16.840.1.101.3.4.4.2", "2.16.840.1.101.3.4.4.3"
|
|
307
|
+
];
|
|
308
|
+
$cutoff := '2035-01-01T00:00:00Z';
|
|
309
|
+
components[
|
|
310
|
+
cryptoProperties.assetType = 'certificate'
|
|
311
|
+
and $prop($, 'cdx:crypto:certRole') in ['root', 'intermediate']
|
|
312
|
+
and $prop($, 'cdx:crypto:publicKeyAlgorithmOid') != null
|
|
313
|
+
and $prop($, 'cdx:crypto:signatureAlgorithmOid') != null
|
|
314
|
+
and $not($prop($, 'cdx:crypto:publicKeyAlgorithmOid') in $pq)
|
|
315
|
+
and $not($prop($, 'cdx:crypto:signatureAlgorithmOid') in $pq)
|
|
316
|
+
and $certEndMillis(cryptoProperties.certificateProperties.notValidAfter) != null
|
|
317
|
+
and $certEndMillis(cryptoProperties.certificateProperties.notValidAfter) > $toMillis($cutoff)
|
|
318
|
+
]
|
|
319
|
+
)
|
|
320
|
+
location: |
|
|
321
|
+
{
|
|
322
|
+
"bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
|
|
323
|
+
}
|
|
324
|
+
message: "CA certificate '{{ name }}' uses only classical algorithms but is valid past the 2035-01-01 cutoff"
|
|
325
|
+
mitigation: "Plan a migration to post-quantum algorithms before the classical-only validity window ends."
|
|
326
|
+
evidence: |
|
|
327
|
+
{
|
|
328
|
+
"keyAlgorithmOid": $prop($, 'cdx:crypto:publicKeyAlgorithmOid'),
|
|
329
|
+
"signatureAlgorithmOid": $prop($, 'cdx:crypto:signatureAlgorithmOid'),
|
|
330
|
+
"notValidAfter": cryptoProperties.certificateProperties.notValidAfter
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
- id: CBC-006
|
|
334
|
+
name: "Post-quantum key certified with a classical signature"
|
|
335
|
+
description: "The certificate's public key is post-quantum but its signature algorithm is classical, so the authentication of that key is only as strong as the classical signature."
|
|
336
|
+
severity: medium
|
|
337
|
+
category: cbom-security
|
|
338
|
+
dry-run-support: full
|
|
339
|
+
condition: |
|
|
340
|
+
(
|
|
341
|
+
$pq := [
|
|
342
|
+
"2.16.840.1.101.3.4.3.17", "2.16.840.1.101.3.4.3.18", "2.16.840.1.101.3.4.3.19",
|
|
343
|
+
"2.16.840.1.101.3.4.3.20", "2.16.840.1.101.3.4.3.21", "2.16.840.1.101.3.4.3.22",
|
|
344
|
+
"2.16.840.1.101.3.4.3.23", "2.16.840.1.101.3.4.3.24", "2.16.840.1.101.3.4.3.25",
|
|
345
|
+
"2.16.840.1.101.3.4.3.26", "2.16.840.1.101.3.4.3.27", "2.16.840.1.101.3.4.3.28",
|
|
346
|
+
"2.16.840.1.101.3.4.3.29", "2.16.840.1.101.3.4.3.30", "2.16.840.1.101.3.4.3.31",
|
|
347
|
+
"2.16.840.1.101.3.4.4.1", "2.16.840.1.101.3.4.4.2", "2.16.840.1.101.3.4.4.3"
|
|
348
|
+
];
|
|
349
|
+
components[
|
|
350
|
+
cryptoProperties.assetType = 'certificate'
|
|
351
|
+
and $prop($, 'cdx:crypto:publicKeyAlgorithmOid') in $pq
|
|
352
|
+
and $prop($, 'cdx:crypto:signatureAlgorithmOid') != null
|
|
353
|
+
and $not($prop($, 'cdx:crypto:signatureAlgorithmOid') in $pq)
|
|
354
|
+
]
|
|
355
|
+
)
|
|
356
|
+
location: |
|
|
357
|
+
{
|
|
358
|
+
"bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
|
|
359
|
+
}
|
|
360
|
+
message: "Certificate '{{ name }}' binds a post-quantum key with the classical signature '{{ $prop($, 'cdx:crypto:signatureAlgorithm') }}'"
|
|
361
|
+
mitigation: "Re-issue the certificate under a post-quantum or composite signature scheme once one is standardised for your chain."
|
|
362
|
+
evidence: |
|
|
363
|
+
{
|
|
364
|
+
"keyAlgorithmOid": $prop($, 'cdx:crypto:publicKeyAlgorithmOid'),
|
|
365
|
+
"signatureAlgorithmOid": $prop($, 'cdx:crypto:signatureAlgorithmOid')
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
- id: CBC-007
|
|
369
|
+
name: "Unrecognised certificate algorithm"
|
|
370
|
+
description: "The key or signature algorithm is named only by its dotted OID, which means a composite, pre-standard or otherwise unregistered algorithm the inventory cannot classify. PLAN assigns this rule info severity; the rule engine's lowest level is low."
|
|
371
|
+
severity: low
|
|
372
|
+
category: cbom-security
|
|
373
|
+
dry-run-support: full
|
|
374
|
+
condition: |
|
|
375
|
+
components[
|
|
376
|
+
(
|
|
377
|
+
cryptoProperties.assetType = 'certificate'
|
|
378
|
+
and $match($safeStr($prop($, 'cdx:crypto:signatureAlgorithm')), /^[0-9]+(\.[0-9]+)+$/)
|
|
379
|
+
)
|
|
380
|
+
or (
|
|
381
|
+
cryptoProperties.assetType = 'related-crypto-material'
|
|
382
|
+
and $match(name, /^[0-9]+(\.[0-9]+)+$/)
|
|
383
|
+
)
|
|
384
|
+
]
|
|
385
|
+
location: |
|
|
386
|
+
{
|
|
387
|
+
"bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
|
|
388
|
+
}
|
|
389
|
+
message: "Certificate '{{ name }}' uses an algorithm named only by its OID '{{ $firstNonEmpty($prop($, 'cdx:crypto:signatureAlgorithm'), name) }}'"
|
|
390
|
+
mitigation: "Identify the algorithm behind the OID and confirm it is an approved one for this use."
|
|
391
|
+
evidence: |
|
|
392
|
+
{
|
|
393
|
+
"signatureAlgorithm": $prop($, 'cdx:crypto:signatureAlgorithm'),
|
|
394
|
+
"signatureAlgorithmOid": $prop($, 'cdx:crypto:signatureAlgorithmOid'),
|
|
395
|
+
"name": name
|
|
396
|
+
}
|