@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
@@ -0,0 +1,143 @@
1
+ # PHP source-build runtime rules
2
+ # Category: php-security
3
+ # Evaluates the cdx:php:* properties recorded for unpackaged PHP binaries and
4
+ # shared libraries during container, rootfs and OS (obom) scans. CVE-2026-109618 and
5
+ # CVE-2026-109619 are unauthenticated remote code execution bugs in request
6
+ # handling; fixed in 8.2.35, 8.3.36, 8.4.27 and 8.5.12.
7
+ # https://www.php.net/archive/2026.php#2026-10-21-5
8
+ #
9
+ # Builds from the php-src PHP-<M.m>-CVE-2026-109618-109619 backport branches
10
+ # keep their old version number, so a version check cannot tell them from a
11
+ # vulnerable build. That caveat is in the finding text.
12
+
13
+ - id: PHP-RCE-001
14
+ name: "Network-reachable PHP build affected by CVE-2026-109618 and CVE-2026-109619"
15
+ description: "A source-built PHP web SAPI older than its fixed release is vulnerable to two unauthenticated RCE bugs in request handling. PHP-FPM, php-cgi, libphp (Apache or embed) and FrankenPHP serve requests, so the worker is reachable from the network. The rule never reads PHP configuration: a mitigation never suppresses a finding."
16
+ severity: critical
17
+ category: php-security
18
+ dry-run-support: full
19
+ condition: |
20
+ components[
21
+ type = 'file'
22
+ and $hasProp($, 'cdx:php:buildVersion')
23
+ and $hasProp($, 'cdx:php:sapi')
24
+ and (
25
+ $m := $match($prop($, 'cdx:php:buildVersion'), /^(\d+)\.(\d+)\.(\d+)(?:-(dev)|(alpha|beta|RC)(\d+))?$/);
26
+ $m != null
27
+ and (
28
+ $number($m.groups[0]) < 8
29
+ or ($number($m.groups[0]) = 8 and $number($m.groups[1]) < 2)
30
+ or (
31
+ $number($m.groups[0]) = 8
32
+ and $number($m.groups[1]) = 2
33
+ and $number($m.groups[2]) < 35
34
+ )
35
+ or (
36
+ $number($m.groups[0]) = 8
37
+ and $number($m.groups[1]) = 3
38
+ and $number($m.groups[2]) < 36
39
+ )
40
+ or (
41
+ $number($m.groups[0]) = 8
42
+ and $number($m.groups[1]) = 4
43
+ and $number($m.groups[2]) < 27
44
+ )
45
+ or (
46
+ $number($m.groups[0]) = 8
47
+ and $number($m.groups[1]) = 5
48
+ and $number($m.groups[2]) < 12
49
+ )
50
+ or (
51
+ $number($m.groups[0]) = 8
52
+ and $number($m.groups[1]) = 6
53
+ and $number($m.groups[2]) = 0
54
+ and $m.groups[4] != null
55
+ and (
56
+ $m.groups[4] = 'alpha'
57
+ or $m.groups[4] = 'beta'
58
+ or ($m.groups[4] = 'RC' and $number($m.groups[5]) <= 3)
59
+ )
60
+ )
61
+ )
62
+ )
63
+ and $prop($, 'cdx:php:sapi') in ['fpm', 'cgi', 'libphp', 'frankenphp']
64
+ ]
65
+ location: |
66
+ {
67
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
68
+ }
69
+ message: "PHP {{ $prop($, 'cdx:php:sapi') }} '{{ name }}' is {{ $prop($, 'cdx:php:buildVersion') }}, which is affected by CVE-2026-109618 and CVE-2026-109619 (unauthenticated RCE); fixed in {{ $startsWith($prop($, 'cdx:php:buildVersion'), '8.2.') ? '8.2.35' : $startsWith($prop($, 'cdx:php:buildVersion'), '8.3.') ? '8.3.36' : $startsWith($prop($, 'cdx:php:buildVersion'), '8.4.') ? '8.4.27' : $startsWith($prop($, 'cdx:php:buildVersion'), '8.5.') ? '8.5.12' : $startsWith($prop($, 'cdx:php:buildVersion'), '8.6.') ? '8.6.0RC4 or later' : 'a supported PHP branch or a vendor backport (builds from the php-src CVE backport branches keep their version number and are false positives)' }}"
70
+ mitigation: "Upgrade to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35. For 8.1 and older, move to a supported branch or a vendor backport. https://www.php.net/archive/2026.php#2026-10-21-5 Interim measures named by the advisory (an admin-level memory_limit=-1, a low post_max_size, session.upload_progress.enabled=0, and fatal_error_backtraces=0 on 8.5) reduce but do not remove the risk. Builds from the php-src PHP-<M.m>-CVE-2026-109618-109619 backport branches keep their old version number and are false positives."
71
+ evidence: |
72
+ {
73
+ "buildVersion": $prop($, 'cdx:php:buildVersion'),
74
+ "sapi": $prop($, 'cdx:php:sapi'),
75
+ "source": $prop($, 'cdx:php:buildVersionSource'),
76
+ "srcFile": $prop($, 'internal:SrcFile')
77
+ }
78
+
79
+ - id: PHP-RCE-002
80
+ name: "PHP CLI build affected by CVE-2026-109618 and CVE-2026-109619"
81
+ description: "A source-built PHP CLI or phpdbg older than its fixed release contains the same vulnerable request-handling code. The CLI is not network-reachable, but any web SAPI built from the same tree is, so the build should be upgraded."
82
+ severity: medium
83
+ category: php-security
84
+ dry-run-support: full
85
+ condition: |
86
+ components[
87
+ type = 'file'
88
+ and $hasProp($, 'cdx:php:buildVersion')
89
+ and $hasProp($, 'cdx:php:sapi')
90
+ and (
91
+ $m := $match($prop($, 'cdx:php:buildVersion'), /^(\d+)\.(\d+)\.(\d+)(?:-(dev)|(alpha|beta|RC)(\d+))?$/);
92
+ $m != null
93
+ and (
94
+ $number($m.groups[0]) < 8
95
+ or ($number($m.groups[0]) = 8 and $number($m.groups[1]) < 2)
96
+ or (
97
+ $number($m.groups[0]) = 8
98
+ and $number($m.groups[1]) = 2
99
+ and $number($m.groups[2]) < 35
100
+ )
101
+ or (
102
+ $number($m.groups[0]) = 8
103
+ and $number($m.groups[1]) = 3
104
+ and $number($m.groups[2]) < 36
105
+ )
106
+ or (
107
+ $number($m.groups[0]) = 8
108
+ and $number($m.groups[1]) = 4
109
+ and $number($m.groups[2]) < 27
110
+ )
111
+ or (
112
+ $number($m.groups[0]) = 8
113
+ and $number($m.groups[1]) = 5
114
+ and $number($m.groups[2]) < 12
115
+ )
116
+ or (
117
+ $number($m.groups[0]) = 8
118
+ and $number($m.groups[1]) = 6
119
+ and $number($m.groups[2]) = 0
120
+ and $m.groups[4] != null
121
+ and (
122
+ $m.groups[4] = 'alpha'
123
+ or $m.groups[4] = 'beta'
124
+ or ($m.groups[4] = 'RC' and $number($m.groups[5]) <= 3)
125
+ )
126
+ )
127
+ )
128
+ )
129
+ and $prop($, 'cdx:php:sapi') in ['cli', 'phpdbg']
130
+ ]
131
+ location: |
132
+ {
133
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
134
+ }
135
+ message: "PHP {{ $prop($, 'cdx:php:sapi') }} '{{ name }}' is {{ $prop($, 'cdx:php:buildVersion') }}, which is affected by CVE-2026-109618 and CVE-2026-109619 (unauthenticated RCE); fixed in {{ $startsWith($prop($, 'cdx:php:buildVersion'), '8.2.') ? '8.2.35' : $startsWith($prop($, 'cdx:php:buildVersion'), '8.3.') ? '8.3.36' : $startsWith($prop($, 'cdx:php:buildVersion'), '8.4.') ? '8.4.27' : $startsWith($prop($, 'cdx:php:buildVersion'), '8.5.') ? '8.5.12' : $startsWith($prop($, 'cdx:php:buildVersion'), '8.6.') ? '8.6.0RC4 or later' : 'a supported PHP branch or a vendor backport (builds from the php-src CVE backport branches keep their version number and are false positives)' }}. The CLI is not network-reachable, but the same build's web SAPIs are."
136
+ mitigation: "Upgrade to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35. For 8.1 and older, move to a supported branch or a vendor backport. https://www.php.net/archive/2026.php#2026-10-21-5 Builds from the php-src PHP-<M.m>-CVE-2026-109618-109619 backport branches keep their old version number and are false positives."
137
+ evidence: |
138
+ {
139
+ "buildVersion": $prop($, 'cdx:php:buildVersion'),
140
+ "sapi": $prop($, 'cdx:php:sapi'),
141
+ "source": $prop($, 'cdx:php:buildVersionSource'),
142
+ "srcFile": $prop($, 'internal:SrcFile')
143
+ }
@@ -235,3 +235,78 @@
235
235
  "main": $prop($, 'cdx:vscode-extension:main'),
236
236
  "contributes": $prop($, 'cdx:vscode-extension:contributes')
237
237
  }
238
+
239
+ - id: VSC-010
240
+ name: "Extension folder the editor never registered"
241
+ description: "An extension folder that is on disk but missing from the editor's extensions.json was copied in by hand rather than installed by the editor, so no marketplace or signature check applied to it"
242
+ severity: high
243
+ category: vscode-extension
244
+ dry-run-support: full
245
+ condition: |
246
+ components[
247
+ $startsWith(purl, 'pkg:vscode-extension/')
248
+ and $prop($, 'cdx:vscode-extension:registered') = 'false'
249
+ ]
250
+ location: |
251
+ {
252
+ "bomRef": $. "bom-ref",
253
+ "purl": purl,
254
+ "srcFile": $prop($, 'internal:SrcFile')
255
+ }
256
+ message: "VS Code extension '{{ publisher }}.{{ name }}@{{ version }}' is in the extensions folder of {{ $prop($, 'cdx:vscode-extension:ide') }} but not in its registry"
257
+ mitigation: "Find out who placed the folder; remove it and reinstall the extension from the marketplace if it is wanted"
258
+ evidence: |
259
+ {
260
+ "ide": $prop($, 'cdx:vscode-extension:ide'),
261
+ "activationEvents": $prop($, 'cdx:vscode-extension:activationEvents'),
262
+ "main": $prop($, 'cdx:vscode-extension:main')
263
+ }
264
+
265
+ - id: VSC-011
266
+ name: "Extension installed from a .vsix file"
267
+ description: "An extension installed from a local .vsix file bypassed the marketplace, so its publisher, signature and version history were not checked at install time"
268
+ severity: medium
269
+ category: vscode-extension
270
+ dry-run-support: full
271
+ condition: |
272
+ components[
273
+ $startsWith(purl, 'pkg:vscode-extension/')
274
+ and $listContains($propList($, 'cdx:vscode-extension:installSource'), 'vsix')
275
+ ]
276
+ location: |
277
+ {
278
+ "bomRef": $. "bom-ref",
279
+ "purl": purl,
280
+ "srcFile": $prop($, 'internal:SrcFile')
281
+ }
282
+ message: "VS Code extension '{{ publisher }}.{{ name }}@{{ version }}' was installed from a .vsix file in {{ $prop($, 'cdx:vscode-extension:ide') }}"
283
+ mitigation: "Confirm where the .vsix came from and compare the entry-file hash with the marketplace build of the same version"
284
+ evidence: |
285
+ {
286
+ "ide": $prop($, 'cdx:vscode-extension:ide'),
287
+ "installedAt": $prop($, 'cdx:vscode-extension:installedAt')
288
+ }
289
+
290
+ - id: VSC-012
291
+ name: "Two copies of one extension build run different code"
292
+ description: "The same publisher, name, version and platform is installed in more than one place, but the entry files differ, so at least one copy was changed after it was installed"
293
+ severity: high
294
+ category: vscode-extension
295
+ dry-run-support: full
296
+ condition: |
297
+ components[
298
+ $startsWith(purl, 'pkg:vscode-extension/')
299
+ and $prop($, 'cdx:vscode-extension:entryHashMismatch') = 'true'
300
+ ]
301
+ location: |
302
+ {
303
+ "bomRef": $. "bom-ref",
304
+ "purl": purl
305
+ }
306
+ message: "VS Code extension '{{ publisher }}.{{ name }}@{{ version }}' has different entry-file bytes in {{ $prop($, 'cdx:vscode-extension:ide') }}"
307
+ mitigation: "Compare each copy's entry-file SHA-256 with the marketplace build of the same version, remove the copy that differs and reinstall it from the marketplace"
308
+ evidence: |
309
+ {
310
+ "ide": $prop($, 'cdx:vscode-extension:ide'),
311
+ "entryFiles": components.{ "name": name, "sha256": hashes[0].content }
312
+ }
@@ -494,6 +494,15 @@
494
494
  "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.1.txt"
495
495
  ]
496
496
  },
497
+ "atc-game": {
498
+ "name": "atc Game License",
499
+ "isDeprecated": false,
500
+ "isOsiApproved": false,
501
+ "isFsfLibre": false,
502
+ "seeAlso": [
503
+ "https://github.com/vattam/BSDGames/blob/master/atc/extern.c#L36"
504
+ ]
505
+ },
497
506
  "Baekmuk": {
498
507
  "name": "Baekmuk License",
499
508
  "isDeprecated": false,
@@ -737,6 +746,18 @@
737
746
  "https://github.com/audacious-media-player/audacious/blob/master/COPYING"
738
747
  ]
739
748
  },
749
+ "BSD-2-Clause-pos-unchanged": {
750
+ "name": "BSD 2-Clause - position unchanged variant",
751
+ "isDeprecated": false,
752
+ "isOsiApproved": false,
753
+ "isFsfLibre": false,
754
+ "seeAlso": [
755
+ "https://scancode-licensedb.aboutcode.org/bsd-unchanged",
756
+ "https://cgit.freebsd.org/src/tree/usr.bin/sockstat/sockstat.c",
757
+ "https://github.com/libarchive/libarchive/blob/master/libarchive_fe/line_reader.c",
758
+ "https://github.com/freebsd/pkg/blob/main/src/add.c"
759
+ ]
760
+ },
740
761
  "BSD-2-Clause-Views": {
741
762
  "name": "BSD 2-Clause with views sentence",
742
763
  "isDeprecated": false,
@@ -868,6 +889,15 @@
868
889
  "http://www.netlib.org/lapack/LICENSE.txt"
869
890
  ]
870
891
  },
892
+ "BSD-3-Clause-OpenWebUI": {
893
+ "name": "BSD 3-Clause - OpenWebUI variant",
894
+ "isDeprecated": false,
895
+ "isOsiApproved": false,
896
+ "isFsfLibre": false,
897
+ "seeAlso": [
898
+ "https://github.com/open-webui/open-webui/blob/main/LICENSE"
899
+ ]
900
+ },
871
901
  "BSD-3-Clause-Sun": {
872
902
  "name": "BSD 3-Clause Sun Microsystems",
873
903
  "isDeprecated": false,
@@ -943,6 +973,15 @@
943
973
  "https://github.com/python-excel/xlrd/blob/master/LICENSE#L33"
944
974
  ]
945
975
  },
976
+ "BSD-ask-to-endorse": {
977
+ "name": "BSD - ask to endorse",
978
+ "isDeprecated": false,
979
+ "isOsiApproved": true,
980
+ "isFsfLibre": false,
981
+ "seeAlso": [
982
+ "https://github.com/sudo-project/sudo/blob/c1307ea9ff340ce0538779f8e456501461fc44b7/plugins/sudoers/redblack.c#L24-L43"
983
+ ]
984
+ },
946
985
  "BSD-Attribution-HPND-disclaimer": {
947
986
  "name": "BSD with Attribution and HPND disclaimer",
948
987
  "isDeprecated": false,
@@ -979,6 +1018,15 @@
979
1018
  "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License"
980
1019
  ]
981
1020
  },
1021
+ "BSD-Source-alt-GPL": {
1022
+ "name": "BSD Source Code Attribution - GPL alternative",
1023
+ "isDeprecated": false,
1024
+ "isOsiApproved": false,
1025
+ "isFsfLibre": false,
1026
+ "seeAlso": [
1027
+ "https://cgit.freebsd.org/src/plain/sys/dev/aic7xxx/aic7xxx_osm.c"
1028
+ ]
1029
+ },
982
1030
  "BSD-Source-beginning-file": {
983
1031
  "name": "BSD Source Code Attribution - beginning of file variant",
984
1032
  "isDeprecated": false,
@@ -997,6 +1045,15 @@
997
1045
  "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt"
998
1046
  ]
999
1047
  },
1048
+ "BSD-Source-Code-no-disclaimer": {
1049
+ "name": "BSD Source Code Attribution - no disclaimer",
1050
+ "isDeprecated": false,
1051
+ "isOsiApproved": false,
1052
+ "isFsfLibre": false,
1053
+ "seeAlso": [
1054
+ "https://github.com/PicoEFI/PicoEFI/blob/2263ac1a2bc98e5534d64a4896d3cfbbae00745a/LICENSES/LicenseRef-scancode-bsd-no-disclaimer-unmodified.txt"
1055
+ ]
1056
+ },
1000
1057
  "BSD-Systemics": {
1001
1058
  "name": "Systemics BSD variant license",
1002
1059
  "isDeprecated": false,
@@ -1034,6 +1091,15 @@
1034
1091
  "https://sourceforge.net/p/buddy/gitcode/ci/master/tree/README"
1035
1092
  ]
1036
1093
  },
1094
+ "Bugroff": {
1095
+ "name": "Bugroff License",
1096
+ "isDeprecated": false,
1097
+ "isOsiApproved": false,
1098
+ "isFsfLibre": false,
1099
+ "seeAlso": [
1100
+ "https://tunes.org/legalese/bugroff.html"
1101
+ ]
1102
+ },
1037
1103
  "BUSL-1.1": {
1038
1104
  "name": "Business Source License 1.1",
1039
1105
  "isDeprecated": false,
@@ -1292,6 +1358,15 @@
1292
1358
  "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode"
1293
1359
  ]
1294
1360
  },
1361
+ "CC-BY-NC-3.0-IGO": {
1362
+ "name": "Creative Commons Attribution Non Commercial 3.0 IGO",
1363
+ "isDeprecated": false,
1364
+ "isOsiApproved": false,
1365
+ "isFsfLibre": false,
1366
+ "seeAlso": [
1367
+ "https://creativecommons.org/licenses/by-nc/3.0/igo/legalcode"
1368
+ ]
1369
+ },
1295
1370
  "CC-BY-NC-4.0": {
1296
1371
  "name": "Creative Commons Attribution Non Commercial 4.0 International",
1297
1372
  "isDeprecated": false,
@@ -1878,10 +1953,11 @@
1878
1953
  "CNRI-Python-GPL-Compatible": {
1879
1954
  "name": "CNRI Python Open Source GPL Compatible License Agreement",
1880
1955
  "isDeprecated": false,
1881
- "isOsiApproved": false,
1956
+ "isOsiApproved": true,
1882
1957
  "isFsfLibre": false,
1883
1958
  "seeAlso": [
1884
- "http://www.python.org/download/releases/1.6.1/download_win/"
1959
+ "http://www.python.org/download/releases/1.6.1/download_win/",
1960
+ "https://opensource.org/license/CNRI-Python-GPL-Compatible"
1885
1961
  ]
1886
1962
  },
1887
1963
  "COIL-1.0": {
@@ -2028,10 +2104,11 @@
2028
2104
  "curl": {
2029
2105
  "name": "curl License",
2030
2106
  "isDeprecated": false,
2031
- "isOsiApproved": false,
2107
+ "isOsiApproved": true,
2032
2108
  "isFsfLibre": false,
2033
2109
  "seeAlso": [
2034
- "https://github.com/bagder/curl/blob/master/COPYING"
2110
+ "https://github.com/bagder/curl/blob/master/COPYING",
2111
+ "https://opensource.org/license/curl"
2035
2112
  ]
2036
2113
  },
2037
2114
  "cve-tou": {
@@ -2391,7 +2468,8 @@
2391
2468
  "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt",
2392
2469
  "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt",
2393
2470
  "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32017D0863",
2394
- "https://opensource.org/license/EUPL-1.2"
2471
+ "https://opensource.org/license/EUPL-1.2",
2472
+ "https://interoperable-europe.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt"
2395
2473
  ]
2396
2474
  },
2397
2475
  "Eurosym": {
@@ -2432,6 +2510,15 @@
2432
2510
  "https://directory.fsf.org/wiki/License:Fdk"
2433
2511
  ]
2434
2512
  },
2513
+ "FDK-MPEG-H": {
2514
+ "name": "Fraunhofer FDK MPEG-H Software",
2515
+ "isDeprecated": false,
2516
+ "isOsiApproved": false,
2517
+ "isFsfLibre": false,
2518
+ "seeAlso": [
2519
+ "https://github.com/Fraunhofer-IIS/mpeghdec/blob/main/LICENSE.txt"
2520
+ ]
2521
+ },
2435
2522
  "Ferguson-Twofish": {
2436
2523
  "name": "Ferguson Twofish License",
2437
2524
  "isDeprecated": false,
@@ -3113,6 +3200,15 @@
3113
3200
  "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt"
3114
3201
  ]
3115
3202
  },
3203
+ "Hippocratic-3.0-core": {
3204
+ "name": "Hippocratic License 3.0",
3205
+ "isDeprecated": false,
3206
+ "isOsiApproved": false,
3207
+ "isFsfLibre": false,
3208
+ "seeAlso": [
3209
+ "https://firstdonoharm.dev/version/3/0/core.txt"
3210
+ ]
3211
+ },
3116
3212
  "HP-1986": {
3117
3213
  "name": "Hewlett-Packard 1986 License",
3118
3214
  "isDeprecated": false,
@@ -3477,6 +3573,16 @@
3477
3573
  "http://www.info-zip.org/license.html"
3478
3574
  ]
3479
3575
  },
3576
+ "Informatica": {
3577
+ "name": "Informatica License",
3578
+ "isDeprecated": false,
3579
+ "isOsiApproved": false,
3580
+ "isFsfLibre": false,
3581
+ "seeAlso": [
3582
+ "https://raw.githubusercontent.com/landtuna/open-mtools/6c04c2882eca7c4313ec267766ea53ac9bfe129b/msend.c",
3583
+ "https://raw.githubusercontent.com/landtuna/open-mtools/6c04c2882eca7c4313ec267766ea53ac9bfe129b/mdump.c"
3584
+ ]
3585
+ },
3480
3586
  "Inner-Net-2.0": {
3481
3587
  "name": "Inner Net License v2.0",
3482
3588
  "isDeprecated": false,
@@ -5526,12 +5632,13 @@
5526
5632
  "Python-2.0.1": {
5527
5633
  "name": "Python License 2.0.1",
5528
5634
  "isDeprecated": false,
5529
- "isOsiApproved": false,
5635
+ "isOsiApproved": true,
5530
5636
  "isFsfLibre": false,
5531
5637
  "seeAlso": [
5532
5638
  "https://www.python.org/download/releases/2.0.1/license/",
5533
5639
  "https://docs.python.org/3/license.html",
5534
- "https://github.com/python/cpython/blob/main/LICENSE"
5640
+ "https://github.com/python/cpython/blob/main/LICENSE",
5641
+ "https://opensource.org/license/Python-2.0.1"
5535
5642
  ]
5536
5643
  },
5537
5644
  "python-ldap": {
@@ -7365,6 +7472,13 @@
7365
7472
  "https://sourceforge.net/p/teem/code/HEAD/tree/teem/trunk/LICENSE.txt"
7366
7473
  ]
7367
7474
  },
7475
+ "Spelling-Provider-LGPL-exception": {
7476
+ "name": "Spelling Provider LGPL exception",
7477
+ "isDeprecated": false,
7478
+ "seeAlso": [
7479
+ "https://github.com/rrthomas/enchant/blob/774ff6dc2e441ba2b9b786f8edbe00e014960408/lib/internal.vapi#L18"
7480
+ ]
7481
+ },
7368
7482
  "sqlitestudio-OpenSSL-exception": {
7369
7483
  "name": "sqlitestudio OpenSSL exception",
7370
7484
  "isDeprecated": false,