@cyclonedx/cdxgen 12.3.3 → 12.4.1

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 (175) hide show
  1. package/README.md +69 -25
  2. package/bin/audit.js +21 -7
  3. package/bin/cdxgen.js +270 -127
  4. package/bin/convert.js +34 -15
  5. package/bin/hbom.js +495 -0
  6. package/bin/repl.js +592 -37
  7. package/bin/validate.js +31 -4
  8. package/bin/verify.js +18 -5
  9. package/data/README.md +298 -25
  10. package/data/component-tags.json +6 -0
  11. package/data/crypto-oid.json +16 -0
  12. package/data/cyclonedx-2.0-bundled.schema.json +7182 -0
  13. package/data/predictive-audit-allowlist.json +11 -0
  14. package/data/queries-darwin.json +12 -1
  15. package/data/queries-win.json +7 -1
  16. package/data/queries.json +39 -2
  17. package/data/rules/ai-agent-governance.yaml +16 -0
  18. package/data/rules/asar-archives.yaml +150 -0
  19. package/data/rules/chrome-extensions.yaml +8 -0
  20. package/data/rules/ci-permissions.yaml +42 -18
  21. package/data/rules/container-risk.yaml +14 -7
  22. package/data/rules/dependency-sources.yaml +11 -0
  23. package/data/rules/hbom-compliance.yaml +325 -0
  24. package/data/rules/hbom-performance.yaml +307 -0
  25. package/data/rules/hbom-security.yaml +248 -0
  26. package/data/rules/host-topology.yaml +165 -0
  27. package/data/rules/mcp-servers.yaml +18 -3
  28. package/data/rules/obom-runtime.yaml +907 -22
  29. package/data/rules/package-integrity.yaml +14 -0
  30. package/data/rules/rootfs-hardening.yaml +179 -0
  31. package/data/rules/vscode-extensions.yaml +9 -0
  32. package/lib/audit/index.js +210 -8
  33. package/lib/audit/index.poku.js +332 -0
  34. package/lib/audit/reporters.js +222 -0
  35. package/lib/audit/targets.js +146 -1
  36. package/lib/audit/targets.poku.js +186 -0
  37. package/lib/cli/asar.poku.js +328 -0
  38. package/lib/cli/index.js +527 -99
  39. package/lib/cli/index.poku.js +1469 -212
  40. package/lib/evinser/evinser.js +14 -9
  41. package/lib/helpers/analyzer.js +1406 -29
  42. package/lib/helpers/analyzer.poku.js +342 -0
  43. package/lib/helpers/analyzerScope.js +712 -0
  44. package/lib/helpers/asarutils.js +1556 -0
  45. package/lib/helpers/asarutils.poku.js +443 -0
  46. package/lib/helpers/auditCategories.js +12 -0
  47. package/lib/helpers/auditCategories.poku.js +32 -0
  48. package/lib/helpers/bomUtils.js +155 -1
  49. package/lib/helpers/bomUtils.poku.js +79 -1
  50. package/lib/helpers/cbomutils.js +271 -1
  51. package/lib/helpers/cbomutils.poku.js +248 -5
  52. package/lib/helpers/display.js +291 -1
  53. package/lib/helpers/display.poku.js +149 -0
  54. package/lib/helpers/evidenceUtils.js +58 -0
  55. package/lib/helpers/evidenceUtils.poku.js +54 -0
  56. package/lib/helpers/exportUtils.js +9 -0
  57. package/lib/helpers/gtfobins.js +142 -8
  58. package/lib/helpers/gtfobins.poku.js +24 -1
  59. package/lib/helpers/hbom.js +710 -0
  60. package/lib/helpers/hbom.poku.js +496 -0
  61. package/lib/helpers/hbomAnalysis.js +268 -0
  62. package/lib/helpers/hbomAnalysis.poku.js +249 -0
  63. package/lib/helpers/hbomLoader.js +35 -0
  64. package/lib/helpers/hostTopology.js +803 -0
  65. package/lib/helpers/hostTopology.poku.js +363 -0
  66. package/lib/helpers/inventoryStats.js +69 -0
  67. package/lib/helpers/inventoryStats.poku.js +86 -0
  68. package/lib/helpers/lolbas.js +19 -1
  69. package/lib/helpers/lolbas.poku.js +23 -0
  70. package/lib/helpers/osqueryTransform.js +47 -0
  71. package/lib/helpers/osqueryTransform.poku.js +47 -0
  72. package/lib/helpers/plugins.js +350 -0
  73. package/lib/helpers/plugins.poku.js +57 -0
  74. package/lib/helpers/protobom.js +209 -45
  75. package/lib/helpers/protobom.poku.js +183 -5
  76. package/lib/helpers/protobomLoader.js +43 -0
  77. package/lib/helpers/protobomLoader.poku.js +31 -0
  78. package/lib/helpers/remote/dependency-track.js +36 -3
  79. package/lib/helpers/remote/dependency-track.poku.js +44 -0
  80. package/lib/helpers/source.js +24 -0
  81. package/lib/helpers/source.poku.js +32 -0
  82. package/lib/helpers/utils.js +1438 -93
  83. package/lib/helpers/utils.poku.js +846 -4
  84. package/lib/managers/binary.e2e.poku.js +367 -0
  85. package/lib/managers/binary.js +2293 -353
  86. package/lib/managers/binary.poku.js +1699 -1
  87. package/lib/managers/docker.js +201 -79
  88. package/lib/managers/docker.poku.js +337 -12
  89. package/lib/server/server.js +4 -28
  90. package/lib/stages/postgen/annotator.js +38 -0
  91. package/lib/stages/postgen/annotator.poku.js +107 -1
  92. package/lib/stages/postgen/auditBom.js +121 -18
  93. package/lib/stages/postgen/auditBom.poku.js +1366 -31
  94. package/lib/stages/postgen/hostTopologyAudit.poku.js +186 -0
  95. package/lib/stages/postgen/postgen.js +406 -8
  96. package/lib/stages/postgen/postgen.poku.js +484 -0
  97. package/lib/stages/postgen/ruleEngine.js +116 -0
  98. package/lib/stages/pregen/envAudit.js +14 -3
  99. package/lib/validator/bomValidator.js +90 -38
  100. package/lib/validator/bomValidator.poku.js +90 -0
  101. package/lib/validator/complianceRules.js +4 -2
  102. package/lib/validator/index.poku.js +14 -0
  103. package/package.json +23 -21
  104. package/types/bin/hbom.d.ts +3 -0
  105. package/types/bin/hbom.d.ts.map +1 -0
  106. package/types/bin/repl.d.ts +1 -1
  107. package/types/bin/repl.d.ts.map +1 -1
  108. package/types/lib/audit/index.d.ts +44 -0
  109. package/types/lib/audit/index.d.ts.map +1 -1
  110. package/types/lib/audit/reporters.d.ts +16 -0
  111. package/types/lib/audit/reporters.d.ts.map +1 -1
  112. package/types/lib/audit/targets.d.ts.map +1 -1
  113. package/types/lib/cli/index.d.ts +16 -0
  114. package/types/lib/cli/index.d.ts.map +1 -1
  115. package/types/lib/evinser/evinser.d.ts +4 -0
  116. package/types/lib/evinser/evinser.d.ts.map +1 -1
  117. package/types/lib/helpers/analyzer.d.ts +33 -0
  118. package/types/lib/helpers/analyzer.d.ts.map +1 -1
  119. package/types/lib/helpers/analyzerScope.d.ts +11 -0
  120. package/types/lib/helpers/analyzerScope.d.ts.map +1 -0
  121. package/types/lib/helpers/asarutils.d.ts +34 -0
  122. package/types/lib/helpers/asarutils.d.ts.map +1 -0
  123. package/types/lib/helpers/auditCategories.d.ts +5 -0
  124. package/types/lib/helpers/auditCategories.d.ts.map +1 -1
  125. package/types/lib/helpers/bomUtils.d.ts +10 -0
  126. package/types/lib/helpers/bomUtils.d.ts.map +1 -1
  127. package/types/lib/helpers/cbomutils.d.ts +3 -2
  128. package/types/lib/helpers/cbomutils.d.ts.map +1 -1
  129. package/types/lib/helpers/display.d.ts.map +1 -1
  130. package/types/lib/helpers/evidenceUtils.d.ts +8 -0
  131. package/types/lib/helpers/evidenceUtils.d.ts.map +1 -0
  132. package/types/lib/helpers/exportUtils.d.ts.map +1 -1
  133. package/types/lib/helpers/gtfobins.d.ts +8 -0
  134. package/types/lib/helpers/gtfobins.d.ts.map +1 -1
  135. package/types/lib/helpers/hbom.d.ts +49 -0
  136. package/types/lib/helpers/hbom.d.ts.map +1 -0
  137. package/types/lib/helpers/hbomAnalysis.d.ts +76 -0
  138. package/types/lib/helpers/hbomAnalysis.d.ts.map +1 -0
  139. package/types/lib/helpers/hbomLoader.d.ts +7 -0
  140. package/types/lib/helpers/hbomLoader.d.ts.map +1 -0
  141. package/types/lib/helpers/hostTopology.d.ts +12 -0
  142. package/types/lib/helpers/hostTopology.d.ts.map +1 -0
  143. package/types/lib/helpers/inventoryStats.d.ts +11 -0
  144. package/types/lib/helpers/inventoryStats.d.ts.map +1 -0
  145. package/types/lib/helpers/lolbas.d.ts.map +1 -1
  146. package/types/lib/helpers/osqueryTransform.d.ts +3 -0
  147. package/types/lib/helpers/osqueryTransform.d.ts.map +1 -1
  148. package/types/lib/helpers/plugins.d.ts +58 -0
  149. package/types/lib/helpers/plugins.d.ts.map +1 -0
  150. package/types/lib/helpers/protobom.d.ts +5 -4
  151. package/types/lib/helpers/protobom.d.ts.map +1 -1
  152. package/types/lib/helpers/protobomLoader.d.ts +17 -0
  153. package/types/lib/helpers/protobomLoader.d.ts.map +1 -0
  154. package/types/lib/helpers/remote/dependency-track.d.ts +10 -3
  155. package/types/lib/helpers/remote/dependency-track.d.ts.map +1 -1
  156. package/types/lib/helpers/source.d.ts.map +1 -1
  157. package/types/lib/helpers/utils.d.ts +45 -8
  158. package/types/lib/helpers/utils.d.ts.map +1 -1
  159. package/types/lib/managers/binary.d.ts +5 -0
  160. package/types/lib/managers/binary.d.ts.map +1 -1
  161. package/types/lib/managers/docker.d.ts.map +1 -1
  162. package/types/lib/server/server.d.ts +2 -1
  163. package/types/lib/server/server.d.ts.map +1 -1
  164. package/types/lib/stages/postgen/annotator.d.ts.map +1 -1
  165. package/types/lib/stages/postgen/auditBom.d.ts +26 -1
  166. package/types/lib/stages/postgen/auditBom.d.ts.map +1 -1
  167. package/types/lib/stages/postgen/postgen.d.ts +2 -1
  168. package/types/lib/stages/postgen/postgen.d.ts.map +1 -1
  169. package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -1
  170. package/types/lib/stages/pregen/envAudit.d.ts.map +1 -1
  171. package/types/lib/third-party/arborist/lib/node.d.ts +23 -0
  172. package/types/lib/third-party/arborist/lib/node.d.ts.map +1 -1
  173. package/types/lib/validator/bomValidator.d.ts.map +1 -1
  174. package/types/lib/validator/complianceRules.d.ts.map +1 -1
  175. package/data/spdx-model-v3.0.1.jsonld +0 -15999
@@ -0,0 +1,248 @@
1
+ # HBOM Security Rules
2
+ # Category: hbom-security
3
+ # Evaluates host hardware inventory for encryption, removable-media, wireless, and disclosure risks.
4
+
5
+ - id: HBS-001
6
+ name: "Storage component is explicitly unencrypted"
7
+ description: "System or attached storage reported as unencrypted increases exposure for lost, stolen, or offline-access devices."
8
+ severity: high
9
+ category: hbom-security
10
+ dry-run-support: full
11
+ standards:
12
+ nist-800-53:
13
+ - "SC-28 Protection of Information at Rest"
14
+ cis-controls-v8:
15
+ - "3.11 Encrypt Sensitive Data at Rest"
16
+ iso-27001:
17
+ - "A.8.24 Use of cryptography"
18
+ condition: |
19
+ components[
20
+ (
21
+ $prop($, 'cdx:hbom:hardwareClass') = 'storage'
22
+ or $prop($, 'cdx:hbom:hardwareClass') = 'storage-volume'
23
+ )
24
+ and (
25
+ $safeStr($prop($, 'cdx:hbom:isEncrypted')) = 'false'
26
+ or $safeStr($prop($, 'cdx:hbom:fileVault')) = 'false'
27
+ )
28
+ ]
29
+ location: |
30
+ {
31
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
32
+ }
33
+ message: "Storage component '{{ name }}' is reported as unencrypted"
34
+ mitigation: "Enable full-disk or volume encryption, verify escrow/recovery procedures, and confirm the device is enrolled in the intended encryption baseline."
35
+ evidence: |
36
+ {
37
+ "hardwareClass": $prop($, 'cdx:hbom:hardwareClass'),
38
+ "isEncrypted": $prop($, 'cdx:hbom:isEncrypted'),
39
+ "fileVault": $prop($, 'cdx:hbom:fileVault'),
40
+ "volumeUuid": $prop($, 'cdx:hbom:volumeUuid'),
41
+ "deviceSerial": $prop($, 'cdx:hbom:deviceSerial')
42
+ }
43
+
44
+ - id: HBS-002
45
+ name: "Connected wireless adapter uses weak or missing link security"
46
+ description: "Wireless adapters connected without strong link security indicate elevated interception and unauthorized access risk."
47
+ severity: high
48
+ category: hbom-security
49
+ dry-run-support: full
50
+ standards:
51
+ nist-800-53:
52
+ - "AC-18 Wireless Access"
53
+ - "SC-13 Cryptographic Protection"
54
+ condition: |
55
+ components[
56
+ $prop($, 'cdx:hbom:hardwareClass') = 'wireless-adapter'
57
+ and $safeStr($prop($, 'cdx:hbom:connected')) = 'true'
58
+ and (
59
+ $safeStr($prop($, 'cdx:hbom:securityMode')) = ''
60
+ or $contains($lowercase($safeStr($prop($, 'cdx:hbom:securityMode'))), 'open')
61
+ or $contains($lowercase($safeStr($prop($, 'cdx:hbom:securityMode'))), 'wep')
62
+ or $contains($lowercase($safeStr($prop($, 'cdx:hbom:securityMode'))), 'none')
63
+ )
64
+ ]
65
+ location: |
66
+ {
67
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
68
+ }
69
+ message: "Wireless adapter '{{ name }}' is connected with weak or missing security mode '{{ $firstNonEmpty($prop($, 'cdx:hbom:securityMode'), 'unknown') }}'"
70
+ mitigation: "Move the device to WPA2/WPA3-class protections, review SSID policy, and confirm that open or legacy wireless modes are not permitted for the host profile."
71
+ evidence: |
72
+ {
73
+ "securityMode": $prop($, 'cdx:hbom:securityMode'),
74
+ "channel": $prop($, 'cdx:hbom:channel'),
75
+ "phyMode": $prop($, 'cdx:hbom:phyMode'),
76
+ "countryCode": $prop($, 'cdx:hbom:countryCode'),
77
+ "firmwareVersion": $prop($, 'cdx:hbom:firmwareVersion')
78
+ }
79
+
80
+ - id: HBS-003
81
+ name: "Removable storage is attached without encryption or lock evidence"
82
+ description: "Attached removable storage that is explicitly unlocked or unencrypted increases data-exfiltration and malware-ingress risk."
83
+ severity: high
84
+ category: hbom-security
85
+ dry-run-support: full
86
+ standards:
87
+ nist-800-53:
88
+ - "MP-7 Media Use"
89
+ - "SC-28 Protection of Information at Rest"
90
+ cis-controls-v8:
91
+ - "3.9 Encrypt Data on Removable Media"
92
+ condition: |
93
+ components[
94
+ (
95
+ $prop($, 'cdx:hbom:hardwareClass') = 'storage'
96
+ or $prop($, 'cdx:hbom:hardwareClass') = 'storage-volume'
97
+ )
98
+ and $safeStr($prop($, 'cdx:hbom:isRemovable')) = 'true'
99
+ and (
100
+ $safeStr($prop($, 'cdx:hbom:isEncrypted')) = 'false'
101
+ or $safeStr($prop($, 'cdx:hbom:isLocked')) = 'false'
102
+ )
103
+ ]
104
+ location: |
105
+ {
106
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
107
+ }
108
+ message: "Removable storage '{{ name }}' is attached without encryption or lock assurance"
109
+ mitigation: "Remove unapproved removable media, require encrypted removable devices, and verify the host's removable-media control policy."
110
+ evidence: |
111
+ {
112
+ "isRemovable": $prop($, 'cdx:hbom:isRemovable'),
113
+ "isEncrypted": $prop($, 'cdx:hbom:isEncrypted'),
114
+ "isLocked": $prop($, 'cdx:hbom:isLocked'),
115
+ "connectionType": $prop($, 'cdx:hbom:connectionType'),
116
+ "transport": $prop($, 'cdx:hbom:transport')
117
+ }
118
+
119
+ - id: HBS-004
120
+ name: "HBOM exposes raw hardware identifiers"
121
+ description: "Raw serial numbers, MAC addresses, or platform UUIDs in the BOM can leak asset intelligence beyond the intended audience."
122
+ severity: medium
123
+ category: hbom-security
124
+ dry-run-support: full
125
+ condition: |
126
+ $append(
127
+ metadata.component[
128
+ (
129
+ $hasProp($, 'cdx:hbom:serialNumber')
130
+ and $startsWith($safeStr($prop($, 'cdx:hbom:serialNumber')), 'redacted') = false
131
+ )
132
+ or (
133
+ $hasProp($, 'cdx:hbom:platformUuid')
134
+ and $startsWith($safeStr($prop($, 'cdx:hbom:platformUuid')), 'redacted') = false
135
+ )
136
+ ],
137
+ components[
138
+ (
139
+ $hasProp($, 'cdx:hbom:serialNumber')
140
+ and $startsWith($safeStr($prop($, 'cdx:hbom:serialNumber')), 'redacted') = false
141
+ )
142
+ or (
143
+ $hasProp($, 'cdx:hbom:macAddress')
144
+ and $startsWith($safeStr($prop($, 'cdx:hbom:macAddress')), 'redacted') = false
145
+ )
146
+ or (
147
+ $hasProp($, 'cdx:hbom:deviceSerial')
148
+ and $startsWith($safeStr($prop($, 'cdx:hbom:deviceSerial')), 'redacted') = false
149
+ )
150
+ ]
151
+ )
152
+ location: |
153
+ {
154
+ "bomRef": $firstNonEmpty($."bom-ref", metadata.component."bom-ref", bom.serialNumber)
155
+ }
156
+ message: "HBOM entry '{{ name }}' exposes raw hardware identifiers that should be reviewed before distribution"
157
+ mitigation: "Use redacted identifier mode for externally shared HBOMs and restrict raw identifiers to tightly controlled internal asset workflows."
158
+ evidence: |
159
+ {
160
+ "identifierPolicy": $firstNonEmpty($prop($, 'cdx:hbom:identifierPolicy'), $prop(metadata.component, 'cdx:hbom:identifierPolicy')),
161
+ "serialNumber": $prop($, 'cdx:hbom:serialNumber'),
162
+ "macAddress": $prop($, 'cdx:hbom:macAddress'),
163
+ "deviceSerial": $prop($, 'cdx:hbom:deviceSerial'),
164
+ "platformUuid": $prop(metadata.component, 'cdx:hbom:platformUuid')
165
+ }
166
+
167
+ - id: HBS-005
168
+ name: "External expansion bus reports permissive security posture"
169
+ description: "A Thunderbolt or USB4 path with permissive security level or disabled IOMMU protection increases the risk of DMA-style or rogue-device attack paths."
170
+ severity: high
171
+ category: hbom-security
172
+ dry-run-support: full
173
+ standards:
174
+ nist-800-53:
175
+ - "CM-8 System Component Inventory"
176
+ - "SC-7 Boundary Protection"
177
+ - "SI-16 Memory Protection"
178
+ condition: |
179
+ components[
180
+ (
181
+ $hasProp($, 'cdx:hbom:securityLevel')
182
+ or $hasProp($, 'cdx:hbom:iommuProtection')
183
+ or $hasProp($, 'cdx:hbom:policy')
184
+ )
185
+ and (
186
+ $contains($lowercase($safeStr($prop($, 'cdx:hbom:securityLevel'))), 'none')
187
+ or $contains($lowercase($safeStr($prop($, 'cdx:hbom:securityLevel'))), 'legacy')
188
+ or $contains($lowercase($safeStr($prop($, 'cdx:hbom:securityLevel'))), 'user')
189
+ or $safeStr($prop($, 'cdx:hbom:iommuProtection')) = 'false'
190
+ )
191
+ ]
192
+ location: |
193
+ {
194
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
195
+ }
196
+ message: "External expansion component '{{ name }}' reports a permissive security posture or missing IOMMU protection"
197
+ mitigation: "Require a stronger Thunderbolt/USB4 security level, verify IOMMU protection is enabled, and review auto-authorization policy before trusting hot-plug external devices."
198
+ evidence: |
199
+ {
200
+ "securityLevel": $prop($, 'cdx:hbom:securityLevel'),
201
+ "iommuProtection": $prop($, 'cdx:hbom:iommuProtection'),
202
+ "policy": $prop($, 'cdx:hbom:policy'),
203
+ "authorized": $prop($, 'cdx:hbom:authorized'),
204
+ "bootAclCount": $prop($, 'cdx:hbom:bootAclCount')
205
+ }
206
+
207
+ - id: HBS-006
208
+ name: "HBOM exposes raw cellular or subscriber identifiers"
209
+ description: "Raw modem equipment identifiers, IMEIs, or subscriber numbers in the BOM can leak privacy-sensitive fleet and subscriber intelligence."
210
+ severity: medium
211
+ category: hbom-security
212
+ dry-run-support: full
213
+ condition: |
214
+ components[
215
+ (
216
+ $prop($, 'cdx:hbom:hardwareClass') = 'modem'
217
+ or $hasProp($, 'cdx:hbom:equipmentIdentifier')
218
+ or $hasProp($, 'cdx:hbom:imei')
219
+ or $hasProp($, 'cdx:hbom:ownNumbers')
220
+ )
221
+ and (
222
+ (
223
+ $hasProp($, 'cdx:hbom:equipmentIdentifier')
224
+ and $startsWith($lowercase($safeStr($prop($, 'cdx:hbom:equipmentIdentifier'))), 'redacted') = false
225
+ )
226
+ or (
227
+ $hasProp($, 'cdx:hbom:imei')
228
+ and $startsWith($lowercase($safeStr($prop($, 'cdx:hbom:imei'))), 'redacted') = false
229
+ )
230
+ or (
231
+ $hasProp($, 'cdx:hbom:ownNumbers')
232
+ and $startsWith($lowercase($safeStr($prop($, 'cdx:hbom:ownNumbers'))), 'redacted') = false
233
+ )
234
+ )
235
+ ]
236
+ location: |
237
+ {
238
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
239
+ }
240
+ message: "Cellular component '{{ name }}' exposes raw modem or subscriber identifiers that should be reviewed before distribution"
241
+ mitigation: "Keep modem identifiers redacted in shared HBOMs and restrict raw IMEI, equipment, or subscriber number exposure to tightly controlled internal device-management workflows."
242
+ evidence: |
243
+ {
244
+ "equipmentIdentifier": $prop($, 'cdx:hbom:equipmentIdentifier'),
245
+ "imei": $prop($, 'cdx:hbom:imei'),
246
+ "ownNumbers": $prop($, 'cdx:hbom:ownNumbers'),
247
+ "identifierPolicy": $firstNonEmpty($prop($, 'cdx:hbom:identifierPolicy'), $prop(metadata.component, 'cdx:hbom:identifierPolicy'))
248
+ }
@@ -0,0 +1,165 @@
1
+ # Host Topology Rules
2
+ # Category: host-topology
3
+ # Evaluates strict, evidence-backed insights derived from merged HBOM + OBOM inventories.
4
+
5
+ - id: HMX-001
6
+ name: "Active wired interface with live runtime addresses is operating degraded"
7
+ description: "A wired interface that is actually carrying runtime addresses but is negotiated at low bandwidth or half duplex represents a higher-confidence performance issue than hardware inventory alone."
8
+ severity: medium
9
+ category: host-topology
10
+ dry-run-support: partial
11
+ condition: |
12
+ components[
13
+ $prop($, 'cdx:hbom:hardwareClass') = 'network-interface'
14
+ and $number($firstNonEmpty($prop($, 'cdx:hostview:interface_addresses:count'), '0')) > 0
15
+ and (
16
+ $lowercase($safeStr($prop($, 'cdx:hbom:duplex'))) = 'half'
17
+ or (
18
+ $hasProp($, 'cdx:hbom:speedMbps')
19
+ and $number($prop($, 'cdx:hbom:speedMbps')) > 0
20
+ and $number($prop($, 'cdx:hbom:speedMbps')) < 1000
21
+ )
22
+ )
23
+ ]
24
+ location: |
25
+ {
26
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
27
+ }
28
+ message: "Interface '{{ name }}' has live runtime address evidence but negotiated degraded duplex or bandwidth characteristics"
29
+ mitigation: "Inspect cabling, switch policy, NIC firmware/driver, and negotiated link settings before treating the issue as application-only latency."
30
+ evidence: |
31
+ {
32
+ "runtimeAddressCount": $prop($, 'cdx:hostview:interface_addresses:count'),
33
+ "driver": $prop($, 'cdx:hbom:driver'),
34
+ "speedMbps": $prop($, 'cdx:hbom:speedMbps'),
35
+ "duplex": $prop($, 'cdx:hbom:duplex'),
36
+ "operState": $prop($, 'cdx:hbom:operState')
37
+ }
38
+
39
+ - id: HMX-002
40
+ name: "Wireless interface with live runtime address uses weak or missing link security"
41
+ description: "Weak wireless security on an interface that also has runtime address evidence is a stronger exposure signal than hardware inventory alone."
42
+ severity: high
43
+ category: host-topology
44
+ dry-run-support: partial
45
+ condition: |
46
+ components[
47
+ (
48
+ $prop($, 'cdx:hbom:hardwareClass') = 'wireless-adapter'
49
+ or (
50
+ $prop($, 'cdx:hbom:hardwareClass') = 'network-interface'
51
+ and $hasProp($, 'cdx:hbom:securityMode')
52
+ )
53
+ )
54
+ and $number($firstNonEmpty($prop($, 'cdx:hostview:interface_addresses:count'), '0')) > 0
55
+ and (
56
+ $safeStr($prop($, 'cdx:hbom:securityMode')) = ''
57
+ or $contains($lowercase($safeStr($prop($, 'cdx:hbom:securityMode'))), 'open')
58
+ or $contains($lowercase($safeStr($prop($, 'cdx:hbom:securityMode'))), 'wep')
59
+ or $contains($lowercase($safeStr($prop($, 'cdx:hbom:securityMode'))), 'none')
60
+ )
61
+ ]
62
+ location: |
63
+ {
64
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
65
+ }
66
+ message: "Wireless interface '{{ name }}' has live runtime address evidence while using weak or missing security mode '{{ $firstNonEmpty($prop($, 'cdx:hbom:securityMode'), 'unknown') }}'"
67
+ mitigation: "Move the interface to WPA2/WPA3-class protections, review SSID policy, and verify that actively routed wireless links meet enterprise security baselines."
68
+ evidence: |
69
+ {
70
+ "runtimeAddressCount": $prop($, 'cdx:hostview:interface_addresses:count'),
71
+ "securityMode": $prop($, 'cdx:hbom:securityMode'),
72
+ "channel": $prop($, 'cdx:hbom:channel'),
73
+ "phyMode": $prop($, 'cdx:hbom:phyMode')
74
+ }
75
+
76
+ - id: HMX-003
77
+ name: "Merged host inventory lacks strict hardware/runtime topology links"
78
+ description: "When a merged HBOM+OBOM view contains no strict cross-domain topology links, reviewers should treat combined host conclusions cautiously and inspect collection coverage."
79
+ severity: medium
80
+ category: host-topology
81
+ dry-run-support: partial
82
+ condition: |
83
+ metadata.component[
84
+ type = 'device'
85
+ and $prop($, 'cdx:hostview:mode') = 'hbom-obom-merged'
86
+ and $number($firstNonEmpty($prop($, 'cdx:hostview:topologyLinkCount'), '0')) = 0
87
+ ]
88
+ location: |
89
+ {
90
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
91
+ }
92
+ message: "Merged host inventory for '{{ name }}' contains no strict HBOM-to-OBOM topology links"
93
+ mitigation: "Review collector coverage, ensure runtime categories such as interface_addresses or kernel_modules are available, and prefer exact identifier-bearing probes over heuristic joins."
94
+ evidence: |
95
+ {
96
+ "hostViewMode": $prop($, 'cdx:hostview:mode'),
97
+ "hardwareComponentCount": $prop($, 'cdx:hostview:hardwareComponentCount'),
98
+ "runtimeComponentCount": $prop($, 'cdx:hostview:runtimeComponentCount'),
99
+ "topologyLinkCount": $prop($, 'cdx:hostview:topologyLinkCount')
100
+ }
101
+
102
+ - id: HMX-004
103
+ name: "Mounted storage with explicit runtime evidence is reporting degraded health"
104
+ description: "Storage health issues become higher-confidence operational findings when the hardware component is also linked to an active runtime mount or logical drive using exact identifiers."
105
+ severity: high
106
+ category: host-topology
107
+ dry-run-support: partial
108
+ condition: |
109
+ components[
110
+ (
111
+ $prop($, 'cdx:hbom:hardwareClass') = 'storage'
112
+ or $prop($, 'cdx:hbom:hardwareClass') = 'storage-device'
113
+ or $prop($, 'cdx:hbom:hardwareClass') = 'storage-volume'
114
+ )
115
+ and (
116
+ $number($firstNonEmpty($prop($, 'cdx:hostview:mount_hardening:count'), '0')) > 0
117
+ or $number($firstNonEmpty($prop($, 'cdx:hostview:runtime-storage:count'), '0')) > 0
118
+ )
119
+ and (
120
+ $contains($lowercase($safeStr($prop($, 'cdx:hbom:smartStatus'))), 'fail')
121
+ or $contains($lowercase($safeStr($prop($, 'cdx:hbom:health'))), 'degrad')
122
+ or $number($firstNonEmpty($prop($, 'cdx:hbom:wearPercentageUsed'), '0')) >= 90
123
+ )
124
+ ]
125
+ location: |
126
+ {
127
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
128
+ }
129
+ message: "Storage component '{{ name }}' is explicitly linked to a runtime mount or drive while reporting degraded health telemetry"
130
+ mitigation: "Prioritize remediation for the backing device because the linked runtime mount evidence shows the degraded storage is actively in use."
131
+ evidence: |
132
+ {
133
+ "mountCount": $prop($, 'cdx:hostview:mount_hardening:count'),
134
+ "runtimeStorageCount": $prop($, 'cdx:hostview:runtime-storage:count'),
135
+ "smartStatus": $prop($, 'cdx:hbom:smartStatus'),
136
+ "health": $prop($, 'cdx:hbom:health'),
137
+ "wearPercentageUsed": $prop($, 'cdx:hbom:wearPercentageUsed')
138
+ }
139
+
140
+ - id: HMX-005
141
+ name: "Explicit HBOM secure-boot trust anchor matches a revoked runtime Secure Boot certificate"
142
+ description: "When HBOM metadata carries an explicit Secure Boot certificate identifier that strictly links to runtime secureboot_certificates data, revoked trust anchors indicate a higher-confidence firmware trust issue."
143
+ severity: high
144
+ category: host-topology
145
+ dry-run-support: partial
146
+ condition: |
147
+ components[
148
+ $prop($, 'cdx:osquery:category') = 'secureboot_certificates'
149
+ and $number($firstNonEmpty($prop($, 'revoked'), '0')) > 0
150
+ and $number($firstNonEmpty($prop($$.metadata.component, 'cdx:hostview:secureboot_certificates:count'), '0')) > 0
151
+ ]
152
+ location: |
153
+ {
154
+ "bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
155
+ }
156
+ message: "Secure Boot certificate '{{ name }}' is revoked and the host also has an explicit HBOM trust-anchor link for this Secure Boot surface"
157
+ mitigation: "Review firmware trust policy, remove revoked Secure Boot entries from active trust sets, and verify that the expected db/dbx anchors on the host still match the approved platform state."
158
+ evidence: |
159
+ {
160
+ "linkedSecureBootCertificateCount": $prop($, 'cdx:hostview:secureboot_certificates:count'),
161
+ "revokedCertificateCount": $count(bom.components[
162
+ $prop($, 'cdx:osquery:category') = 'secureboot_certificates'
163
+ and $number($firstNonEmpty($prop($, 'revoked'), '0')) > 0
164
+ ])
165
+ }
@@ -3,13 +3,15 @@
3
3
  description: "HTTP-based MCP servers that expose tools without authentication let unauthenticated clients invoke model-controlled actions directly."
4
4
  severity: critical
5
5
  category: mcp-server
6
+ dry-run-support: full
6
7
  attack:
7
- tactics: [TA0001, TA0004]
8
+ tactics: [TA0001, TA0002]
8
9
  techniques: [T1190, T1059]
9
10
  standards:
10
11
  owasp-ai-top-10:
11
12
  - "LLM07: Insecure Plugin Design"
12
13
  - "LLM08: Excessive Agency"
14
+ - "LLM06:2025 Excessive Agency"
13
15
  nist-ai-rmf:
14
16
  - "Map"
15
17
  - "Manage"
@@ -44,6 +46,7 @@
44
46
  description: "Streamable HTTP MCP servers should authenticate incoming requests before serving prompts, resources, or tools."
45
47
  severity: high
46
48
  category: mcp-server
49
+ dry-run-support: full
47
50
  attack:
48
51
  tactics: [TA0001]
49
52
  techniques: [T1190]
@@ -81,13 +84,15 @@
81
84
  description: "MCP servers built on non-official SDKs or wrappers deserve extra review before being exposed over HTTP, especially when they register tools."
82
85
  severity: medium
83
86
  category: mcp-server
87
+ dry-run-support: full
84
88
  attack:
85
- tactics: [TA0001, TA0005]
89
+ tactics: [TA0001]
86
90
  techniques: [T1195.001]
87
91
  standards:
88
92
  owasp-ai-top-10:
89
93
  - "LLM05: Supply Chain Vulnerabilities"
90
94
  - "LLM07: Insecure Plugin Design"
95
+ - "LLM03:2025 Supply Chain"
91
96
  nist-ai-rmf:
92
97
  - "Govern"
93
98
  - "Map"
@@ -124,6 +129,7 @@
124
129
  description: "MCP services discovered only from client configuration files still need explicit authentication or OAuth posture when they resolve to network-accessible HTTP endpoints."
125
130
  severity: high
126
131
  category: mcp-server
132
+ dry-run-support: full
127
133
  attack:
128
134
  tactics: [TA0001]
129
135
  techniques: [T1190]
@@ -131,6 +137,7 @@
131
137
  owasp-ai-top-10:
132
138
  - "LLM07: Insecure Plugin Design"
133
139
  - "LLM08: Excessive Agency"
140
+ - "LLM06:2025 Excessive Agency"
134
141
  nist-ai-rmf:
135
142
  - "Map"
136
143
  - "Manage"
@@ -163,6 +170,7 @@
163
170
  description: "MCP configs that embed tokens, API keys, or other secrets directly in args, env values, or headers create immediate credential-handling and supply-chain review risk."
164
171
  severity: critical
165
172
  category: mcp-server
173
+ dry-run-support: full
166
174
  attack:
167
175
  tactics: [TA0006]
168
176
  techniques: [T1552]
@@ -170,6 +178,7 @@
170
178
  owasp-ai-top-10:
171
179
  - "LLM05: Supply Chain Vulnerabilities"
172
180
  - "LLM07: Insecure Plugin Design"
181
+ - "LLM03:2025 Supply Chain"
173
182
  nist-ai-rmf:
174
183
  - "Govern"
175
184
  - "Manage"
@@ -201,13 +210,15 @@
201
210
  description: "Dynamic client registration combined with a static configured client ID can create confused-deputy style authorization risk in MCP deployments."
202
211
  severity: high
203
212
  category: mcp-server
213
+ dry-run-support: full
204
214
  attack:
205
- tactics: [TA0004]
215
+ tactics: [TA0006]
206
216
  techniques: [T1528]
207
217
  standards:
208
218
  owasp-ai-top-10:
209
219
  - "LLM07: Insecure Plugin Design"
210
220
  - "LLM08: Excessive Agency"
221
+ - "LLM06:2025 Excessive Agency"
211
222
  nist-ai-rmf:
212
223
  - "Govern"
213
224
  - "Map"
@@ -238,6 +249,7 @@
238
249
  description: "Token-forwarding and passthrough settings in MCP configs deserve review because they can propagate delegated credentials across trust boundaries."
239
250
  severity: high
240
251
  category: mcp-server
252
+ dry-run-support: full
241
253
  attack:
242
254
  tactics: [TA0006]
243
255
  techniques: [T1528]
@@ -245,6 +257,7 @@
245
257
  owasp-ai-top-10:
246
258
  - "LLM07: Insecure Plugin Design"
247
259
  - "LLM08: Excessive Agency"
260
+ - "LLM06:2025 Excessive Agency"
248
261
  nist-ai-rmf:
249
262
  - "Govern"
250
263
  - "Manage"
@@ -275,10 +288,12 @@
275
288
  description: "Committed MCP client configuration files can carry trust, auth, and distribution sensitivity even when they are not actively used during the current scan."
276
289
  severity: medium
277
290
  category: mcp-server
291
+ dry-run-support: full
278
292
  standards:
279
293
  owasp-ai-top-10:
280
294
  - "LLM07: Insecure Plugin Design"
281
295
  - "LLM08: Excessive Agency"
296
+ - "LLM06:2025 Excessive Agency"
282
297
  nist-ai-rmf:
283
298
  - "Govern"
284
299
  - "Map"