@cdxgen/cdxgen 13.4.0 → 13.6.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.
Files changed (305) hide show
  1. package/README.md +9 -9
  2. package/bin/cdxgen-secure.js +15 -0
  3. package/bin/cdxgen.js +29 -5
  4. package/bin/evinse.js +8 -0
  5. package/bin/hbom.js +15 -7
  6. package/bin/repl.js +29 -0
  7. package/bin/validate.js +6 -0
  8. package/data/cbomosdb-queries.json +13 -1
  9. package/data/component-tags.json +8 -0
  10. package/data/license-aliases.json +24 -2
  11. package/data/queries-darwin.json +25 -1
  12. package/data/queries-win.json +19 -1
  13. package/data/queries.json +41 -0
  14. package/data/remediations.json +407 -1
  15. package/data/rules/ai-bom.yaml +1 -1
  16. package/data/rules/brotli-decoder.yaml +107 -0
  17. package/data/rules/cbom-security.yaml +235 -4
  18. package/data/rules/go-binaries.yaml +46 -0
  19. package/data/rules/golem-go.yaml +80 -0
  20. package/data/rules/hbom-compliance.yaml +40 -22
  21. package/data/rules/hbom-performance.yaml +7 -1
  22. package/data/rules/host-topology.yaml +1 -1
  23. package/data/rules/obom-runtime.yaml +31 -2
  24. package/data/rules/php-runtime.yaml +143 -0
  25. package/data/rules/vscode-extensions.yaml +75 -0
  26. package/data/spdx-license-list.json +121 -7
  27. package/data/spdx-licenses.json +69 -0
  28. package/data/spdx.schema.json +845 -2
  29. package/lib/audit/index.js +14 -0
  30. package/lib/cli/bomAssembly.js +120 -6
  31. package/lib/cli/cliOptions.js +110 -3
  32. package/lib/cli/index.js +182 -6
  33. package/lib/cli/jsBom.js +153 -64
  34. package/lib/cli/jvmBom.js +363 -66
  35. package/lib/cli/managedBom.js +853 -87
  36. package/lib/cli/nativeBom.js +267 -33
  37. package/lib/core/boundedFile.js +344 -0
  38. package/lib/core/brotliProbe.js +182 -0
  39. package/lib/core/env.js +38 -8
  40. package/lib/core/fs.js +40 -19
  41. package/lib/core/httpClient.js +172 -46
  42. package/lib/core/lockPaths.js +38 -0
  43. package/lib/core/paths.js +24 -1
  44. package/lib/core/processTree.js +5 -0
  45. package/lib/core/projectConfig.js +1 -0
  46. package/lib/core/projectTooling.js +97 -0
  47. package/lib/core/propertySanitizer.js +72 -0
  48. package/lib/core/toolRegistry.js +170 -0
  49. package/lib/ecosystems/cppEvidence.js +263 -106
  50. package/lib/ecosystems/cppIncludeResolver.js +16 -5
  51. package/lib/ecosystems/ecosystems.js +25 -10
  52. package/lib/ecosystems/gemHostProbe.js +301 -0
  53. package/lib/ecosystems/golem.js +550 -6
  54. package/lib/ecosystems/gradleutils.js +858 -244
  55. package/lib/ecosystems/parsers-bazel.js +107 -6
  56. package/lib/ecosystems/parsers-dotnet.js +117 -18
  57. package/lib/ecosystems/parsers-go.js +1090 -367
  58. package/lib/ecosystems/parsers-js.js +505 -22
  59. package/lib/ecosystems/parsers-jvm.js +259 -17
  60. package/lib/ecosystems/parsers-misc.js +438 -64
  61. package/lib/ecosystems/parsers-python.js +100 -12
  62. package/lib/ecosystems/pythonutils.js +128 -2
  63. package/lib/ecosystems/rubyutils.js +544 -34
  64. package/lib/ecosystems/rusi.js +10 -0
  65. package/lib/ecosystems/scalacliutils.js +4 -1
  66. package/lib/ecosystems/scalasem.js +798 -151
  67. package/lib/ecosystems/vendoredCode.js +237 -3
  68. package/lib/ecosystems/venvProbe.js +360 -0
  69. package/lib/evinser/evinser.js +472 -61
  70. package/lib/evinser/swiftsem.js +68 -5
  71. package/lib/helpers/agenticToolutils.js +413 -93
  72. package/lib/helpers/vsixutils.js +1574 -315
  73. package/lib/inventory/agentSkillSpec.js +17 -0
  74. package/lib/inventory/apkInstalledDb.js +243 -0
  75. package/lib/inventory/atomUtils.js +110 -0
  76. package/lib/inventory/auditCategories.js +3 -3
  77. package/lib/inventory/brotliDecoder.js +142 -0
  78. package/lib/inventory/buildToolRateLimit.js +1 -1
  79. package/lib/inventory/cacheDir.js +52 -9
  80. package/lib/inventory/cbomutils.js +56 -7
  81. package/lib/inventory/certificates.js +2371 -0
  82. package/lib/inventory/communityAiConfigParser.js +4 -9
  83. package/lib/inventory/deps.js +41 -4
  84. package/lib/inventory/display.js +200 -3
  85. package/lib/inventory/dosai.js +639 -63
  86. package/lib/inventory/dotnetRuntime.js +217 -0
  87. package/lib/inventory/dynamic.js +45 -3
  88. package/lib/inventory/envcontext.js +475 -18
  89. package/lib/inventory/evidenceUtils.js +447 -23
  90. package/lib/inventory/fetchBatch.js +1 -1
  91. package/lib/inventory/formulationParsers.js +32 -3
  92. package/lib/inventory/goBuildInfo.js +140 -0
  93. package/lib/inventory/gtfobins.js +13 -0
  94. package/lib/inventory/hbom.js +67 -7
  95. package/lib/inventory/hbomAnalysis.js +16 -0
  96. package/lib/inventory/hostRuntimeProbe.js +686 -0
  97. package/lib/inventory/hostTopology.js +21 -0
  98. package/lib/inventory/jvmLocalRepos.js +9 -2
  99. package/lib/inventory/jvmToolEnv.js +29 -0
  100. package/lib/inventory/licenseEnhancer.js +12 -0
  101. package/lib/inventory/mavenCentralMirror.js +534 -0
  102. package/lib/inventory/nodeBuildInfo.js +218 -0
  103. package/lib/inventory/nodeHostProbe.js +202 -0
  104. package/lib/inventory/osPackagePurl.js +244 -0
  105. package/lib/inventory/osPackageResolver.js +271 -87
  106. package/lib/inventory/osinfo.js +79 -31
  107. package/lib/inventory/osqueryTransform.js +114 -5
  108. package/lib/inventory/phpBuildInfo.js +438 -0
  109. package/lib/inventory/phpHostProbe.js +185 -0
  110. package/lib/inventory/rootfsCerts.js +426 -0
  111. package/lib/inventory/rubyBuildInfo.js +972 -0
  112. package/lib/inventory/rubyHostProbe.js +218 -0
  113. package/lib/inventory/scalaCoords.js +4 -3
  114. package/lib/inventory/scalaDedupe.js +440 -0
  115. package/lib/inventory/source.js +256 -5
  116. package/lib/inventory/spdx.js +144 -0
  117. package/lib/inventory/traceRunner.js +5 -1
  118. package/lib/inventory/tracedCrypto.js +129 -0
  119. package/lib/managers/binary.js +866 -186
  120. package/lib/managers/docker.js +245 -12
  121. package/lib/parsers/email.js +277 -0
  122. package/lib/parsers/largeJson.js +62 -13
  123. package/lib/parsers/vscodeExtensionId.js +183 -0
  124. package/lib/server/server.js +198 -2
  125. package/lib/stages/postgen/annotator.js +17 -1
  126. package/lib/stages/postgen/introspection/reflect.js +4 -1
  127. package/lib/stages/postgen/postgen.js +5 -5
  128. package/lib/stages/postgen/ruleEngine.js +71 -6
  129. package/lib/stages/postgen/specVersionCompat.js +30 -0
  130. package/lib/stages/pregen/envAudit.js +1 -0
  131. package/lib/stages/pregen/pregen.js +231 -62
  132. package/lib/validator/bomValidator.js +32 -6
  133. package/lib/validator/generated/runtime.mjs +13 -0
  134. package/lib/validator/generated/validate-1.6.mjs +27 -8
  135. package/lib/validator/generated/validate-1.7.mjs +32 -13
  136. package/lib/validator/generated/validate-2.0.mjs +31 -12
  137. package/lib/validator/index.js +1 -1
  138. package/package.json +19 -18
  139. package/types/bin/cdxgen-secure.d.ts +3 -0
  140. package/types/bin/cdxgen-secure.d.ts.map +1 -0
  141. package/types/bin/repl.d.ts.map +1 -1
  142. package/types/lib/audit/index.d.ts.map +1 -1
  143. package/types/lib/cli/bomAssembly.d.ts +22 -3
  144. package/types/lib/cli/bomAssembly.d.ts.map +1 -1
  145. package/types/lib/cli/cliOptions.d.ts +43 -0
  146. package/types/lib/cli/cliOptions.d.ts.map +1 -1
  147. package/types/lib/cli/index.d.ts.map +1 -1
  148. package/types/lib/cli/jsBom.d.ts +1 -17
  149. package/types/lib/cli/jsBom.d.ts.map +1 -1
  150. package/types/lib/cli/jvmBom.d.ts +20 -0
  151. package/types/lib/cli/jvmBom.d.ts.map +1 -1
  152. package/types/lib/cli/managedBom.d.ts.map +1 -1
  153. package/types/lib/cli/nativeBom.d.ts.map +1 -1
  154. package/types/lib/core/boundedFile.d.ts +70 -0
  155. package/types/lib/core/boundedFile.d.ts.map +1 -0
  156. package/types/lib/core/brotliProbe.d.ts +37 -0
  157. package/types/lib/core/brotliProbe.d.ts.map +1 -0
  158. package/types/lib/core/env.d.ts +22 -2
  159. package/types/lib/core/env.d.ts.map +1 -1
  160. package/types/lib/core/fs.d.ts.map +1 -1
  161. package/types/lib/core/httpClient.d.ts +24 -0
  162. package/types/lib/core/httpClient.d.ts.map +1 -1
  163. package/types/lib/core/lockPaths.d.ts +19 -0
  164. package/types/lib/core/lockPaths.d.ts.map +1 -0
  165. package/types/lib/core/processTree.d.ts +2 -0
  166. package/types/lib/core/processTree.d.ts.map +1 -1
  167. package/types/lib/core/projectConfig.d.ts.map +1 -1
  168. package/types/lib/core/projectTooling.d.ts +41 -0
  169. package/types/lib/core/projectTooling.d.ts.map +1 -0
  170. package/types/lib/core/propertySanitizer.d.ts +26 -0
  171. package/types/lib/core/propertySanitizer.d.ts.map +1 -1
  172. package/types/lib/core/toolRegistry.d.ts +36 -0
  173. package/types/lib/core/toolRegistry.d.ts.map +1 -0
  174. package/types/lib/ecosystems/cppEvidence.d.ts +40 -13
  175. package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -1
  176. package/types/lib/ecosystems/cppIncludeResolver.d.ts +2 -1
  177. package/types/lib/ecosystems/cppIncludeResolver.d.ts.map +1 -1
  178. package/types/lib/ecosystems/ecosystems.d.ts.map +1 -1
  179. package/types/lib/ecosystems/gemHostProbe.d.ts +28 -0
  180. package/types/lib/ecosystems/gemHostProbe.d.ts.map +1 -0
  181. package/types/lib/ecosystems/golem.d.ts +81 -1
  182. package/types/lib/ecosystems/golem.d.ts.map +1 -1
  183. package/types/lib/ecosystems/gradleutils.d.ts +57 -21
  184. package/types/lib/ecosystems/gradleutils.d.ts.map +1 -1
  185. package/types/lib/ecosystems/parsers-bazel.d.ts.map +1 -1
  186. package/types/lib/ecosystems/parsers-dotnet.d.ts +40 -4
  187. package/types/lib/ecosystems/parsers-dotnet.d.ts.map +1 -1
  188. package/types/lib/ecosystems/parsers-go.d.ts +85 -13
  189. package/types/lib/ecosystems/parsers-go.d.ts.map +1 -1
  190. package/types/lib/ecosystems/parsers-js.d.ts +17 -20
  191. package/types/lib/ecosystems/parsers-js.d.ts.map +1 -1
  192. package/types/lib/ecosystems/parsers-jvm.d.ts +28 -2
  193. package/types/lib/ecosystems/parsers-jvm.d.ts.map +1 -1
  194. package/types/lib/ecosystems/parsers-misc.d.ts +37 -58
  195. package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -1
  196. package/types/lib/ecosystems/parsers-python.d.ts +14 -3
  197. package/types/lib/ecosystems/parsers-python.d.ts.map +1 -1
  198. package/types/lib/ecosystems/pythonutils.d.ts +19 -1
  199. package/types/lib/ecosystems/pythonutils.d.ts.map +1 -1
  200. package/types/lib/ecosystems/rubyutils.d.ts +144 -12
  201. package/types/lib/ecosystems/rubyutils.d.ts.map +1 -1
  202. package/types/lib/ecosystems/rusi.d.ts.map +1 -1
  203. package/types/lib/ecosystems/scalacliutils.d.ts.map +1 -1
  204. package/types/lib/ecosystems/scalasem.d.ts.map +1 -1
  205. package/types/lib/ecosystems/vendoredCode.d.ts +26 -0
  206. package/types/lib/ecosystems/vendoredCode.d.ts.map +1 -1
  207. package/types/lib/ecosystems/venvProbe.d.ts +40 -0
  208. package/types/lib/ecosystems/venvProbe.d.ts.map +1 -0
  209. package/types/lib/evinser/evinser.d.ts +88 -8
  210. package/types/lib/evinser/evinser.d.ts.map +1 -1
  211. package/types/lib/evinser/swiftsem.d.ts +10 -0
  212. package/types/lib/evinser/swiftsem.d.ts.map +1 -1
  213. package/types/lib/inventory/agentSkillSpec.d.ts +13 -0
  214. package/types/lib/inventory/agentSkillSpec.d.ts.map +1 -0
  215. package/types/lib/inventory/apkInstalledDb.d.ts +42 -0
  216. package/types/lib/inventory/apkInstalledDb.d.ts.map +1 -0
  217. package/types/lib/inventory/atomUtils.d.ts +33 -0
  218. package/types/lib/inventory/atomUtils.d.ts.map +1 -1
  219. package/types/lib/inventory/brotliDecoder.d.ts +58 -0
  220. package/types/lib/inventory/brotliDecoder.d.ts.map +1 -0
  221. package/types/lib/inventory/cacheDir.d.ts +12 -4
  222. package/types/lib/inventory/cacheDir.d.ts.map +1 -1
  223. package/types/lib/inventory/cbomutils.d.ts +17 -0
  224. package/types/lib/inventory/cbomutils.d.ts.map +1 -1
  225. package/types/lib/inventory/certificates.d.ts +205 -0
  226. package/types/lib/inventory/certificates.d.ts.map +1 -0
  227. package/types/lib/inventory/communityAiConfigParser.d.ts.map +1 -1
  228. package/types/lib/inventory/deps.d.ts +2 -1
  229. package/types/lib/inventory/deps.d.ts.map +1 -1
  230. package/types/lib/inventory/display.d.ts +18 -0
  231. package/types/lib/inventory/display.d.ts.map +1 -1
  232. package/types/lib/inventory/dosai.d.ts +162 -7
  233. package/types/lib/inventory/dosai.d.ts.map +1 -1
  234. package/types/lib/inventory/dotnetRuntime.d.ts +44 -0
  235. package/types/lib/inventory/dotnetRuntime.d.ts.map +1 -0
  236. package/types/lib/inventory/dynamic.d.ts +6 -1
  237. package/types/lib/inventory/dynamic.d.ts.map +1 -1
  238. package/types/lib/inventory/envcontext.d.ts +92 -8
  239. package/types/lib/inventory/envcontext.d.ts.map +1 -1
  240. package/types/lib/inventory/evidenceUtils.d.ts +29 -10
  241. package/types/lib/inventory/evidenceUtils.d.ts.map +1 -1
  242. package/types/lib/inventory/formulationParsers.d.ts.map +1 -1
  243. package/types/lib/inventory/goBuildInfo.d.ts +10 -0
  244. package/types/lib/inventory/goBuildInfo.d.ts.map +1 -0
  245. package/types/lib/inventory/gtfobins.d.ts.map +1 -1
  246. package/types/lib/inventory/hbom.d.ts.map +1 -1
  247. package/types/lib/inventory/hbomAnalysis.d.ts +10 -0
  248. package/types/lib/inventory/hbomAnalysis.d.ts.map +1 -1
  249. package/types/lib/inventory/hostRuntimeProbe.d.ts +44 -0
  250. package/types/lib/inventory/hostRuntimeProbe.d.ts.map +1 -0
  251. package/types/lib/inventory/hostTopology.d.ts.map +1 -1
  252. package/types/lib/inventory/jvmToolEnv.d.ts +12 -0
  253. package/types/lib/inventory/jvmToolEnv.d.ts.map +1 -1
  254. package/types/lib/inventory/licenseEnhancer.d.ts.map +1 -1
  255. package/types/lib/inventory/mavenCentralMirror.d.ts +170 -0
  256. package/types/lib/inventory/mavenCentralMirror.d.ts.map +1 -0
  257. package/types/lib/inventory/nodeBuildInfo.d.ts +95 -0
  258. package/types/lib/inventory/nodeBuildInfo.d.ts.map +1 -0
  259. package/types/lib/inventory/nodeHostProbe.d.ts +15 -0
  260. package/types/lib/inventory/nodeHostProbe.d.ts.map +1 -0
  261. package/types/lib/inventory/osPackagePurl.d.ts +99 -0
  262. package/types/lib/inventory/osPackagePurl.d.ts.map +1 -0
  263. package/types/lib/inventory/osPackageResolver.d.ts +44 -2
  264. package/types/lib/inventory/osPackageResolver.d.ts.map +1 -1
  265. package/types/lib/inventory/osinfo.d.ts +31 -6
  266. package/types/lib/inventory/osinfo.d.ts.map +1 -1
  267. package/types/lib/inventory/osqueryTransform.d.ts +51 -0
  268. package/types/lib/inventory/osqueryTransform.d.ts.map +1 -1
  269. package/types/lib/inventory/phpBuildInfo.d.ts +142 -0
  270. package/types/lib/inventory/phpBuildInfo.d.ts.map +1 -0
  271. package/types/lib/inventory/phpHostProbe.d.ts +35 -0
  272. package/types/lib/inventory/phpHostProbe.d.ts.map +1 -0
  273. package/types/lib/inventory/rootfsCerts.d.ts +27 -0
  274. package/types/lib/inventory/rootfsCerts.d.ts.map +1 -0
  275. package/types/lib/inventory/rubyBuildInfo.d.ts +271 -0
  276. package/types/lib/inventory/rubyBuildInfo.d.ts.map +1 -0
  277. package/types/lib/inventory/rubyHostProbe.d.ts +47 -0
  278. package/types/lib/inventory/rubyHostProbe.d.ts.map +1 -0
  279. package/types/lib/inventory/source.d.ts +38 -0
  280. package/types/lib/inventory/source.d.ts.map +1 -1
  281. package/types/lib/inventory/spdx.d.ts +15 -0
  282. package/types/lib/inventory/spdx.d.ts.map +1 -1
  283. package/types/lib/inventory/traceRunner.d.ts +4 -1
  284. package/types/lib/inventory/traceRunner.d.ts.map +1 -1
  285. package/types/lib/inventory/tracedCrypto.d.ts +22 -0
  286. package/types/lib/inventory/tracedCrypto.d.ts.map +1 -1
  287. package/types/lib/managers/binary.d.ts +10 -0
  288. package/types/lib/managers/binary.d.ts.map +1 -1
  289. package/types/lib/managers/docker.d.ts +24 -0
  290. package/types/lib/managers/docker.d.ts.map +1 -1
  291. package/types/lib/parsers/email.d.ts +19 -0
  292. package/types/lib/parsers/email.d.ts.map +1 -0
  293. package/types/lib/parsers/largeJson.d.ts +17 -3
  294. package/types/lib/parsers/largeJson.d.ts.map +1 -1
  295. package/types/lib/server/server.d.ts +8 -0
  296. package/types/lib/server/server.d.ts.map +1 -1
  297. package/types/lib/stages/postgen/annotator.d.ts.map +1 -1
  298. package/types/lib/stages/postgen/introspection/reflect.d.ts.map +1 -1
  299. package/types/lib/stages/postgen/ruleEngine.d.ts +7 -4
  300. package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -1
  301. package/types/lib/stages/postgen/specVersionCompat.d.ts.map +1 -1
  302. package/types/lib/stages/pregen/envAudit.d.ts.map +1 -1
  303. package/types/lib/stages/pregen/pregen.d.ts +26 -9
  304. package/types/lib/stages/pregen/pregen.d.ts.map +1 -1
  305. package/types/lib/validator/bomValidator.d.ts.map +1 -1
package/README.md CHANGED
@@ -16,7 +16,7 @@ cdxgen is a CLI tool, library, [REPL](./ADVANCED.md), and server to create, vali
16
16
 
17
17
  Supported BOM formats:
18
18
 
19
- - Hardware (HBOM) - For supported live hosts such as Apple Silicon macOS and Linux amd64/arm64 systems.
19
+ - Hardware (HBOM) - For supported live hosts such as Apple Silicon macOS, Linux amd64/arm64, and Windows amd64/arm64 systems.
20
20
  - Software (SBOM) - For many languages and container images.
21
21
  - Cryptography (CBOM) - For Java keystores and certificates, plus JavaScript and TypeScript source-level algorithm inventory.
22
22
  - Operations (OBOM) - For Linux container images and VMs running Linux or Windows operating systems.
@@ -175,7 +175,7 @@ Regardless of how you install, the following commands are available:
175
175
  | `obom` | Alias for `cdxgen -t os` | yes |
176
176
  | `saasbom` | Alias for SaaSBOM-oriented `cdxgen` defaults | yes |
177
177
  | `spdxgen` | Alias for `cdxgen --format spdx` | use `cdxgen` |
178
- | `cdxgen-secure` | Alias for hardened `cdxgen` defaults | use `cdxgen` |
178
+ | `cdxgen-secure` | `cdxgen` in secure mode, with dependency installation always off | use `cdxgen` |
179
179
 
180
180
  Standalone GitHub release binaries are published for `cdxgen`, `cdxgen-slim`, `aibom`, `cbom`, `obom`, `saasbom`, `hbom`, `hbom-slim`, `cdx-audit`, `cdx-convert`, `cdx-sign`, `cdx-validate`, `cdx-verify`, and `tracebom`.
181
181
 
@@ -187,7 +187,7 @@ The `cbom` and `saasbom` release binaries bundle the Atom analysis stack (`@appt
187
187
 
188
188
  For AI-heavy repositories, cdxgen also supports an AI-BOM workflow via the `aibom` command or the `-t ai` project type aliases (`ai`, `aibom`, `ai-bom`). This emits AI service/model evidence and pairs naturally with the `ai-bom` BOM-audit category alias for governance, security, performance, AI-agent, and MCP findings.
189
189
 
190
- For host inventories, `hbom --include-runtime` produces a merged HBOM + OBOM view with strict topology links such as interface-name, driver-module, storage/runtime, and explicit secure-boot trust matches, plus a `host-topology` BOM audit pack for higher-confidence host findings. When the live hardware collector reports missing utilities or permission-sensitive enrichments, use `hbom diagnostics` (or inspect the derived `cdx:hbom:analysis:*` summary properties) before deciding whether a rerun with `--privileged` is justified.
190
+ For host inventories, `hbom --include-runtime` produces a merged HBOM + OBOM view with strict topology links such as interface-name, driver-module, storage/runtime (including Windows drive letters), and explicit secure-boot trust matches, plus a `host-topology` BOM audit pack for higher-confidence host findings. When the live hardware collector reports missing utilities or permission-sensitive enrichments, use `hbom diagnostics` (or inspect the derived `cdx:hbom:analysis:*` summary properties) before deciding whether a rerun with `--privileged` is justified. On Windows, `--privileged` only helps from an already-elevated session, and a non-administrator over SSH or WinRM is denied every WMI query; see [HBOM permissions](docs/PERMISSIONS.md#hbom-permissions).
191
191
 
192
192
  ### Standalone executables (recommended)
193
193
 
@@ -216,7 +216,7 @@ Common asset names:
216
216
  #### Linux
217
217
 
218
218
  ```bash
219
- VERSION="v13.4.0"
219
+ VERSION="v13.6.0"
220
220
  ASSET="cdx-audit-linux-amd64"
221
221
  BASE_URL="https://github.com/cdxgen/cdxgen/releases/download/${VERSION}"
222
222
 
@@ -230,7 +230,7 @@ chmod +x "${ASSET}"
230
230
  #### macOS
231
231
 
232
232
  ```bash
233
- VERSION="v13.4.0"
233
+ VERSION="v13.6.0"
234
234
  ASSET="cdx-audit-darwin-arm64"
235
235
  BASE_URL="https://github.com/cdxgen/cdxgen/releases/download/${VERSION}"
236
236
 
@@ -244,7 +244,7 @@ chmod +x "${ASSET}"
244
244
  #### Windows (PowerShell)
245
245
 
246
246
  ```powershell
247
- $Version = "v13.4.0"
247
+ $Version = "v13.6.0"
248
248
  $Asset = "cdx-audit-windows-amd64.exe"
249
249
  $BaseUrl = "https://github.com/cdxgen/cdxgen/releases/download/$Version"
250
250
 
@@ -269,7 +269,7 @@ steps:
269
269
  env:
270
270
  GH_TOKEN: ${{ github.token }}
271
271
  run: |
272
- gh release download v13.4.0 \
272
+ gh release download v13.6.0 \
273
273
  --repo cdxgen/cdxgen \
274
274
  --pattern 'cdx-audit-linux-amd64' \
275
275
  --pattern 'cdx-audit-linux-amd64.sha256'
@@ -296,7 +296,7 @@ winget install cdxgen
296
296
 
297
297
  You can also use the cdxgen container image with node, deno, or bun runtime versions.
298
298
 
299
- The default version uses Node.js 24
299
+ The default version uses Node.js 26
300
300
 
301
301
  ```bash
302
302
  docker run --rm -e CDXGEN_DEBUG_MODE=debug -v /tmp:/tmp -v $(pwd):/app:rw -t ghcr.io/cdxgen/cdxgen:master -r /app -o /app/bom.json
@@ -337,7 +337,7 @@ npm install -g @cdxgen/cdxgen --ignore-scripts --min-release-age=2
337
337
  **pnpm**:
338
338
 
339
339
  ```shell
340
- pnpm add -g @cdxgen/cdxgen --omit=optional --ignore-scripts --minimum-release-age=2880
340
+ pnpm add -g @cdxgen/cdxgen --ignore-scripts --config.minimum-release-age=2880
341
341
  ```
342
342
 
343
343
  **bun**:
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ // cdxgen-secure: cdxgen in secure mode.
3
+ //
4
+ // This is an entry point of its own rather than a second name for
5
+ // bin/cdxgen.js. cdxgen recognised the command from the script path in
6
+ // process.argv[1], but bun reports the real file behind a symlink there and
7
+ // the npm shims on Windows always name bin/cdxgen.js, so in both cases a
8
+ // `cdxgen-secure` that pointed at bin/cdxgen.js ran as plain cdxgen. Turning
9
+ // secure mode on here, before any cdxgen module loads, also means the modules
10
+ // that read CDXGEN_SECURE_MODE once at import see it.
11
+ import process from "node:process";
12
+
13
+ process.env.CDXGEN_SECURE_MODE = "true";
14
+
15
+ await import("./cdxgen.js");
package/bin/cdxgen.js CHANGED
@@ -4,7 +4,6 @@ import crypto from "node:crypto";
4
4
  import fs from "node:fs";
5
5
  import http from "node:http";
6
6
  import https from "node:https";
7
- import { tmpdir } from "node:os";
8
7
  import {
9
8
  basename,
10
9
  dirname,
@@ -22,6 +21,7 @@ import { hideBin } from "yargs/helpers";
22
21
  import { getExactAiInventoryType } from "../lib/cli/bomAssembly.js";
23
22
  import {
24
23
  applyAdvancedOptions as applyAdvancedOptionsImpl,
24
+ applyOperatorToolingChoice,
25
25
  buildOptionsFromArgs,
26
26
  isUserProvided,
27
27
  validateSpecVersion,
@@ -39,6 +39,7 @@ import {
39
39
  PROJECT_CONFIG_FILENAMES,
40
40
  sanitizeProjectConfig,
41
41
  } from "../lib/core/projectConfig.js";
42
+ import { isSecureModeActive } from "../lib/core/projectTooling.js";
42
43
  import {
43
44
  ui as defaultUi,
44
45
  installConsoleShim,
@@ -103,6 +104,7 @@ import {
103
104
  printSummary,
104
105
  printTable,
105
106
  } from "../lib/inventory/display.js";
107
+ import { runsEvidenceAnalysis } from "../lib/inventory/dosai.js";
106
108
  import {
107
109
  ensureNoMixedHbomProjectTypes,
108
110
  ensureSupportedHbomSpecVersion,
@@ -138,6 +140,11 @@ import { prepareEnv } from "../lib/stages/pregen/pregen.js";
138
140
  import { validateSpdx } from "../lib/validator/bomValidator.js";
139
141
  import { validateGeneratedBom } from "../lib/validator/index.js";
140
142
 
143
+ // The environment as the operator launched cdxgen. The CLI later copies some
144
+ // parsed options into the environment (--introspect becomes
145
+ // CDXGEN_INTROSPECT), so the operator's own choices are read from this copy.
146
+ const launchEnv = { ...process.env };
147
+
141
148
  // Support for config files. The config file lives in the directory under
142
149
  // analysis, so it carries that directory's trust level; see
143
150
  // sanitizeProjectConfig for the boundary this applies.
@@ -483,6 +490,10 @@ const args = _yargs
483
490
  description: "Path for the usages slices file created by atom.",
484
491
  hidden: true,
485
492
  })
493
+ .option("callsites-slices-file", {
494
+ description: "Path for the callsites slices file created by atom.",
495
+ hidden: true,
496
+ })
486
497
  .option("data-flow-slices-file", {
487
498
  description: "Path for the data-flow slices file created by atom.",
488
499
  hidden: true,
@@ -1127,8 +1138,10 @@ let autoLedgerSidecar;
1127
1138
  if (options.introspect) {
1128
1139
  process.env.CDXGEN_INTROSPECT = "true";
1129
1140
  if (!isDryRun && !readEnvironmentVariable("CDXGEN_INTROSPECT_LEDGER")) {
1141
+ // The temp directory, not the OS one: under the permission model it is
1142
+ // the directory cdxgen is granted writes to.
1130
1143
  autoLedgerSidecar = join(
1131
- tmpdir(),
1144
+ getTmpDir(),
1132
1145
  `cdxgen-introspect-ledger-${process.pid}.jsonl`,
1133
1146
  );
1134
1147
  process.env.CDXGEN_INTROSPECT_LEDGER = autoLedgerSidecar;
@@ -1266,7 +1279,15 @@ if (options.lifecycle) {
1266
1279
  }
1267
1280
  const isHbomOnlyInvocation = isHbomOnlyProjectTypes(options.projectType);
1268
1281
  const advancedWarnings = applyAdvancedOptionsImpl(options, {
1269
- isSecureMode,
1282
+ isSecureMode: isSecureModeActive(),
1283
+ });
1284
+ // The config file comes from the working directory, usually the scanned
1285
+ // project, so whether the project's own code may run stays the operator's
1286
+ // choice from the command line and environment.
1287
+ applyOperatorToolingChoice(options, {
1288
+ env: launchEnv,
1289
+ isSecureMode: isSecureModeActive(),
1290
+ projectConfig: config,
1270
1291
  });
1271
1292
  if (options?.technique && Array.isArray(options.technique)) {
1272
1293
  if (options.technique.length === 1) {
@@ -2128,7 +2149,7 @@ const writeCycloneDxOutput = (jsonFile, bomJson, options) => {
2128
2149
  }
2129
2150
  }
2130
2151
  let internalCycloneDxInputPath = outputPlan.outputs.cyclonedx;
2131
- if ((options.evidence || options.includeCrypto) && bomNSData?.bomJson) {
2152
+ if (runsEvidenceAnalysis(options) && bomNSData?.bomJson) {
2132
2153
  if (!internalCycloneDxInputPath) {
2133
2154
  internalCycloneDxInputPath = join(
2134
2155
  getTmpDir(),
@@ -2151,7 +2172,10 @@ const writeCycloneDxOutput = (jsonFile, bomJson, options) => {
2151
2172
  }
2152
2173
  }
2153
2174
  // Evidence generation
2154
- if (options.evidence || options.includeCrypto) {
2175
+ // The same helper decides in createCsharpBom whether the dosai methods
2176
+ // report may be trimmed: --include-crypto alone runs evinse too, so testing
2177
+ // options.evidence alone here would trim a report this scan needs full.
2178
+ if (runsEvidenceAnalysis(options)) {
2155
2179
  if (isDryRun) {
2156
2180
  recordActivity({
2157
2181
  kind: "write",
package/bin/evinse.js CHANGED
@@ -226,6 +226,11 @@ const args = yargs(hideBin(process.argv))
226
226
  default: false,
227
227
  type: "boolean",
228
228
  })
229
+ .option("install-deps", {
230
+ description:
231
+ "Let evinse run the project's own build tools, such as Maven and SwiftPM, to collect evidence. On by default, and off in secure mode. Pass --no-install-deps for projects you do not trust.",
232
+ type: "boolean",
233
+ })
229
234
  .option("with-deep-jar-collector", {
230
235
  description:
231
236
  "Enable collection of all jars from maven cache directory. Useful to improve the recall for callstack evidence.",
@@ -264,6 +269,9 @@ const args = yargs(hideBin(process.argv))
264
269
  description: "Use an existing usages slices file.",
265
270
  default: "usages.slices.json",
266
271
  })
272
+ .option("callsites-slices-file", {
273
+ description: "Use an existing callsites slices file (JS/TS).",
274
+ })
267
275
  .option("scalasem-command", {
268
276
  description:
269
277
  "Use a specific scalasem script for Scala evidence analysis. Defaults to SCALASEM_CMD.",
package/bin/hbom.js CHANGED
@@ -26,7 +26,10 @@ import {
26
26
  ensureSupportedHbomSpecVersion,
27
27
  hasHbomProjectType,
28
28
  } from "../lib/inventory/hbom.js";
29
- import { getHbomSummary } from "../lib/inventory/hbomAnalysis.js";
29
+ import {
30
+ getHbomPrivilegeGuidance,
31
+ getHbomSummary,
32
+ } from "../lib/inventory/hbomAnalysis.js";
30
33
  import {
31
34
  importProtobomModule,
32
35
  isProtoBomPath,
@@ -130,12 +133,13 @@ const args = _yargs
130
133
  })
131
134
  .option("privileged", {
132
135
  description:
133
- "Enable privileged Linux enrichment and non-interactive sudo retries for documented permission-sensitive commands.",
136
+ "Enable privileged enrichment for documented permission-sensitive sources. Linux: privileged enrichment and non-interactive sudo retries. Windows: the TPM, BitLocker, storage-reliability and Secure Boot batch, which only an already-elevated (Run as administrator) session can read; HBOM never prompts for UAC and records permission-denied diagnostics otherwise. No effect on macOS.",
134
137
  type: "boolean",
135
138
  default: false,
136
139
  })
137
140
  .option("plist-enrichment", {
138
- description: "Enable additional Darwin plist-based enrichment.",
141
+ description:
142
+ "Enable additional plist-based enrichment. Darwin only; ignored on Linux and Windows.",
139
143
  type: "boolean",
140
144
  default: false,
141
145
  })
@@ -172,7 +176,10 @@ const args = _yargs
172
176
  ["$0", "Generate an HBOM file for the current host"],
173
177
  ["$0 -p", "Print the generated HBOM to stdout"],
174
178
  ["$0 --platform linux --arch amd64", "Override target selection"],
175
- ["$0 --privileged --pretty", "Enable privileged Linux enrichment"],
179
+ [
180
+ "$0 --privileged --pretty",
181
+ "Enable privileged enrichment: sudo retries on Linux, the elevated-only batch on Windows (run from an administrator prompt)",
182
+ ],
176
183
  [
177
184
  "$0 diagnostics",
178
185
  "Run a live HBOM diagnostic pass and summarize missing commands or permission-sensitive enrichments",
@@ -226,6 +233,9 @@ const options = {
226
233
  arch: args.arch,
227
234
  command: selectedCommand,
228
235
  commandName: hbomCommandName,
236
+ // yargs turns `--no-command-enrichment` into `commandEnrichment: false` and
237
+ // leaves `noCommandEnrichment` at its default, so forward both spellings.
238
+ commandEnrichment: args.commandEnrichment,
229
239
  dryRun: args.dryRun,
230
240
  input: args.input ? resolve(args.input) : undefined,
231
241
  noCommandEnrichment: args.noCommandEnrichment,
@@ -420,9 +430,7 @@ function printHbomDiagnosticsReport(bomJson) {
420
430
  }
421
431
 
422
432
  if (hbomSummary.requiresPrivilegedEnrichment) {
423
- console.log(
424
- "\nSome Linux enrichments can likely succeed only with --privileged and a target environment that allows non-interactive sudo.",
425
- );
433
+ console.log(`\n${getHbomPrivilegeGuidance(hbomSummary.platform)}`);
426
434
  }
427
435
  }
428
436
 
package/bin/repl.js CHANGED
@@ -25,6 +25,8 @@ import {
25
25
  printAiBomPedigree,
26
26
  printAiBomVariants,
27
27
  printCallStack,
28
+ printCertificateChain,
29
+ printCertificatesTable,
28
30
  printDependencyTree,
29
31
  printFormulation,
30
32
  printOccurrences,
@@ -1224,6 +1226,32 @@ cdxgenRepl.defineCommand("cryptos", {
1224
1226
  this.displayPrompt();
1225
1227
  },
1226
1228
  });
1229
+ cdxgenRepl.defineCommand("certs", {
1230
+ help: "print the certificate components with role, issuer, expiry and SPKI prefix",
1231
+ action() {
1232
+ if (sbom) {
1233
+ printCertificatesTable(sbom);
1234
+ } else {
1235
+ console.log(
1236
+ "⚠ No BOM is loaded. Use .import command to import an existing BOM",
1237
+ );
1238
+ }
1239
+ this.displayPrompt();
1240
+ },
1241
+ });
1242
+ cdxgenRepl.defineCommand("certchain", {
1243
+ help: "show the issuer chain above a certificate and the certificates issued under it (.certchain <bom-ref|spki-prefix|cert-prefix>)",
1244
+ action(selector) {
1245
+ if (sbom) {
1246
+ printCertificateChain(sbom, selector);
1247
+ } else {
1248
+ console.log(
1249
+ "⚠ No BOM is loaded. Use .import command to import an existing BOM",
1250
+ );
1251
+ }
1252
+ this.displayPrompt();
1253
+ },
1254
+ });
1227
1255
  cdxgenRepl.defineCommand("sourcecryptos", {
1228
1256
  help: "show source-derived cryptographic assets detected from JS AST analysis",
1229
1257
  action() {
@@ -2203,6 +2231,7 @@ cdxgenRepl.defineCommand("tagcloud", {
2203
2231
  });
2204
2232
  // Let's dynamically define more commands from the queries
2205
2233
  [
2234
+ "apk_packages",
2206
2235
  "apt_sources",
2207
2236
  "behavioral_reverse_shell",
2208
2237
  "certificates",
package/bin/validate.js CHANGED
@@ -19,6 +19,7 @@ import process from "node:process";
19
19
  import yargs from "yargs";
20
20
  import { hideBin } from "yargs/helpers";
21
21
 
22
+ import { installConsoleShim, restoreConsole } from "../lib/core/ui.js";
22
23
  import {
23
24
  dirNameStr,
24
25
  retrieveCdxgenVersion,
@@ -144,6 +145,11 @@ const args = _yargs
144
145
  .help()
145
146
  .wrap(Math.min(120, yargs().terminalWidth())).argv;
146
147
 
148
+ // stdout carries the report and nothing else; messages from the validators
149
+ // go to the diagnostic stream so `-r json` and `-r sarif` stay parseable.
150
+ installConsoleShim();
151
+ process.once("exit", restoreConsole);
152
+
147
153
  /**
148
154
  * Loads the BOM. When signatures are verified, the text must also pass
149
155
  * parseStrictJson(), and `strictError` explains why it did not.
@@ -17,6 +17,12 @@
17
17
  "purlType": "rpm",
18
18
  "componentType": "library"
19
19
  },
20
+ "pacman_packages": {
21
+ "query": "select * from pacman_packages where name like '%ssl%' OR name like '%crypto%';",
22
+ "description": "Retrieves the crypto and TLS libraries pacman installed on Arch Linux and the distros built on it.",
23
+ "purlType": "alpm",
24
+ "componentType": "library"
25
+ },
20
26
  "python_packages": {
21
27
  "query": "select * from python_packages where name like '%ssl%' OR name like '%crypto%';",
22
28
  "description": "Python packages installed on system.",
@@ -32,7 +38,13 @@
32
38
  "homebrew_packages": {
33
39
  "query": "SELECT * FROM homebrew_packages where name like '%ssl%' OR name like '%crypto%';",
34
40
  "description": "List all homebrew_packages.",
35
- "purlType": "swid",
41
+ "purlType": "brew",
42
+ "componentType": "library"
43
+ },
44
+ "macports_packages": {
45
+ "query": "select * from macports_packages where name like '%ssl%' OR name like '%crypto%';",
46
+ "description": "Retrieves the crypto and TLS libraries among the active MacPorts ports.",
47
+ "purlType": "macports",
36
48
  "componentType": "library"
37
49
  },
38
50
  "authorized_keys": {
@@ -164,6 +164,7 @@
164
164
  "windows_programs",
165
165
  "processor",
166
166
  "services_snapshot",
167
+ "apk_packages",
167
168
  "apt_sources",
168
169
  "apt_ppa_sources",
169
170
  "behavioral_reverse_shell",
@@ -180,6 +181,13 @@
180
181
  "gatekeeper",
181
182
  "vscode_extensions",
182
183
  "homebrew_packages",
184
+ "macports_packages",
185
+ "pacman_packages",
186
+ "snap_packages",
187
+ "flatpak_packages",
188
+ "ai_agent_skills",
189
+ "gpu_info",
190
+ "chrome_search_engines",
183
191
  "installed_applications",
184
192
  "interface_addresses",
185
193
  "kernel_info",
@@ -18,8 +18,6 @@
18
18
  "httpsopensourceorglicenseapache20": "Apache-2.0",
19
19
  "httpwwwapacheorglicenseslicense20html": "Apache-2.0",
20
20
  "zeroclausebsd": "0BSD",
21
- "newbsdlicense": "BSD-3-Clause",
22
- "newbsd": "BSD-3-Clause",
23
21
  "bsd2clause": "BSD-2-Clause",
24
22
  "bsd2clauselicense": "BSD-2-Clause",
25
23
  "thebsd2clauselicense": "BSD-2-Clause",
@@ -30,11 +28,13 @@
30
28
  "thebsd3clauselicense": "BSD-3-Clause",
31
29
  "bsd3clauseneworrevisedlicensebsd3clause": "BSD-3-Clause",
32
30
  "eclipsedistributionlicensenewbsdlicense": "BSD-3-Clause",
31
+ "newbsdlicense": "BSD-3-Clause",
33
32
  "modifiedbsdlicense": "BSD-3-Clause",
34
33
  "revisedbsd": "BSD-3-Clause",
35
34
  "revisedbsdlicense": "BSD-3-Clause",
36
35
  "thenewbsdlicense": "BSD-3-Clause",
37
36
  "3clausebsdlicense": "BSD-3-Clause",
37
+ "newbsd": "BSD-3-Clause",
38
38
  "bsd4clause": "BSD-4-Clause",
39
39
  "bsd4clauselicense": "BSD-4-Clause",
40
40
  "thebsd4clauselicense": "BSD-4-Clause",
@@ -258,6 +258,8 @@
258
258
  "aswfdigitalassetslicenseversion10": "ASWF-Digital-Assets-1.0",
259
259
  "aswfdigitalassets11": "ASWF-Digital-Assets-1.1",
260
260
  "aswfdigitalassetslicense11": "ASWF-Digital-Assets-1.1",
261
+ "atcgame": "atc-game",
262
+ "atcgamelicense": "atc-game",
261
263
  "baekmuk": "Baekmuk",
262
264
  "baekmuklicense": "Baekmuk",
263
265
  "bahyph": "Bahyph",
@@ -309,6 +311,8 @@
309
311
  "bsd2clausepluspatentlicense": "BSD-2-Clause-Patent",
310
312
  "bsd2clausepkgconfdisclaimer": "BSD-2-Clause-pkgconf-disclaimer",
311
313
  "bsd2clausepkgconfdisclaimervariant": "BSD-2-Clause-pkgconf-disclaimer",
314
+ "bsd2clauseposunchanged": "BSD-2-Clause-pos-unchanged",
315
+ "bsd2clausepositionunchangedvariant": "BSD-2-Clause-pos-unchanged",
312
316
  "bsd2clauseviews": "BSD-2-Clause-Views",
313
317
  "bsd2clausewithviewssentence": "BSD-2-Clause-Views",
314
318
  "bsd3clauseneworrevisedlicense": "BSD-3-Clause",
@@ -331,6 +335,8 @@
331
335
  "bsd3clausenonuclearwarranty": "BSD-3-Clause-No-Nuclear-Warranty",
332
336
  "bsd3clauseopenmpi": "BSD-3-Clause-Open-MPI",
333
337
  "bsd3clauseopenmpivariant": "BSD-3-Clause-Open-MPI",
338
+ "bsd3clauseopenwebui": "BSD-3-Clause-OpenWebUI",
339
+ "bsd3clauseopenwebuivariant": "BSD-3-Clause-OpenWebUI",
334
340
  "bsd3clausesun": "BSD-3-Clause-Sun",
335
341
  "bsd3clausesunmicrosystems": "BSD-3-Clause-Sun",
336
342
  "bsd3clausetso": "BSD-3-Clause-Tso",
@@ -345,6 +351,7 @@
345
351
  "bsd43tahoelicense": "BSD-4.3TAHOE",
346
352
  "bsdadvertisingacknowledgement": "BSD-Advertising-Acknowledgement",
347
353
  "bsdadvertisingacknowledgementlicense": "BSD-Advertising-Acknowledgement",
354
+ "bsdasktoendorse": "BSD-ask-to-endorse",
348
355
  "bsdattributionhpnddisclaimer": "BSD-Attribution-HPND-disclaimer",
349
356
  "bsdwithattributionandhpnddisclaimer": "BSD-Attribution-HPND-disclaimer",
350
357
  "bsdinfernonettverk": "BSD-Inferno-Nettverk",
@@ -352,10 +359,14 @@
352
359
  "bsdmarkmodificationslicense": "BSD-Mark-Modifications",
353
360
  "bsdprotection": "BSD-Protection",
354
361
  "bsdprotectionlicense": "BSD-Protection",
362
+ "bsdsourcealtgpl": "BSD-Source-alt-GPL",
363
+ "bsdsourcecodeattributiongplalternative": "BSD-Source-alt-GPL",
355
364
  "bsdsourcebeginningfile": "BSD-Source-beginning-file",
356
365
  "bsdsourcecodeattributionbeginningoffilevariant": "BSD-Source-beginning-file",
357
366
  "bsdsourcecode": "BSD-Source-Code",
358
367
  "bsdsourcecodeattribution": "BSD-Source-Code",
368
+ "bsdsourcecodenodisclaimer": "BSD-Source-Code-no-disclaimer",
369
+ "bsdsourcecodeattributionnodisclaimer": "BSD-Source-Code-no-disclaimer",
359
370
  "bsdsystemics": "BSD-Systemics",
360
371
  "systemicsbsdvariantlicense": "BSD-Systemics",
361
372
  "bsdsystemicsw3works": "BSD-Systemics-W3Works",
@@ -364,6 +375,8 @@
364
375
  "boostsoftwarelicense10": "BSL-1.0",
365
376
  "buddy": "Buddy",
366
377
  "buddylicense": "Buddy",
378
+ "bugroff": "Bugroff",
379
+ "bugrofflicense": "Bugroff",
367
380
  "busl11": "BUSL-1.1",
368
381
  "businesssourcelicense11": "BUSL-1.1",
369
382
  "bzip2105": "bzip2-1.0.6",
@@ -420,6 +433,8 @@
420
433
  "creativecommonsattributionnoncommercial30unported": "CC-BY-NC-3.0",
421
434
  "ccbync30de": "CC-BY-NC-3.0-DE",
422
435
  "creativecommonsattributionnoncommercial30germany": "CC-BY-NC-3.0-DE",
436
+ "ccbync30igo": "CC-BY-NC-3.0-IGO",
437
+ "creativecommonsattributionnoncommercial30igo": "CC-BY-NC-3.0-IGO",
423
438
  "ccbync40": "CC-BY-NC-4.0",
424
439
  "creativecommonsattributionnoncommercial40international": "CC-BY-NC-4.0",
425
440
  "ccbyncnd10": "CC-BY-NC-ND-1.0",
@@ -657,6 +672,8 @@
657
672
  "fuzzybitmaplicense": "FBM",
658
673
  "fdkaac": "FDK-AAC",
659
674
  "fraunhoferfdkaaccodeclibrary": "FDK-AAC",
675
+ "fdkmpegh": "FDK-MPEG-H",
676
+ "fraunhoferfdkmpeghsoftware": "FDK-MPEG-H",
660
677
  "fergusontwofish": "Ferguson-Twofish",
661
678
  "fergusontwofishlicense": "Ferguson-Twofish",
662
679
  "frameworx10": "Frameworx-1.0",
@@ -795,6 +812,8 @@
795
812
  "hidapilicense": "HIDAPI",
796
813
  "hippocratic21": "Hippocratic-2.1",
797
814
  "hippocraticlicense21": "Hippocratic-2.1",
815
+ "hippocratic30core": "Hippocratic-3.0-core",
816
+ "hippocraticlicense30": "Hippocratic-3.0-core",
798
817
  "hp1986": "HP-1986",
799
818
  "hewlettpackard1986license": "HP-1986",
800
819
  "hp1989": "HP-1989",
@@ -873,6 +892,8 @@
873
892
  "imlib2license": "Imlib2",
874
893
  "infozip": "Info-ZIP",
875
894
  "infoziplicense": "Info-ZIP",
895
+ "informatica": "Informatica",
896
+ "informaticalicense": "Informatica",
876
897
  "innernet20": "Inner-Net-2.0",
877
898
  "innernetlicensev20": "Inner-Net-2.0",
878
899
  "innosetup": "InnoSetup",
@@ -1660,6 +1681,7 @@
1660
1681
  "shl21": "SHL-2.1",
1661
1682
  "solderpadhardwarelicensev21": "SHL-2.1",
1662
1683
  "simplelibraryusageexception": "Simple-Library-Usage-exception",
1684
+ "spellingproviderlgplexception": "Spelling-Provider-LGPL-exception",
1663
1685
  "sqlitestudioopensslexception": "sqlitestudio-OpenSSL-exception",
1664
1686
  "stunnelexception": "stunnel-exception",
1665
1687
  "swiexception": "SWI-exception",
@@ -29,6 +29,18 @@
29
29
  "purlType": "vscode-extension",
30
30
  "componentType": "application"
31
31
  },
32
+ "chrome_search_engines": {
33
+ "query": "SELECT chrome_search_engines.*, chrome_search_engines.browser_type || '/' || chrome_search_engines.uid || '/' || chrome_search_engines.profile AS label FROM users JOIN chrome_search_engines USING (uid);",
34
+ "description": "The default search engine of every Chromium-based browser profile, for each user.",
35
+ "purlType": "swid",
36
+ "componentType": "data"
37
+ },
38
+ "ai_agent_skills": {
39
+ "query": "SELECT ai_agent_skills.*, hash.sha256 FROM users JOIN ai_agent_skills USING (uid) LEFT JOIN hash ON hash.path = ai_agent_skills.path UNION ALL SELECT ai_agent_skills.*, hash.sha256 FROM ai_agent_skills LEFT JOIN hash ON hash.path = ai_agent_skills.path WHERE ai_agent_skills.scope = 'system';",
40
+ "description": "AI agent skills (SKILL.md packages) installed for each user, through Claude Code plugins and system-wide, with the SHA-256 of each SKILL.md. Skills have no package identity, so they get no purl.",
41
+ "purlType": "generic",
42
+ "componentType": "file"
43
+ },
32
44
  "apps": {
33
45
  "query": "select * from apps;",
34
46
  "description": "macOS applications installed in known search paths (e.g., /Applications).",
@@ -47,6 +59,12 @@
47
59
  "purlType": "swid",
48
60
  "componentType": "application"
49
61
  },
62
+ "gpu_info": {
63
+ "query": "SELECT *, driver_version AS version, vendor AS publisher FROM gpu_info;",
64
+ "description": "GPU inventory with the vendor, model and installed driver version.",
65
+ "purlType": "swid",
66
+ "componentType": "device"
67
+ },
50
68
  "certificates": {
51
69
  "query": "SELECT * FROM certificates WHERE path != 'Other People';",
52
70
  "description": "List all certificates in the trust store.",
@@ -74,7 +92,13 @@
74
92
  "homebrew_packages": {
75
93
  "query": "SELECT * FROM homebrew_packages;",
76
94
  "description": "Homebrew formula and cask inventory including auto-update behavior.",
77
- "purlType": "swid",
95
+ "purlType": "brew",
96
+ "componentType": "application"
97
+ },
98
+ "macports_packages": {
99
+ "query": "select * from macports_packages;",
100
+ "description": "Retrieves the active ports of the MacPorts registry.",
101
+ "purlType": "macports",
78
102
  "componentType": "application"
79
103
  },
80
104
  "npm_packages": {
@@ -30,6 +30,18 @@
30
30
  "purlType": "vscode-extension",
31
31
  "componentType": "application"
32
32
  },
33
+ "chrome_search_engines": {
34
+ "query": "SELECT chrome_search_engines.*, chrome_search_engines.browser_type || '/' || chrome_search_engines.uid || '/' || chrome_search_engines.profile AS label FROM users JOIN chrome_search_engines USING (uid);",
35
+ "description": "The default search engine of every Chromium-based browser profile, for each user.",
36
+ "purlType": "swid",
37
+ "componentType": "data"
38
+ },
39
+ "ai_agent_skills": {
40
+ "query": "SELECT ai_agent_skills.*, hash.sha256 FROM users JOIN ai_agent_skills USING (uid) LEFT JOIN hash ON hash.path = ai_agent_skills.path UNION ALL SELECT ai_agent_skills.*, hash.sha256 FROM ai_agent_skills LEFT JOIN hash ON hash.path = ai_agent_skills.path WHERE ai_agent_skills.scope = 'system';",
41
+ "description": "AI agent skills (SKILL.md packages) installed for each user, through Claude Code plugins and system-wide, with the SHA-256 of each SKILL.md. Skills have no package identity, so they get no purl.",
42
+ "purlType": "generic",
43
+ "componentType": "file"
44
+ },
33
45
  "browser_plugins": {
34
46
  "query": "select browser_plugins.* from users join browser_plugins using (uid);",
35
47
  "description": "Retrieves the list of C/NPAPI browser plugin in the target system.",
@@ -88,6 +100,12 @@
88
100
  "purlType": "swid",
89
101
  "componentType": "data"
90
102
  },
103
+ "gpu_info": {
104
+ "query": "SELECT *, driver_version AS version, vendor AS publisher FROM gpu_info;",
105
+ "description": "GPU inventory with the vendor, model and installed driver version.",
106
+ "purlType": "swid",
107
+ "componentType": "device"
108
+ },
91
109
  "users_snapshot": {
92
110
  "query": "SELECT username as name, uuid as version, description, directory, uid, type, gid FROM users;",
93
111
  "description": "Local and domain-backed user account inventory on Windows endpoints.",
@@ -167,7 +185,7 @@
167
185
  "componentType": "data"
168
186
  },
169
187
  "windows_bitlocker_info": {
170
- "query": "SELECT device_id as name, drive_letter as version, encryption_method as description, persistent_volume_id, conversion_status, protection_status, percentage_encrypted, lock_status FROM bitlocker_info;",
188
+ "query": "SELECT device_id as name, drive_letter as version, encryption_method as description, persistent_volume_id, conversion_status, protection_status, percentage_encrypted, lock_status, protector_types FROM bitlocker_info;",
171
189
  "description": "BitLocker protection and encryption state for local drives.",
172
190
  "purlType": "swid",
173
191
  "componentType": "data"