@cdxgen/cdxgen 0.0.1 → 13.0.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 (722) hide show
  1. package/README.md +921 -87
  2. package/bin/audit.js +239 -0
  3. package/bin/cdxgen.js +2335 -0
  4. package/bin/convert.js +220 -0
  5. package/bin/evinse.js +353 -0
  6. package/bin/hbom.js +504 -0
  7. package/bin/repl.js +2224 -0
  8. package/bin/sign.js +195 -0
  9. package/bin/tracebom.js +303 -0
  10. package/bin/validate.js +268 -0
  11. package/bin/verify.js +189 -0
  12. package/data/README.md +307 -0
  13. package/data/bom-1.4.schema.json +1605 -0
  14. package/data/bom-1.5.schema.json +3660 -0
  15. package/data/bom-1.6.schema.json +5511 -0
  16. package/data/bom-1.7.schema.json +6700 -0
  17. package/data/cbomosdb-queries.json +68 -0
  18. package/data/component-tags.json +339 -0
  19. package/data/container-knowledge-index.json +125 -0
  20. package/data/cosdb-queries.json +17 -0
  21. package/data/crypto-oid.json +1998 -0
  22. package/data/cryptography-defs.json +3793 -0
  23. package/data/cryptography-defs.schema.json +576 -0
  24. package/data/cyclonedx-2.0-bundled.schema.json +7182 -0
  25. package/data/frameworks-list.json +219 -0
  26. package/data/glibc-stdlib.json +117 -0
  27. package/data/gtfobins-index.json +6296 -0
  28. package/data/helpers/init.gradle +71 -0
  29. package/data/jsf-0.82.schema.json +211 -0
  30. package/data/known-licenses.json +82 -0
  31. package/data/lic-mapping.json +338 -0
  32. package/data/license-aliases.json +6624 -0
  33. package/data/license-db.json +39059 -0
  34. package/data/license-deprecations.json +302 -0
  35. package/data/lolbas-index.json +150 -0
  36. package/data/predictive-audit-allowlist.json +11 -0
  37. package/data/pypi-pkg-aliases.json +1199 -0
  38. package/data/python-stdlib.json +308 -0
  39. package/data/queries-darwin.json +193 -0
  40. package/data/queries-win.json +257 -0
  41. package/data/queries.json +268 -0
  42. package/data/ruby-known-modules.json +281 -0
  43. package/data/rules/ai-agent-governance.yaml +323 -0
  44. package/data/rules/ai-bom.yaml +268 -0
  45. package/data/rules/ai-oversight.yaml +186 -0
  46. package/data/rules/ai-provenance.yaml +92 -0
  47. package/data/rules/asar-archives.yaml +150 -0
  48. package/data/rules/cbom-security.yaml +165 -0
  49. package/data/rules/chrome-extensions.yaml +248 -0
  50. package/data/rules/ci-permissions.yaml +802 -0
  51. package/data/rules/container-risk.yaml +353 -0
  52. package/data/rules/dependency-sources.yaml +236 -0
  53. package/data/rules/golem-go.yaml +229 -0
  54. package/data/rules/hbom-compliance.yaml +325 -0
  55. package/data/rules/hbom-performance.yaml +307 -0
  56. package/data/rules/hbom-security.yaml +248 -0
  57. package/data/rules/host-topology.yaml +165 -0
  58. package/data/rules/mcp-servers.yaml +388 -0
  59. package/data/rules/obom-runtime.yaml +1776 -0
  60. package/data/rules/package-integrity.yaml +364 -0
  61. package/data/rules/rootfs-hardening.yaml +179 -0
  62. package/data/rules/vscode-extensions.yaml +237 -0
  63. package/data/spdx-export.schema.json +6794 -0
  64. package/data/spdx-license-list.json +7449 -0
  65. package/data/spdx-licenses.json +759 -0
  66. package/data/spdx.schema.json +819 -0
  67. package/data/templates/README.md +3 -0
  68. package/data/templates/asvs-4.0.3.cdx.json +2943 -0
  69. package/data/templates/asvs-5.0.cdx.json +3046 -0
  70. package/data/templates/bsimm-v13.cdx.json +1008 -0
  71. package/data/templates/masvs-2.0.0.cdx.json +225 -0
  72. package/data/templates/nist-ssdf-1.1.cdx.json +828 -0
  73. package/data/templates/pcissc-secure-slc-1.1.cdx.json +1027 -0
  74. package/data/templates/scvs-1.0.0.cdx.json +813 -0
  75. package/data/templates/ssaf-DRAFT-2023-11.cdx.json +127 -0
  76. package/data/vendor-alias.json +41967 -0
  77. package/data/wrapdb-releases.json +4227 -0
  78. package/index.cjs +15 -0
  79. package/lib/audit/index.js +2800 -0
  80. package/lib/audit/progress.js +114 -0
  81. package/lib/audit/reporters.js +937 -0
  82. package/lib/audit/scoring.js +560 -0
  83. package/lib/audit/targets.js +798 -0
  84. package/lib/cli/bomAssembly.js +1882 -0
  85. package/lib/cli/cliOptions.js +543 -0
  86. package/lib/cli/index.js +2759 -0
  87. package/lib/cli/jsBom.js +2087 -0
  88. package/lib/cli/jvmBom.js +1858 -0
  89. package/lib/cli/managedBom.js +2083 -0
  90. package/lib/cli/nativeBom.js +2125 -0
  91. package/lib/core/activity.js +1087 -0
  92. package/lib/core/env.js +719 -0
  93. package/lib/core/fs.js +1058 -0
  94. package/lib/core/httpClient.js +730 -0
  95. package/lib/core/logger.js +280 -0
  96. package/lib/core/parallel.js +323 -0
  97. package/lib/core/paths.js +70 -0
  98. package/lib/core/projectConfig.js +122 -0
  99. package/lib/core/propertySanitizer.js +174 -0
  100. package/lib/core/spdx.js +5 -0
  101. package/lib/core/state.js +59 -0
  102. package/lib/core/text.js +207 -0
  103. package/lib/core/ui.js +920 -0
  104. package/lib/core/urls.js +84 -0
  105. package/lib/ecosystems/asarutils.js +1636 -0
  106. package/lib/ecosystems/bunutils.js +402 -0
  107. package/lib/ecosystems/caxa.js +77 -0
  108. package/lib/ecosystems/chromextutils.js +1174 -0
  109. package/lib/ecosystems/cmakeResolver.js +587 -0
  110. package/lib/ecosystems/cppEvidence.js +305 -0
  111. package/lib/ecosystems/denoutils.js +1094 -0
  112. package/lib/ecosystems/dotnetutils.js +132 -0
  113. package/lib/ecosystems/ecosystems.js +2772 -0
  114. package/lib/ecosystems/golem.js +1807 -0
  115. package/lib/ecosystems/gradleutils.js +1048 -0
  116. package/lib/ecosystems/jsEvidence.js +317 -0
  117. package/lib/ecosystems/npmutils.js +586 -0
  118. package/lib/ecosystems/parsers-bazel.js +875 -0
  119. package/lib/ecosystems/parsers-dotnet.js +1430 -0
  120. package/lib/ecosystems/parsers-gleam.js +302 -0
  121. package/lib/ecosystems/parsers-go.js +818 -0
  122. package/lib/ecosystems/parsers-js.js +4222 -0
  123. package/lib/ecosystems/parsers-jvm.js +948 -0
  124. package/lib/ecosystems/parsers-misc.js +3191 -0
  125. package/lib/ecosystems/parsers-python.js +2070 -0
  126. package/lib/ecosystems/parsers-rust.js +1294 -0
  127. package/lib/ecosystems/parsers-zig.js +861 -0
  128. package/lib/ecosystems/pep770.js +341 -0
  129. package/lib/ecosystems/pylockutils.js +427 -0
  130. package/lib/ecosystems/pythonutils.js +1281 -0
  131. package/lib/ecosystems/registryProvenance.js +1003 -0
  132. package/lib/ecosystems/remote/huggingface.js +1343 -0
  133. package/lib/ecosystems/rubyutils.js +1629 -0
  134. package/lib/ecosystems/rusi.js +820 -0
  135. package/lib/ecosystems/sbtutils.js +972 -0
  136. package/lib/ecosystems/tea.js +607 -0
  137. package/lib/ecosystems/utils.js +583 -0
  138. package/lib/ecosystems/zigResolver.js +410 -0
  139. package/lib/evinser/db.js +145 -0
  140. package/lib/evinser/evinser.js +2362 -0
  141. package/lib/evinser/scalasem.js +65 -0
  142. package/lib/evinser/swiftsem.js +767 -0
  143. package/lib/helpers/annotationFormatter.js +84 -0
  144. package/lib/helpers/bomSigner.js +312 -0
  145. package/lib/helpers/exportUtils.js +160 -0
  146. package/lib/helpers/remote/dependency-track.js +117 -0
  147. package/lib/helpers/versutils.js +202 -0
  148. package/lib/helpers/vsixutils.js +1069 -0
  149. package/lib/inventory/agentFormulationParser.js +322 -0
  150. package/lib/inventory/aiCollector.js +2140 -0
  151. package/lib/inventory/aiInventory.js +414 -0
  152. package/lib/inventory/aiModelVariants.js +121 -0
  153. package/lib/inventory/aiOversightCollector.js +661 -0
  154. package/lib/inventory/aiProvenanceCollector.js +822 -0
  155. package/lib/inventory/analyzer.js +6089 -0
  156. package/lib/inventory/analyzerScope.js +807 -0
  157. package/lib/inventory/astWorker.js +20 -0
  158. package/lib/inventory/atomUtils.js +1092 -0
  159. package/lib/inventory/auditCategories.js +192 -0
  160. package/lib/inventory/bomUtils.js +369 -0
  161. package/lib/inventory/cacheCommands.js +182 -0
  162. package/lib/inventory/cacheDir.js +104 -0
  163. package/lib/inventory/cbomutils.js +590 -0
  164. package/lib/inventory/cdxrs.js +434 -0
  165. package/lib/inventory/ciParsers/azurePipelines.js +295 -0
  166. package/lib/inventory/ciParsers/circleCi.js +286 -0
  167. package/lib/inventory/ciParsers/common.js +24 -0
  168. package/lib/inventory/ciParsers/githubActions.js +2434 -0
  169. package/lib/inventory/ciParsers/gitlabCi.js +213 -0
  170. package/lib/inventory/ciParsers/jenkins.js +180 -0
  171. package/lib/inventory/citations.js +234 -0
  172. package/lib/inventory/communityAiConfigParser.js +756 -0
  173. package/lib/inventory/containerRisk.js +204 -0
  174. package/lib/inventory/cryptoAlgorithmFamily.js +258 -0
  175. package/lib/inventory/deps.js +807 -0
  176. package/lib/inventory/depsUtils.js +588 -0
  177. package/lib/inventory/display.js +2128 -0
  178. package/lib/inventory/dosai.js +601 -0
  179. package/lib/inventory/dosaiParsers.js +154 -0
  180. package/lib/inventory/dynamic.js +145 -0
  181. package/lib/inventory/envcontext.js +1793 -0
  182. package/lib/inventory/evidenceUtils.js +774 -0
  183. package/lib/inventory/fetchBatch.js +779 -0
  184. package/lib/inventory/fetchRate.js +255 -0
  185. package/lib/inventory/forgeEnricher.js +300 -0
  186. package/lib/inventory/formulationParsers.js +422 -0
  187. package/lib/inventory/gtfobins.js +339 -0
  188. package/lib/inventory/hbom.js +719 -0
  189. package/lib/inventory/hbomAnalysis.js +310 -0
  190. package/lib/inventory/hbomLoader.js +35 -0
  191. package/lib/inventory/hostTopology.js +835 -0
  192. package/lib/inventory/inventoryStats.js +100 -0
  193. package/lib/inventory/jsonLike.js +121 -0
  194. package/lib/inventory/licenseEnhancer.js +918 -0
  195. package/lib/inventory/lolbas.js +285 -0
  196. package/lib/inventory/mcp.js +253 -0
  197. package/lib/inventory/mcpConfigParser.js +683 -0
  198. package/lib/inventory/mcpDiscovery.js +112 -0
  199. package/lib/inventory/mcpPinning.js +209 -0
  200. package/lib/inventory/osPackageResolver.js +493 -0
  201. package/lib/inventory/osinfo.js +383 -0
  202. package/lib/inventory/osqueryTransform.js +274 -0
  203. package/lib/inventory/plugins.js +466 -0
  204. package/lib/inventory/protobom.js +231 -0
  205. package/lib/inventory/protobomLoader.js +43 -0
  206. package/lib/inventory/provenanceUtils.js +224 -0
  207. package/lib/inventory/purl.js +749 -0
  208. package/lib/inventory/rustFormulationParser.js +339 -0
  209. package/lib/inventory/sbomDocument.js +340 -0
  210. package/lib/inventory/source.js +1488 -0
  211. package/lib/inventory/spdx.js +361 -0
  212. package/lib/inventory/spdxExpression.js +512 -0
  213. package/lib/inventory/spdxUtils.js +107 -0
  214. package/lib/inventory/table.js +267 -0
  215. package/lib/inventory/traceRunner.js +439 -0
  216. package/lib/inventory/unicodeScan.js +147 -0
  217. package/lib/managers/binary.js +3459 -0
  218. package/lib/managers/containerutils.js +125 -0
  219. package/lib/managers/docker.js +2145 -0
  220. package/lib/managers/dockerConnection.js +162 -0
  221. package/lib/managers/oci.js +704 -0
  222. package/lib/managers/piptree.js +267 -0
  223. package/lib/parsers/cmakeCache.js +199 -0
  224. package/lib/parsers/gguf.js +492 -0
  225. package/lib/parsers/gitAiNotes.js +233 -0
  226. package/lib/parsers/gitmodules.js +239 -0
  227. package/lib/parsers/htmlExtract.js +610 -0
  228. package/lib/parsers/huggingfaceManifest.js +551 -0
  229. package/lib/parsers/huggingfaceUtils.js +506 -0
  230. package/lib/parsers/iri.js +618 -0
  231. package/lib/parsers/npmrc.js +99 -0
  232. package/lib/parsers/ollama.js +101 -0
  233. package/lib/parsers/xml.js +841 -0
  234. package/lib/server/openapi.yaml +433 -0
  235. package/lib/server/server.js +616 -0
  236. package/lib/stages/postgen/annotator.js +977 -0
  237. package/lib/stages/postgen/auditBom.js +468 -0
  238. package/lib/stages/postgen/postgen.js +1239 -0
  239. package/lib/stages/postgen/ruleEngine.js +731 -0
  240. package/lib/stages/postgen/sortBom.js +195 -0
  241. package/lib/stages/postgen/spdxConverter.js +796 -0
  242. package/lib/stages/postgen/specVersionCompat.js +703 -0
  243. package/lib/stages/pregen/envAudit.js +388 -0
  244. package/lib/stages/pregen/pregen.js +637 -0
  245. package/lib/third-party/README.md +9 -0
  246. package/lib/third-party/arborist/CHANGELOG.md +1109 -0
  247. package/lib/third-party/arborist/LICENSE.md +20 -0
  248. package/lib/third-party/arborist/README.md +315 -0
  249. package/lib/third-party/arborist/lib/arborist/index.js +258 -0
  250. package/lib/third-party/arborist/lib/arborist/load-actual.js +605 -0
  251. package/lib/third-party/arborist/lib/arborist/load-virtual.js +300 -0
  252. package/lib/third-party/arborist/lib/bin-links.js +120 -0
  253. package/lib/third-party/arborist/lib/calc-dep-flags.js +130 -0
  254. package/lib/third-party/arborist/lib/case-insensitive-map.js +51 -0
  255. package/lib/third-party/arborist/lib/consistent-resolve.js +42 -0
  256. package/lib/third-party/arborist/lib/debug.js +50 -0
  257. package/lib/third-party/arborist/lib/dep-valid.js +190 -0
  258. package/lib/third-party/arborist/lib/edge.js +417 -0
  259. package/lib/third-party/arborist/lib/from-path.js +36 -0
  260. package/lib/third-party/arborist/lib/gather-dep-set.js +43 -0
  261. package/lib/third-party/arborist/lib/index.js +22 -0
  262. package/lib/third-party/arborist/lib/inventory.js +138 -0
  263. package/lib/third-party/arborist/lib/link.js +169 -0
  264. package/lib/third-party/arborist/lib/node.js +1673 -0
  265. package/lib/third-party/arborist/lib/npm-extension.js +45 -0
  266. package/lib/third-party/arborist/lib/override-resolves.js +11 -0
  267. package/lib/third-party/arborist/lib/override-set.js +319 -0
  268. package/lib/third-party/arborist/lib/package-extensions.js +289 -0
  269. package/lib/third-party/arborist/lib/printable.js +210 -0
  270. package/lib/third-party/arborist/lib/proc-log.js +30 -0
  271. package/lib/third-party/arborist/lib/realpath.js +100 -0
  272. package/lib/third-party/arborist/lib/relpath.js +4 -0
  273. package/lib/third-party/arborist/lib/shrinkwrap.js +1291 -0
  274. package/lib/third-party/arborist/lib/spec-from-lock.js +34 -0
  275. package/lib/third-party/arborist/lib/tree-check.js +165 -0
  276. package/lib/third-party/arborist/lib/validate-npm-package-name.js +107 -0
  277. package/lib/third-party/arborist/lib/version-from-tgz.js +51 -0
  278. package/lib/third-party/arborist/lib/yarn-lock.js +397 -0
  279. package/lib/validator/bomValidator.js +985 -0
  280. package/lib/validator/complianceEngine.js +241 -0
  281. package/lib/validator/complianceRules.js +1680 -0
  282. package/lib/validator/generated/runtime.mjs +17 -0
  283. package/lib/validator/generated/validate-1.6.mjs +21258 -0
  284. package/lib/validator/generated/validate-1.7.mjs +24803 -0
  285. package/lib/validator/generated/validate-2.0.mjs +22931 -0
  286. package/lib/validator/index.js +246 -0
  287. package/lib/validator/reporters/annotations.js +142 -0
  288. package/lib/validator/reporters/console.js +160 -0
  289. package/lib/validator/reporters/index.js +41 -0
  290. package/lib/validator/reporters/json.js +37 -0
  291. package/lib/validator/reporters/sarif.js +184 -0
  292. package/package.json +209 -26
  293. package/types/bin/audit.d.ts +3 -0
  294. package/types/bin/audit.d.ts.map +1 -0
  295. package/types/bin/cdxgen.d.ts +3 -0
  296. package/types/bin/cdxgen.d.ts.map +1 -0
  297. package/types/bin/convert.d.ts +3 -0
  298. package/types/bin/convert.d.ts.map +1 -0
  299. package/types/bin/evinse.d.ts +3 -0
  300. package/types/bin/evinse.d.ts.map +1 -0
  301. package/types/bin/hbom.d.ts +3 -0
  302. package/types/bin/hbom.d.ts.map +1 -0
  303. package/types/bin/repl.d.ts +3 -0
  304. package/types/bin/repl.d.ts.map +1 -0
  305. package/types/bin/sign.d.ts +3 -0
  306. package/types/bin/sign.d.ts.map +1 -0
  307. package/types/bin/tracebom.d.ts +3 -0
  308. package/types/bin/tracebom.d.ts.map +1 -0
  309. package/types/bin/validate.d.ts +14 -0
  310. package/types/bin/validate.d.ts.map +1 -0
  311. package/types/bin/verify.d.ts +3 -0
  312. package/types/bin/verify.d.ts.map +1 -0
  313. package/types/lib/audit/index.d.ts +153 -0
  314. package/types/lib/audit/index.d.ts.map +1 -0
  315. package/types/lib/audit/progress.d.ts +31 -0
  316. package/types/lib/audit/progress.d.ts.map +1 -0
  317. package/types/lib/audit/reporters.d.ts +62 -0
  318. package/types/lib/audit/reporters.d.ts.map +1 -0
  319. package/types/lib/audit/scoring.d.ts +36 -0
  320. package/types/lib/audit/scoring.d.ts.map +1 -0
  321. package/types/lib/audit/targets.d.ts +77 -0
  322. package/types/lib/audit/targets.d.ts.map +1 -0
  323. package/types/lib/cli/bomAssembly.d.ts +329 -0
  324. package/types/lib/cli/bomAssembly.d.ts.map +1 -0
  325. package/types/lib/cli/cliOptions.d.ts +156 -0
  326. package/types/lib/cli/cliOptions.d.ts.map +1 -0
  327. package/types/lib/cli/index.d.ts +107 -0
  328. package/types/lib/cli/index.d.ts.map +1 -0
  329. package/types/lib/cli/jsBom.d.ts +94 -0
  330. package/types/lib/cli/jsBom.d.ts.map +1 -0
  331. package/types/lib/cli/jvmBom.d.ts +54 -0
  332. package/types/lib/cli/jvmBom.d.ts.map +1 -0
  333. package/types/lib/cli/managedBom.d.ts +105 -0
  334. package/types/lib/cli/managedBom.d.ts.map +1 -0
  335. package/types/lib/cli/nativeBom.d.ts +143 -0
  336. package/types/lib/cli/nativeBom.d.ts.map +1 -0
  337. package/types/lib/core/activity.d.ts +178 -0
  338. package/types/lib/core/activity.d.ts.map +1 -0
  339. package/types/lib/core/env.d.ts +192 -0
  340. package/types/lib/core/env.d.ts.map +1 -0
  341. package/types/lib/core/fs.d.ts +158 -0
  342. package/types/lib/core/fs.d.ts.map +1 -0
  343. package/types/lib/core/httpClient.d.ts +149 -0
  344. package/types/lib/core/httpClient.d.ts.map +1 -0
  345. package/types/lib/core/logger.d.ts +50 -0
  346. package/types/lib/core/logger.d.ts.map +1 -0
  347. package/types/lib/core/parallel.d.ts +95 -0
  348. package/types/lib/core/parallel.d.ts.map +1 -0
  349. package/types/lib/core/paths.d.ts +36 -0
  350. package/types/lib/core/paths.d.ts.map +1 -0
  351. package/types/lib/core/projectConfig.d.ts +23 -0
  352. package/types/lib/core/projectConfig.d.ts.map +1 -0
  353. package/types/lib/core/propertySanitizer.d.ts +23 -0
  354. package/types/lib/core/propertySanitizer.d.ts.map +1 -0
  355. package/types/lib/core/spdx.d.ts +5 -0
  356. package/types/lib/core/spdx.d.ts.map +1 -0
  357. package/types/lib/core/state.d.ts +20 -0
  358. package/types/lib/core/state.d.ts.map +1 -0
  359. package/types/lib/core/text.d.ts +78 -0
  360. package/types/lib/core/text.d.ts.map +1 -0
  361. package/types/lib/core/ui.d.ts +87 -0
  362. package/types/lib/core/ui.d.ts.map +1 -0
  363. package/types/lib/core/urls.d.ts +43 -0
  364. package/types/lib/core/urls.d.ts.map +1 -0
  365. package/types/lib/ecosystems/asarutils.d.ts +71 -0
  366. package/types/lib/ecosystems/asarutils.d.ts.map +1 -0
  367. package/types/lib/ecosystems/bunutils.d.ts +38 -0
  368. package/types/lib/ecosystems/bunutils.d.ts.map +1 -0
  369. package/types/lib/ecosystems/caxa.d.ts +8 -0
  370. package/types/lib/ecosystems/caxa.d.ts.map +1 -0
  371. package/types/lib/ecosystems/chromextutils.d.ts +97 -0
  372. package/types/lib/ecosystems/chromextutils.d.ts.map +1 -0
  373. package/types/lib/ecosystems/cmakeResolver.d.ts +176 -0
  374. package/types/lib/ecosystems/cmakeResolver.d.ts.map +1 -0
  375. package/types/lib/ecosystems/cppEvidence.d.ts +35 -0
  376. package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -0
  377. package/types/lib/ecosystems/denoutils.d.ts +76 -0
  378. package/types/lib/ecosystems/denoutils.d.ts.map +1 -0
  379. package/types/lib/ecosystems/dotnetutils.d.ts +45 -0
  380. package/types/lib/ecosystems/dotnetutils.d.ts.map +1 -0
  381. package/types/lib/ecosystems/ecosystems.d.ts +279 -0
  382. package/types/lib/ecosystems/ecosystems.d.ts.map +1 -0
  383. package/types/lib/ecosystems/golem.d.ts +60 -0
  384. package/types/lib/ecosystems/golem.d.ts.map +1 -0
  385. package/types/lib/ecosystems/gradleutils.d.ts +139 -0
  386. package/types/lib/ecosystems/gradleutils.d.ts.map +1 -0
  387. package/types/lib/ecosystems/jsEvidence.d.ts +17 -0
  388. package/types/lib/ecosystems/jsEvidence.d.ts.map +1 -0
  389. package/types/lib/ecosystems/npmutils.d.ts +183 -0
  390. package/types/lib/ecosystems/npmutils.d.ts.map +1 -0
  391. package/types/lib/ecosystems/parsers-bazel.d.ts +36 -0
  392. package/types/lib/ecosystems/parsers-bazel.d.ts.map +1 -0
  393. package/types/lib/ecosystems/parsers-dotnet.d.ts +116 -0
  394. package/types/lib/ecosystems/parsers-dotnet.d.ts.map +1 -0
  395. package/types/lib/ecosystems/parsers-gleam.d.ts +33 -0
  396. package/types/lib/ecosystems/parsers-gleam.d.ts.map +1 -0
  397. package/types/lib/ecosystems/parsers-go.d.ts +92 -0
  398. package/types/lib/ecosystems/parsers-go.d.ts.map +1 -0
  399. package/types/lib/ecosystems/parsers-js.d.ts +242 -0
  400. package/types/lib/ecosystems/parsers-js.d.ts.map +1 -0
  401. package/types/lib/ecosystems/parsers-jvm.d.ts +100 -0
  402. package/types/lib/ecosystems/parsers-jvm.d.ts.map +1 -0
  403. package/types/lib/ecosystems/parsers-misc.d.ts +450 -0
  404. package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -0
  405. package/types/lib/ecosystems/parsers-python.d.ts +145 -0
  406. package/types/lib/ecosystems/parsers-python.d.ts.map +1 -0
  407. package/types/lib/ecosystems/parsers-rust.d.ts +56 -0
  408. package/types/lib/ecosystems/parsers-rust.d.ts.map +1 -0
  409. package/types/lib/ecosystems/parsers-zig.d.ts +83 -0
  410. package/types/lib/ecosystems/parsers-zig.d.ts.map +1 -0
  411. package/types/lib/ecosystems/pep770.d.ts +38 -0
  412. package/types/lib/ecosystems/pep770.d.ts.map +1 -0
  413. package/types/lib/ecosystems/pylockutils.d.ts +68 -0
  414. package/types/lib/ecosystems/pylockutils.d.ts.map +1 -0
  415. package/types/lib/ecosystems/pythonutils.d.ts +70 -0
  416. package/types/lib/ecosystems/pythonutils.d.ts.map +1 -0
  417. package/types/lib/ecosystems/registryProvenance.d.ts +26 -0
  418. package/types/lib/ecosystems/registryProvenance.d.ts.map +1 -0
  419. package/types/lib/ecosystems/remote/huggingface.d.ts +31 -0
  420. package/types/lib/ecosystems/remote/huggingface.d.ts.map +1 -0
  421. package/types/lib/ecosystems/rubyutils.d.ts +182 -0
  422. package/types/lib/ecosystems/rubyutils.d.ts.map +1 -0
  423. package/types/lib/ecosystems/rusi.d.ts +40 -0
  424. package/types/lib/ecosystems/rusi.d.ts.map +1 -0
  425. package/types/lib/ecosystems/sbtutils.d.ts +179 -0
  426. package/types/lib/ecosystems/sbtutils.d.ts.map +1 -0
  427. package/types/lib/ecosystems/tea.d.ts +180 -0
  428. package/types/lib/ecosystems/tea.d.ts.map +1 -0
  429. package/types/lib/ecosystems/utils.d.ts +41 -0
  430. package/types/lib/ecosystems/utils.d.ts.map +1 -0
  431. package/types/lib/ecosystems/zigResolver.d.ts +70 -0
  432. package/types/lib/ecosystems/zigResolver.d.ts.map +1 -0
  433. package/types/lib/evinser/db.d.ts +17 -0
  434. package/types/lib/evinser/db.d.ts.map +1 -0
  435. package/types/lib/evinser/evinser.d.ts +354 -0
  436. package/types/lib/evinser/evinser.d.ts.map +1 -0
  437. package/types/lib/evinser/scalasem.d.ts +15 -0
  438. package/types/lib/evinser/scalasem.d.ts.map +1 -0
  439. package/types/lib/evinser/swiftsem.d.ts +103 -0
  440. package/types/lib/evinser/swiftsem.d.ts.map +1 -0
  441. package/types/lib/helpers/annotationFormatter.d.ts +23 -0
  442. package/types/lib/helpers/annotationFormatter.d.ts.map +1 -0
  443. package/types/lib/helpers/bomSigner.d.ts +28 -0
  444. package/types/lib/helpers/bomSigner.d.ts.map +1 -0
  445. package/types/lib/helpers/exportUtils.d.ts +52 -0
  446. package/types/lib/helpers/exportUtils.d.ts.map +1 -0
  447. package/types/lib/helpers/remote/dependency-track.d.ts +23 -0
  448. package/types/lib/helpers/remote/dependency-track.d.ts.map +1 -0
  449. package/types/lib/helpers/versutils.d.ts +8 -0
  450. package/types/lib/helpers/versutils.d.ts.map +1 -0
  451. package/types/lib/helpers/vsixutils.d.ts +130 -0
  452. package/types/lib/helpers/vsixutils.d.ts.map +1 -0
  453. package/types/lib/inventory/agentFormulationParser.d.ts +21 -0
  454. package/types/lib/inventory/agentFormulationParser.d.ts.map +1 -0
  455. package/types/lib/inventory/aiCollector.d.ts +61 -0
  456. package/types/lib/inventory/aiCollector.d.ts.map +1 -0
  457. package/types/lib/inventory/aiInventory.d.ts +103 -0
  458. package/types/lib/inventory/aiInventory.d.ts.map +1 -0
  459. package/types/lib/inventory/aiModelVariants.d.ts +31 -0
  460. package/types/lib/inventory/aiModelVariants.d.ts.map +1 -0
  461. package/types/lib/inventory/aiOversightCollector.d.ts +28 -0
  462. package/types/lib/inventory/aiOversightCollector.d.ts.map +1 -0
  463. package/types/lib/inventory/aiProvenanceCollector.d.ts +13 -0
  464. package/types/lib/inventory/aiProvenanceCollector.d.ts.map +1 -0
  465. package/types/lib/inventory/analyzer.d.ts +157 -0
  466. package/types/lib/inventory/analyzer.d.ts.map +1 -0
  467. package/types/lib/inventory/analyzerScope.d.ts +106 -0
  468. package/types/lib/inventory/analyzerScope.d.ts.map +1 -0
  469. package/types/lib/inventory/astWorker.d.ts +9 -0
  470. package/types/lib/inventory/astWorker.d.ts.map +1 -0
  471. package/types/lib/inventory/atomUtils.d.ts +159 -0
  472. package/types/lib/inventory/atomUtils.d.ts.map +1 -0
  473. package/types/lib/inventory/auditCategories.d.ts +80 -0
  474. package/types/lib/inventory/auditCategories.d.ts.map +1 -0
  475. package/types/lib/inventory/bomUtils.d.ts +145 -0
  476. package/types/lib/inventory/bomUtils.d.ts.map +1 -0
  477. package/types/lib/inventory/cacheCommands.d.ts +28 -0
  478. package/types/lib/inventory/cacheCommands.d.ts.map +1 -0
  479. package/types/lib/inventory/cacheDir.d.ts +55 -0
  480. package/types/lib/inventory/cacheDir.d.ts.map +1 -0
  481. package/types/lib/inventory/cbomutils.d.ts +37 -0
  482. package/types/lib/inventory/cbomutils.d.ts.map +1 -0
  483. package/types/lib/inventory/cdxrs.d.ts +90 -0
  484. package/types/lib/inventory/cdxrs.d.ts.map +1 -0
  485. package/types/lib/inventory/ciParsers/azurePipelines.d.ts +27 -0
  486. package/types/lib/inventory/ciParsers/azurePipelines.d.ts.map +1 -0
  487. package/types/lib/inventory/ciParsers/circleCi.d.ts +27 -0
  488. package/types/lib/inventory/ciParsers/circleCi.d.ts.map +1 -0
  489. package/types/lib/inventory/ciParsers/common.d.ts +11 -0
  490. package/types/lib/inventory/ciParsers/common.d.ts.map +1 -0
  491. package/types/lib/inventory/ciParsers/githubActions.d.ts +38 -0
  492. package/types/lib/inventory/ciParsers/githubActions.d.ts.map +1 -0
  493. package/types/lib/inventory/ciParsers/gitlabCi.d.ts +26 -0
  494. package/types/lib/inventory/ciParsers/gitlabCi.d.ts.map +1 -0
  495. package/types/lib/inventory/ciParsers/jenkins.d.ts +26 -0
  496. package/types/lib/inventory/ciParsers/jenkins.d.ts.map +1 -0
  497. package/types/lib/inventory/citations.d.ts +90 -0
  498. package/types/lib/inventory/citations.d.ts.map +1 -0
  499. package/types/lib/inventory/communityAiConfigParser.d.ts +14 -0
  500. package/types/lib/inventory/communityAiConfigParser.d.ts.map +1 -0
  501. package/types/lib/inventory/containerRisk.d.ts +20 -0
  502. package/types/lib/inventory/containerRisk.d.ts.map +1 -0
  503. package/types/lib/inventory/cryptoAlgorithmFamily.d.ts +37 -0
  504. package/types/lib/inventory/cryptoAlgorithmFamily.d.ts.map +1 -0
  505. package/types/lib/inventory/deps.d.ts +140 -0
  506. package/types/lib/inventory/deps.d.ts.map +1 -0
  507. package/types/lib/inventory/depsUtils.d.ts +74 -0
  508. package/types/lib/inventory/depsUtils.d.ts.map +1 -0
  509. package/types/lib/inventory/display.d.ts +227 -0
  510. package/types/lib/inventory/display.d.ts.map +1 -0
  511. package/types/lib/inventory/dosai.d.ts +130 -0
  512. package/types/lib/inventory/dosai.d.ts.map +1 -0
  513. package/types/lib/inventory/dosaiParsers.d.ts +59 -0
  514. package/types/lib/inventory/dosaiParsers.d.ts.map +1 -0
  515. package/types/lib/inventory/dynamic.d.ts +25 -0
  516. package/types/lib/inventory/dynamic.d.ts.map +1 -0
  517. package/types/lib/inventory/envcontext.d.ts +377 -0
  518. package/types/lib/inventory/envcontext.d.ts.map +1 -0
  519. package/types/lib/inventory/evidenceUtils.d.ts +74 -0
  520. package/types/lib/inventory/evidenceUtils.d.ts.map +1 -0
  521. package/types/lib/inventory/fetchBatch.d.ts +127 -0
  522. package/types/lib/inventory/fetchBatch.d.ts.map +1 -0
  523. package/types/lib/inventory/fetchRate.d.ts +118 -0
  524. package/types/lib/inventory/fetchRate.d.ts.map +1 -0
  525. package/types/lib/inventory/forgeEnricher.d.ts +31 -0
  526. package/types/lib/inventory/forgeEnricher.d.ts.map +1 -0
  527. package/types/lib/inventory/formulationParsers.d.ts +50 -0
  528. package/types/lib/inventory/formulationParsers.d.ts.map +1 -0
  529. package/types/lib/inventory/gtfobins.d.ts +27 -0
  530. package/types/lib/inventory/gtfobins.d.ts.map +1 -0
  531. package/types/lib/inventory/hbom.d.ts +58 -0
  532. package/types/lib/inventory/hbom.d.ts.map +1 -0
  533. package/types/lib/inventory/hbomAnalysis.d.ts +56 -0
  534. package/types/lib/inventory/hbomAnalysis.d.ts.map +1 -0
  535. package/types/lib/inventory/hbomLoader.d.ts +7 -0
  536. package/types/lib/inventory/hbomLoader.d.ts.map +1 -0
  537. package/types/lib/inventory/hostTopology.d.ts +47 -0
  538. package/types/lib/inventory/hostTopology.d.ts.map +1 -0
  539. package/types/lib/inventory/inventoryStats.d.ts +42 -0
  540. package/types/lib/inventory/inventoryStats.d.ts.map +1 -0
  541. package/types/lib/inventory/jsonLike.d.ts +23 -0
  542. package/types/lib/inventory/jsonLike.d.ts.map +1 -0
  543. package/types/lib/inventory/licenseEnhancer.d.ts +70 -0
  544. package/types/lib/inventory/licenseEnhancer.d.ts.map +1 -0
  545. package/types/lib/inventory/lolbas.d.ts +16 -0
  546. package/types/lib/inventory/lolbas.d.ts.map +1 -0
  547. package/types/lib/inventory/mcp.d.ts +29 -0
  548. package/types/lib/inventory/mcp.d.ts.map +1 -0
  549. package/types/lib/inventory/mcpConfigParser.d.ts +20 -0
  550. package/types/lib/inventory/mcpConfigParser.d.ts.map +1 -0
  551. package/types/lib/inventory/mcpDiscovery.d.ts +33 -0
  552. package/types/lib/inventory/mcpDiscovery.d.ts.map +1 -0
  553. package/types/lib/inventory/mcpPinning.d.ts +11 -0
  554. package/types/lib/inventory/mcpPinning.d.ts.map +1 -0
  555. package/types/lib/inventory/osPackageResolver.d.ts +49 -0
  556. package/types/lib/inventory/osPackageResolver.d.ts.map +1 -0
  557. package/types/lib/inventory/osinfo.d.ts +201 -0
  558. package/types/lib/inventory/osinfo.d.ts.map +1 -0
  559. package/types/lib/inventory/osqueryTransform.d.ts +84 -0
  560. package/types/lib/inventory/osqueryTransform.d.ts.map +1 -0
  561. package/types/lib/inventory/plugins.d.ts +58 -0
  562. package/types/lib/inventory/plugins.d.ts.map +1 -0
  563. package/types/lib/inventory/protobom.d.ts +71 -0
  564. package/types/lib/inventory/protobom.d.ts.map +1 -0
  565. package/types/lib/inventory/protobomLoader.d.ts +17 -0
  566. package/types/lib/inventory/protobomLoader.d.ts.map +1 -0
  567. package/types/lib/inventory/provenanceUtils.d.ts +98 -0
  568. package/types/lib/inventory/provenanceUtils.d.ts.map +1 -0
  569. package/types/lib/inventory/purl.d.ts +313 -0
  570. package/types/lib/inventory/purl.d.ts.map +1 -0
  571. package/types/lib/inventory/rustFormulationParser.d.ts +17 -0
  572. package/types/lib/inventory/rustFormulationParser.d.ts.map +1 -0
  573. package/types/lib/inventory/sbomDocument.d.ts +59 -0
  574. package/types/lib/inventory/sbomDocument.d.ts.map +1 -0
  575. package/types/lib/inventory/source.d.ts +163 -0
  576. package/types/lib/inventory/source.d.ts.map +1 -0
  577. package/types/lib/inventory/spdx.d.ts +66 -0
  578. package/types/lib/inventory/spdx.d.ts.map +1 -0
  579. package/types/lib/inventory/spdxExpression.d.ts +58 -0
  580. package/types/lib/inventory/spdxExpression.d.ts.map +1 -0
  581. package/types/lib/inventory/spdxUtils.d.ts +12 -0
  582. package/types/lib/inventory/spdxUtils.d.ts.map +1 -0
  583. package/types/lib/inventory/table.d.ts +22 -0
  584. package/types/lib/inventory/table.d.ts.map +1 -0
  585. package/types/lib/inventory/traceRunner.d.ts +80 -0
  586. package/types/lib/inventory/traceRunner.d.ts.map +1 -0
  587. package/types/lib/inventory/unicodeScan.d.ts +46 -0
  588. package/types/lib/inventory/unicodeScan.d.ts.map +1 -0
  589. package/types/lib/managers/binary.d.ts +147 -0
  590. package/types/lib/managers/binary.d.ts.map +1 -0
  591. package/types/lib/managers/containerutils.d.ts +30 -0
  592. package/types/lib/managers/containerutils.d.ts.map +1 -0
  593. package/types/lib/managers/docker.d.ts +157 -0
  594. package/types/lib/managers/docker.d.ts.map +1 -0
  595. package/types/lib/managers/dockerConnection.d.ts +42 -0
  596. package/types/lib/managers/dockerConnection.d.ts.map +1 -0
  597. package/types/lib/managers/oci.d.ts +21 -0
  598. package/types/lib/managers/oci.d.ts.map +1 -0
  599. package/types/lib/managers/piptree.d.ts +13 -0
  600. package/types/lib/managers/piptree.d.ts.map +1 -0
  601. package/types/lib/parsers/cmakeCache.d.ts +70 -0
  602. package/types/lib/parsers/cmakeCache.d.ts.map +1 -0
  603. package/types/lib/parsers/gguf.d.ts +39 -0
  604. package/types/lib/parsers/gguf.d.ts.map +1 -0
  605. package/types/lib/parsers/gitAiNotes.d.ts +15 -0
  606. package/types/lib/parsers/gitAiNotes.d.ts.map +1 -0
  607. package/types/lib/parsers/gitmodules.d.ts +88 -0
  608. package/types/lib/parsers/gitmodules.d.ts.map +1 -0
  609. package/types/lib/parsers/htmlExtract.d.ts +34 -0
  610. package/types/lib/parsers/htmlExtract.d.ts.map +1 -0
  611. package/types/lib/parsers/huggingfaceManifest.d.ts +153 -0
  612. package/types/lib/parsers/huggingfaceManifest.d.ts.map +1 -0
  613. package/types/lib/parsers/huggingfaceUtils.d.ts +155 -0
  614. package/types/lib/parsers/huggingfaceUtils.d.ts.map +1 -0
  615. package/types/lib/parsers/iri.d.ts +68 -0
  616. package/types/lib/parsers/iri.d.ts.map +1 -0
  617. package/types/lib/parsers/npmrc.d.ts +33 -0
  618. package/types/lib/parsers/npmrc.d.ts.map +1 -0
  619. package/types/lib/parsers/ollama.d.ts +22 -0
  620. package/types/lib/parsers/ollama.d.ts.map +1 -0
  621. package/types/lib/parsers/xml.d.ts +47 -0
  622. package/types/lib/parsers/xml.d.ts.map +1 -0
  623. package/types/lib/server/server.d.ts +51 -0
  624. package/types/lib/server/server.d.ts.map +1 -0
  625. package/types/lib/stages/postgen/annotator.d.ts +36 -0
  626. package/types/lib/stages/postgen/annotator.d.ts.map +1 -0
  627. package/types/lib/stages/postgen/auditBom.d.ts +92 -0
  628. package/types/lib/stages/postgen/auditBom.d.ts.map +1 -0
  629. package/types/lib/stages/postgen/postgen.d.ts +59 -0
  630. package/types/lib/stages/postgen/postgen.d.ts.map +1 -0
  631. package/types/lib/stages/postgen/ruleEngine.d.ts +18 -0
  632. package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -0
  633. package/types/lib/stages/postgen/sortBom.d.ts +34 -0
  634. package/types/lib/stages/postgen/sortBom.d.ts.map +1 -0
  635. package/types/lib/stages/postgen/spdxConverter.d.ts +11 -0
  636. package/types/lib/stages/postgen/spdxConverter.d.ts.map +1 -0
  637. package/types/lib/stages/postgen/specVersionCompat.d.ts +71 -0
  638. package/types/lib/stages/postgen/specVersionCompat.d.ts.map +1 -0
  639. package/types/lib/stages/pregen/envAudit.d.ts +14 -0
  640. package/types/lib/stages/pregen/envAudit.d.ts.map +1 -0
  641. package/types/lib/stages/pregen/pregen.d.ts +59 -0
  642. package/types/lib/stages/pregen/pregen.d.ts.map +1 -0
  643. package/types/lib/third-party/arborist/lib/arborist/index.d.ts +47 -0
  644. package/types/lib/third-party/arborist/lib/arborist/index.d.ts.map +1 -0
  645. package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts +4 -0
  646. package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts.map +1 -0
  647. package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts +4 -0
  648. package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts.map +1 -0
  649. package/types/lib/third-party/arborist/lib/bin-links.d.ts +18 -0
  650. package/types/lib/third-party/arborist/lib/bin-links.d.ts.map +1 -0
  651. package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts +3 -0
  652. package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts.map +1 -0
  653. package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts +9 -0
  654. package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts.map +1 -0
  655. package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts +3 -0
  656. package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts.map +1 -0
  657. package/types/lib/third-party/arborist/lib/debug.d.ts +3 -0
  658. package/types/lib/third-party/arborist/lib/debug.d.ts.map +1 -0
  659. package/types/lib/third-party/arborist/lib/dep-valid.d.ts +3 -0
  660. package/types/lib/third-party/arborist/lib/dep-valid.d.ts.map +1 -0
  661. package/types/lib/third-party/arborist/lib/edge.d.ts +46 -0
  662. package/types/lib/third-party/arborist/lib/edge.d.ts.map +1 -0
  663. package/types/lib/third-party/arborist/lib/from-path.d.ts +3 -0
  664. package/types/lib/third-party/arborist/lib/from-path.d.ts.map +1 -0
  665. package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts +3 -0
  666. package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts.map +1 -0
  667. package/types/lib/third-party/arborist/lib/index.d.ts +3 -0
  668. package/types/lib/third-party/arborist/lib/index.d.ts.map +1 -0
  669. package/types/lib/third-party/arborist/lib/inventory.d.ts +14 -0
  670. package/types/lib/third-party/arborist/lib/inventory.d.ts.map +1 -0
  671. package/types/lib/third-party/arborist/lib/link.d.ts +18 -0
  672. package/types/lib/third-party/arborist/lib/link.d.ts.map +1 -0
  673. package/types/lib/third-party/arborist/lib/node.d.ts +112 -0
  674. package/types/lib/third-party/arborist/lib/node.d.ts.map +1 -0
  675. package/types/lib/third-party/arborist/lib/npm-extension.d.ts +18 -0
  676. package/types/lib/third-party/arborist/lib/npm-extension.d.ts.map +1 -0
  677. package/types/lib/third-party/arborist/lib/override-resolves.d.ts +3 -0
  678. package/types/lib/third-party/arborist/lib/override-resolves.d.ts.map +1 -0
  679. package/types/lib/third-party/arborist/lib/override-set.d.ts +27 -0
  680. package/types/lib/third-party/arborist/lib/override-set.d.ts.map +1 -0
  681. package/types/lib/third-party/arborist/lib/package-extensions.d.ts +36 -0
  682. package/types/lib/third-party/arborist/lib/package-extensions.d.ts.map +1 -0
  683. package/types/lib/third-party/arborist/lib/printable.d.ts +3 -0
  684. package/types/lib/third-party/arborist/lib/printable.d.ts.map +1 -0
  685. package/types/lib/third-party/arborist/lib/proc-log.d.ts +20 -0
  686. package/types/lib/third-party/arborist/lib/proc-log.d.ts.map +1 -0
  687. package/types/lib/third-party/arborist/lib/realpath.d.ts +3 -0
  688. package/types/lib/third-party/arborist/lib/realpath.d.ts.map +1 -0
  689. package/types/lib/third-party/arborist/lib/relpath.d.ts +3 -0
  690. package/types/lib/third-party/arborist/lib/relpath.d.ts.map +1 -0
  691. package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts +54 -0
  692. package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts.map +1 -0
  693. package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts +3 -0
  694. package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts.map +1 -0
  695. package/types/lib/third-party/arborist/lib/tree-check.d.ts +3 -0
  696. package/types/lib/third-party/arborist/lib/tree-check.d.ts.map +1 -0
  697. package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts +13 -0
  698. package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts.map +1 -0
  699. package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts +6 -0
  700. package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts.map +1 -0
  701. package/types/lib/third-party/arborist/lib/yarn-lock.d.ts +35 -0
  702. package/types/lib/third-party/arborist/lib/yarn-lock.d.ts.map +1 -0
  703. package/types/lib/validator/bomValidator.d.ts +40 -0
  704. package/types/lib/validator/bomValidator.d.ts.map +1 -0
  705. package/types/lib/validator/complianceEngine.d.ts +72 -0
  706. package/types/lib/validator/complianceEngine.d.ts.map +1 -0
  707. package/types/lib/validator/complianceRules.d.ts +61 -0
  708. package/types/lib/validator/complianceRules.d.ts.map +1 -0
  709. package/types/lib/validator/index.d.ts +101 -0
  710. package/types/lib/validator/index.d.ts.map +1 -0
  711. package/types/lib/validator/reporters/annotations.d.ts +37 -0
  712. package/types/lib/validator/reporters/annotations.d.ts.map +1 -0
  713. package/types/lib/validator/reporters/console.d.ts +34 -0
  714. package/types/lib/validator/reporters/console.d.ts.map +1 -0
  715. package/types/lib/validator/reporters/index.d.ts +30 -0
  716. package/types/lib/validator/reporters/index.d.ts.map +1 -0
  717. package/types/lib/validator/reporters/json.d.ts +11 -0
  718. package/types/lib/validator/reporters/json.d.ts.map +1 -0
  719. package/types/lib/validator/reporters/sarif.d.ts +22 -0
  720. package/types/lib/validator/reporters/sarif.d.ts.map +1 -0
  721. package/mod.d.ts +0 -7
  722. package/mod.js +0 -22
@@ -0,0 +1,1776 @@
1
+ # OBOM Runtime Security & Compliance Rules
2
+ # Category: obom-runtime
3
+ # Detects host posture, persistence, and runtime indicators from osquery-derived OBOM components
4
+
5
+ - id: OBOM-LNX-001
6
+ name: "Linux systemd unit sourced from temporary path"
7
+ description: "Systemd units loaded from /tmp or /var/tmp can indicate unauthorized persistence."
8
+ severity: high
9
+ category: obom-runtime
10
+ dry-run-support: full
11
+ condition: |
12
+ components[
13
+ $prop($, 'cdx:osquery:category') = 'systemd_units'
14
+ and (
15
+ $contains($nullSafeProp($, 'fragment_path'), '/tmp/')
16
+ or $contains($nullSafeProp($, 'fragment_path'), '/var/tmp/')
17
+ or $contains($nullSafeProp($, 'source_path'), '/tmp/')
18
+ or $contains($nullSafeProp($, 'source_path'), '/var/tmp/')
19
+ )
20
+ ]
21
+ location: |
22
+ {
23
+ "bomRef": $."bom-ref",
24
+ "purl": purl
25
+ }
26
+ message: "Systemd unit '{{ name }}' loads from unit path '{{ $firstNonEmpty($prop($, 'fragment_path'), $prop($, 'source_path'), name) }}' with temporary-backed source '{{ $firstNonEmpty($prop($, 'source_path'), $prop($, 'fragment_path')) }}'"
27
+ mitigation: "Review the unit file and any generated source/drop-in together, move them to trusted system paths, validate ownership/permissions, and re-enable only approved services."
28
+ evidence: |
29
+ {
30
+ "activeState": $prop($, 'active_state'),
31
+ "unitFileState": $prop($, 'unit_file_state'),
32
+ "fragmentPath": $prop($, 'fragment_path'),
33
+ "sourcePath": $prop($, 'source_path')
34
+ }
35
+
36
+ - id: OBOM-LNX-002
37
+ name: "Linux sudoers broad privilege rule"
38
+ description: "Sudoers entries allowing unrestricted command execution increase lateral movement and privilege escalation risk."
39
+ severity: high
40
+ category: obom-runtime
41
+ dry-run-support: full
42
+ condition: |
43
+ components[
44
+ $prop($, 'cdx:osquery:category') = 'sudoers_snapshot'
45
+ and (
46
+ $contains(description, 'NOPASSWD:ALL')
47
+ or $contains(description, 'ALL=(ALL) ALL')
48
+ )
49
+ ]
50
+ location: |
51
+ {
52
+ "bomRef": $."bom-ref",
53
+ "purl": purl
54
+ }
55
+ message: "Sudo policy '{{ name }}' contains broad privilege grant: {{ description }}"
56
+ mitigation: "Replace broad grants with command-specific allowlists and enforce MFA/approval workflows for privileged operations."
57
+ evidence: |
58
+ {
59
+ "sourceFile": $prop($, 'path'),
60
+ "ruleDetails": description
61
+ }
62
+
63
+ - id: OBOM-LNX-003
64
+ name: "Root authorized_keys entry without restrictions"
65
+ description: "Root SSH keys without command/from/no-agent-forwarding restrictions weaken access controls and traceability."
66
+ severity: medium
67
+ category: obom-runtime
68
+ dry-run-support: full
69
+ condition: |
70
+ components[
71
+ $prop($, 'cdx:osquery:category') = 'authorized_keys_snapshot'
72
+ and name = 'root'
73
+ and $hasProp($, 'options')
74
+ and $safeStr($prop($, 'options')) = ''
75
+ ]
76
+ location: |
77
+ {
78
+ "bomRef": $."bom-ref",
79
+ "purl": purl
80
+ }
81
+ message: "Root authorized_keys entry in '{{ $prop($, 'key_file') }}' lacks restrictive key options"
82
+ mitigation: "Apply restrictive key options (from=, command=, no-agent-forwarding, no-port-forwarding) and rotate unmanaged keys."
83
+ evidence: |
84
+ {
85
+ "account": name,
86
+ "algorithm": version,
87
+ "keyFile": $prop($, 'key_file'),
88
+ "options": $prop($, 'options')
89
+ }
90
+
91
+ - id: OBOM-WIN-001
92
+ name: "Windows drive without BitLocker protection"
93
+ description: "Drives with disabled BitLocker protection can violate endpoint encryption requirements and increase data exposure risk."
94
+ severity: high
95
+ category: obom-runtime
96
+ dry-run-support: full
97
+ condition: |
98
+ components[
99
+ $prop($, 'cdx:osquery:category') = 'windows_bitlocker_info'
100
+ and $safeStr($prop($, 'protection_status')) != '1'
101
+ ]
102
+ location: |
103
+ {
104
+ "bomRef": $."bom-ref",
105
+ "purl": purl
106
+ }
107
+ message: "BitLocker protection is not enabled for drive '{{ version }}' (device '{{ name }}')"
108
+ mitigation: "Enable BitLocker with approved encryption policy and escrow recovery keys in managed KMS/AD."
109
+ evidence: |
110
+ {
111
+ "deviceId": name,
112
+ "driveLetter": version,
113
+ "protectionStatus": $prop($, 'protection_status'),
114
+ "encryptionMethod": $prop($, 'encryption_method'),
115
+ "percentageEncrypted": $prop($, 'percentage_encrypted')
116
+ }
117
+
118
+ - id: OBOM-WIN-002
119
+ name: "Windows Security Center unhealthy state"
120
+ description: "Poor Security Center health indicates one or more key endpoint protections are disabled or degraded."
121
+ severity: high
122
+ category: obom-runtime
123
+ dry-run-support: full
124
+ condition: |
125
+ components[
126
+ $prop($, 'cdx:osquery:category') = 'windows_security_center'
127
+ and (
128
+ name = 'Poor'
129
+ or version = 'Poor'
130
+ or description = 'Poor'
131
+ or $prop($, 'internet_settings') = 'Poor'
132
+ or $prop($, 'windows_security_center_service') = 'Poor'
133
+ or $prop($, 'user_account_control') = 'Poor'
134
+ )
135
+ ]
136
+ location: |
137
+ {
138
+ "bomRef": $."bom-ref",
139
+ "purl": purl
140
+ }
141
+ message: "Windows Security Center reports degraded protection posture (antivirus={{ name }}, firewall={{ version }}, autoupdate={{ description }})"
142
+ mitigation: "Restore endpoint protection controls and enforce policy baselines for AV, firewall, updates, and UAC."
143
+ evidence: |
144
+ {
145
+ "antivirus": name,
146
+ "firewall": version,
147
+ "autoupdate": description,
148
+ "internetSettings": $prop($, 'internet_settings'),
149
+ "securityCenterService": $prop($, 'windows_security_center_service'),
150
+ "uac": $prop($, 'user_account_control')
151
+ }
152
+
153
+ - id: OBOM-WIN-003
154
+ name: "Windows Run key references temporary/script execution path"
155
+ description: "Run/RunOnce entries launching from temp or encoded script commands are common persistence techniques."
156
+ severity: critical
157
+ category: obom-runtime
158
+ dry-run-support: full
159
+ condition: |
160
+ components[
161
+ $prop($, 'cdx:osquery:category') = 'windows_run_keys'
162
+ and (
163
+ $contains($lowercase($safeStr(description)), '\\appdata\\local\\temp\\')
164
+ or $contains($lowercase($safeStr(description)), '\\temp\\')
165
+ or $contains($lowercase($safeStr(description)), '-enc ')
166
+ )
167
+ ]
168
+ location: |
169
+ {
170
+ "bomRef": $."bom-ref",
171
+ "purl": purl
172
+ }
173
+ message: "Run key '{{ name }}' launches potentially suspicious command/path: {{ description }}"
174
+ mitigation: "Validate publisher and hash of the referenced executable/script, remove unauthorized entries, and investigate parent change events."
175
+ evidence: |
176
+ {
177
+ "registryPath": name,
178
+ "command": description,
179
+ "registryKey": $prop($, 'key'),
180
+ "mtime": version
181
+ }
182
+
183
+ - id: OBOM-MAC-001
184
+ name: "macOS firewall disabled or stealth mode off"
185
+ description: "ALF misconfiguration can expose endpoints to unsolicited inbound traffic and weakens host hardening baselines."
186
+ severity: high
187
+ category: obom-runtime
188
+ dry-run-support: full
189
+ condition: |
190
+ components[
191
+ $prop($, 'cdx:osquery:category') = 'alf'
192
+ and (
193
+ $safeStr(version) = '0'
194
+ or $safeStr($prop($, 'stealth_enabled')) = '0'
195
+ )
196
+ ]
197
+ location: |
198
+ {
199
+ "bomRef": $."bom-ref",
200
+ "purl": purl
201
+ }
202
+ message: "macOS ALF posture is weak (global_state={{ version }}, stealth_enabled={{ $prop($, 'stealth_enabled') }})"
203
+ mitigation: "Enable ALF and stealth mode via managed profile or MDM baseline."
204
+ evidence: |
205
+ {
206
+ "globalState": version,
207
+ "stealthEnabled": $prop($, 'stealth_enabled'),
208
+ "allowSignedEnabled": $prop($, 'allow_signed_enabled'),
209
+ "loggingEnabled": $prop($, 'logging_enabled')
210
+ }
211
+
212
+ - id: OBOM-MAC-002
213
+ name: "macOS launchd item from user-writable temporary path"
214
+ description: "Launchd agents/daemons sourced from temporary paths are a strong persistence and execution abuse signal."
215
+ severity: critical
216
+ category: obom-runtime
217
+ dry-run-support: full
218
+ condition: |
219
+ components[
220
+ $prop($, 'cdx:osquery:category') = 'launchd_services'
221
+ and (
222
+ $contains($nullSafeProp($, 'path'), '/tmp/')
223
+ or $contains($nullSafeProp($, 'path'), '/var/tmp/')
224
+ or $contains($nullSafeProp($, 'program'), '/tmp/')
225
+ or $contains($nullSafeProp($, 'program'), '/var/tmp/')
226
+ )
227
+ and (
228
+ $safeStr($prop($, 'run_at_load')) = 'true'
229
+ or $safeStr($prop($, 'run_at_load')) = '1'
230
+ or $safeStr($prop($, 'keep_alive')) = 'true'
231
+ or $safeStr($prop($, 'keep_alive')) = '1'
232
+ )
233
+ ]
234
+ location: |
235
+ {
236
+ "bomRef": $."bom-ref",
237
+ "purl": purl
238
+ }
239
+ message: "Launchd item '{{ $firstNonEmpty($prop($, 'label'), name) }}' uses plist '{{ $firstNonEmpty($prop($, 'path'), name) }}' and target '{{ $firstNonEmpty($prop($, 'program'), $prop($, 'program_arguments'), name) }}' from a temporary path with persistence enabled"
240
+ mitigation: "Review the launchd plist and target executable together, remove unauthorized entries, relocate approved binaries to trusted paths, and enforce signed launchd payloads."
241
+ evidence: |
242
+ {
243
+ "label": $prop($, 'label'),
244
+ "plistPath": $prop($, 'path'),
245
+ "targetPath": $firstNonEmpty($prop($, 'program'), $prop($, 'program_arguments')),
246
+ "program": $prop($, 'program'),
247
+ "programArguments": $prop($, 'program_arguments'),
248
+ "runAtLoad": $prop($, 'run_at_load'),
249
+ "keepAlive": $prop($, 'keep_alive')
250
+ }
251
+
252
+ - id: OBOM-MAC-003
253
+ name: "macOS firewall exception for binary in untrusted user path"
254
+ description: "ALF exceptions for binaries in user Downloads/Desktop/tmp increase risk of untrusted inbound network exposure."
255
+ severity: medium
256
+ category: obom-runtime
257
+ dry-run-support: full
258
+ condition: |
259
+ components[
260
+ $prop($, 'cdx:osquery:category') = 'alf_exceptions'
261
+ and (
262
+ $contains($safeStr(name), '/Users/')
263
+ and (
264
+ $contains($safeStr(name), '/Downloads/')
265
+ or $contains($safeStr(name), '/Desktop/')
266
+ or $contains($safeStr(name), '/tmp/')
267
+ )
268
+ )
269
+ ]
270
+ location: |
271
+ {
272
+ "bomRef": $."bom-ref",
273
+ "purl": purl
274
+ }
275
+ message: "ALF exception allows inbound access for risky path '{{ name }}'"
276
+ mitigation: "Restrict exceptions to signed, managed applications in trusted system paths."
277
+ evidence: |
278
+ {
279
+ "path": name,
280
+ "state": version
281
+ }
282
+
283
+ - id: OBOM-LNX-004
284
+ name: "Linux shell history contains suspicious download-execute pattern"
285
+ description: "Shell history with direct download-and-execute commands may indicate malware staging or hands-on-keyboard activity."
286
+ severity: high
287
+ category: obom-runtime
288
+ dry-run-support: full
289
+ condition: |
290
+ components[
291
+ $prop($, 'cdx:osquery:category') = 'shell_history_snapshot'
292
+ and (
293
+ ($contains($lowercase(description), 'curl ') and $contains($lowercase(description), '| sh'))
294
+ or ($contains($lowercase(description), 'wget ') and $contains($lowercase(description), '| bash'))
295
+ or $contains($lowercase(description), 'base64 -d')
296
+ or $contains($lowercase(description), 'nc -e ')
297
+ )
298
+ ]
299
+ location: |
300
+ {
301
+ "bomRef": $."bom-ref",
302
+ "purl": purl
303
+ }
304
+ message: "Suspicious shell history entry for user '{{ name }}': {{ description }}"
305
+ mitigation: "Correlate with process/network telemetry, validate command intent, and isolate host if command lineage is untrusted."
306
+ evidence: |
307
+ {
308
+ "account": name,
309
+ "command": description,
310
+ "historyFile": $prop($, 'history_file'),
311
+ "timestamp": $prop($, 'time')
312
+ }
313
+
314
+ - id: OBOM-LNX-005
315
+ name: "Docker API exposed over unauthenticated TCP port"
316
+ description: "Dockerd listening on TCP 2375 enables remote daemon control if not protected by network controls and TLS."
317
+ severity: critical
318
+ category: obom-runtime
319
+ dry-run-support: full
320
+ condition: |
321
+ components[
322
+ $prop($, 'cdx:osquery:category') = 'listening_ports'
323
+ and $safeStr($prop($, 'port')) = '2375'
324
+ and (
325
+ $safeStr($prop($, 'address')) = '0.0.0.0'
326
+ or $safeStr($prop($, 'address')) = '::'
327
+ )
328
+ ]
329
+ location: |
330
+ {
331
+ "bomRef": $."bom-ref",
332
+ "purl": purl
333
+ }
334
+ message: "Potentially insecure Docker API exposure detected on {{ $prop($, 'address') }}:{{ $prop($, 'port') }} for process '{{ name }}'"
335
+ mitigation: "Disable insecure TCP listener, enforce TLS/mTLS, and restrict daemon access to trusted local interfaces."
336
+ evidence: |
337
+ {
338
+ "process": name,
339
+ "pid": $prop($, 'pid'),
340
+ "address": $prop($, 'address'),
341
+ "port": $prop($, 'port'),
342
+ "protocol": $prop($, 'protocol')
343
+ }
344
+
345
+ - id: OBOM-LNX-006
346
+ name: "Privileged Linux listener exposed on a non-local interface"
347
+ description: "Root or service-account listeners bound to all interfaces expand attack surface and should be reviewed even when they appear to come from managed system paths."
348
+ severity: medium
349
+ category: obom-runtime
350
+ dry-run-support: full
351
+ condition: |
352
+ components[
353
+ $prop($, 'cdx:osquery:category') = 'privileged_listening_ports'
354
+ and (
355
+ $safeStr($prop($, 'address')) = '0.0.0.0'
356
+ or $safeStr($prop($, 'address')) = '::'
357
+ )
358
+ and $safeStr($prop($, 'port')) != '22'
359
+ and $safeStr($prop($, 'port')) != '53'
360
+ and $safeStr(name) != 'systemd-resolved'
361
+ and $safeStr(name) != 'avahi-daemon'
362
+ and $safeStr(name) != 'cupsd'
363
+ and $safeStr($prop($, 'package_source_hint')) != 'user-writable-path'
364
+ and $safeStr($prop($, 'package_source_hint')) != 'unclassified-path'
365
+ and $not($contains($lowercase($nullSafeProp($, 'path')), '/tmp/'))
366
+ and $not($contains($lowercase($nullSafeProp($, 'path')), '/var/tmp/'))
367
+ and $not($contains($lowercase($nullSafeProp($, 'path')), '/dev/shm/'))
368
+ and $not($contains($lowercase($nullSafeProp($, 'path')), '/home/'))
369
+ and $not($contains($lowercase($nullSafeProp($, 'path')), '/run/user/'))
370
+ ]
371
+ location: |
372
+ {
373
+ "bomRef": $."bom-ref",
374
+ "purl": purl
375
+ }
376
+ message: "Privileged listener '{{ name }}' from '{{ $firstNonEmpty($prop($, 'path'), name) }}' is reachable on {{ $prop($, 'address') }}:{{ $prop($, 'port') }} and should be validated against approved exposure"
377
+ mitigation: "Restrict privileged services to local interfaces where possible, front them with authenticated proxies, and validate the listener path and service ownership against approved admin-surface inventory."
378
+ evidence: |
379
+ {
380
+ "account": $prop($, 'account'),
381
+ "pid": $prop($, 'pid'),
382
+ "address": $prop($, 'address'),
383
+ "port": $prop($, 'port'),
384
+ "path": $prop($, 'path'),
385
+ "serviceUnit": $prop($, 'service_unit'),
386
+ "packageSourceHint": $prop($, 'package_source_hint'),
387
+ "parentCmdline": $prop($, 'parent_cmdline')
388
+ }
389
+
390
+ - id: OBOM-LNX-007
391
+ name: "Administrative Linux surface running with elevated privileges"
392
+ description: "Cockpit, PackageKit, pkexec, and related admin surfaces running with elevated privileges should be continuously monitored for exposure and drift."
393
+ severity: high
394
+ category: obom-runtime
395
+ dry-run-support: full
396
+ condition: |
397
+ components[
398
+ (
399
+ $prop($, 'cdx:osquery:category') = 'elevated_processes'
400
+ or $prop($, 'cdx:osquery:category') = 'privileged_listening_ports'
401
+ or $prop($, 'cdx:osquery:category') = 'sudo_executions'
402
+ or $prop($, 'cdx:osquery:category') = 'privilege_transitions'
403
+ )
404
+ and (
405
+ $contains($lowercase($safeStr(name)), 'cockpit')
406
+ or $contains($lowercase($nullSafeProp($, 'path')), 'cockpit')
407
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), 'cockpit')
408
+ or $contains($lowercase($safeStr(name)), 'packagekit')
409
+ or $contains($lowercase($nullSafeProp($, 'path')), 'packagekit')
410
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), 'packagekit')
411
+ or $contains($lowercase($safeStr(name)), 'pkexec')
412
+ or $contains($lowercase($nullSafeProp($, 'path')), 'pkexec')
413
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), 'pkexec')
414
+ or $contains($lowercase($safeStr(name)), 'pkcon')
415
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), 'pkcon')
416
+ )
417
+ and (
418
+ $safeStr($prop($, 'uid')) = '0'
419
+ or $safeStr($prop($, 'euid')) = '0'
420
+ or $safeStr($prop($, 'account')) = 'root'
421
+ or $safeStr($prop($, 'effective_user')) = 'root'
422
+ )
423
+ ]
424
+ location: |
425
+ {
426
+ "bomRef": $."bom-ref",
427
+ "purl": purl
428
+ }
429
+ message: "Administrative surface '{{ name }}' is active with elevated privileges and should be reviewed for exposure"
430
+ mitigation: "Review network reachability, patch cadence, and whether the administrative package is still needed on this host."
431
+ evidence: |
432
+ {
433
+ "category": $prop($, 'cdx:osquery:category'),
434
+ "path": $prop($, 'path'),
435
+ "cmdline": $prop($, 'cmdline'),
436
+ "account": $prop($, 'account'),
437
+ "effectiveUser": $prop($, 'effective_user'),
438
+ "serviceUnit": $prop($, 'service_unit'),
439
+ "address": $prop($, 'address'),
440
+ "port": $prop($, 'port'),
441
+ "packageSourceHint": $prop($, 'package_source_hint')
442
+ }
443
+
444
+ - id: OBOM-LNX-008
445
+ name: "Interactive sudo chain touched sensitive administrative binary"
446
+ description: "Interactive sudo or pkexec invocations against package-management and admin-control binaries can indicate privileged changes worth auditing."
447
+ severity: high
448
+ category: obom-runtime
449
+ dry-run-support: full
450
+ condition: |
451
+ components[
452
+ $prop($, 'cdx:osquery:category') = 'sudo_executions'
453
+ and $safeStr($prop($, 'auid')) != ''
454
+ and $safeStr($prop($, 'auid')) != '0'
455
+ and (
456
+ $safeStr($prop($, 'euid')) = '0'
457
+ or $safeStr($prop($, 'effective_user')) = 'root'
458
+ )
459
+ and (
460
+ $contains($lowercase($nullSafeProp($, 'path')), 'pkexec')
461
+ or $contains($lowercase($nullSafeProp($, 'path')), 'pkcon')
462
+ or $contains($lowercase($nullSafeProp($, 'path')), 'packagekit')
463
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), 'pkexec')
464
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), 'pkcon')
465
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), 'packagekit')
466
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), 'cockpit')
467
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), 'systemctl')
468
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), 'service ')
469
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), ' apt ')
470
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), ' apt-get ')
471
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), ' dnf ')
472
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), ' yum ')
473
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), ' zypper ')
474
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), ' rpm ')
475
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), ' dpkg ')
476
+ )
477
+ ]
478
+ location: |
479
+ {
480
+ "bomRef": $."bom-ref",
481
+ "purl": purl
482
+ }
483
+ message: "Interactive privileged execution by '{{ $prop($, 'login_user') }}' touched sensitive administrative command '{{ $prop($, 'path') }}'"
484
+ mitigation: "Review whether the command was expected, tie it to change records, and investigate unexpected package-management or control-plane activity."
485
+ evidence: |
486
+ {
487
+ "loginUser": $prop($, 'login_user'),
488
+ "effectiveUser": $prop($, 'effective_user'),
489
+ "path": $prop($, 'path'),
490
+ "cmdline": $prop($, 'cmdline'),
491
+ "parentCmdline": $prop($, 'parent_cmdline'),
492
+ "serviceUnit": $prop($, 'service_unit'),
493
+ "packageSourceHint": $prop($, 'package_source_hint'),
494
+ "timestamp": $prop($, 'time')
495
+ }
496
+
497
+ - id: OBOM-LNX-009
498
+ name: "Unexpected Linux privilege transition for non-allowlisted executable"
499
+ description: "Setuid/setgid transitions outside a small baseline of expected tools can indicate risky privilege-bound packages or exploit activity."
500
+ severity: high
501
+ category: obom-runtime
502
+ dry-run-support: full
503
+ condition: |
504
+ components[
505
+ $prop($, 'cdx:osquery:category') = 'privilege_transitions'
506
+ and $safeStr($prop($, 'auid')) != ''
507
+ and $safeStr($prop($, 'auid')) != '0'
508
+ and (
509
+ $safeStr($prop($, 'euid')) = '0'
510
+ or $safeStr($prop($, 'egid')) = '0'
511
+ )
512
+ and $safeStr($prop($, 'path')) != '/usr/bin/sudo'
513
+ and $safeStr($prop($, 'path')) != '/bin/su'
514
+ and $safeStr($prop($, 'path')) != '/usr/bin/su'
515
+ and $safeStr($prop($, 'path')) != '/usr/bin/doas'
516
+ and $safeStr($prop($, 'path')) != '/usr/bin/passwd'
517
+ and $safeStr($prop($, 'path')) != '/usr/bin/chsh'
518
+ and $safeStr($prop($, 'path')) != '/usr/bin/chfn'
519
+ and $safeStr($prop($, 'path')) != '/usr/bin/gpasswd'
520
+ and $safeStr($prop($, 'path')) != '/usr/bin/newgrp'
521
+ and $safeStr($prop($, 'path')) != '/usr/bin/mount'
522
+ and $safeStr($prop($, 'path')) != '/usr/bin/umount'
523
+ ]
524
+ location: |
525
+ {
526
+ "bomRef": $."bom-ref",
527
+ "purl": purl
528
+ }
529
+ message: "Unexpected privilege transition detected for '{{ $prop($, 'path') }}' (auid={{ $prop($, 'auid') }}, euid={{ $prop($, 'euid') }})"
530
+ mitigation: "Validate binary provenance, file permissions, and recent package changes; treat unfamiliar setuid/setgid paths as high-priority review items."
531
+ evidence: |
532
+ {
533
+ "loginUser": $prop($, 'login_user'),
534
+ "path": $prop($, 'path'),
535
+ "cmdline": $prop($, 'cmdline'),
536
+ "parentCmdline": $prop($, 'parent_cmdline'),
537
+ "auid": $prop($, 'auid'),
538
+ "uid": $prop($, 'uid'),
539
+ "euid": $prop($, 'euid'),
540
+ "gid": $prop($, 'gid'),
541
+ "egid": $prop($, 'egid'),
542
+ "packageSourceHint": $prop($, 'package_source_hint')
543
+ }
544
+
545
+ - id: OBOM-LNX-010
546
+ name: "Elevated Linux process launched from user-writable or temporary path"
547
+ description: "Root processes executing from explicit user-controlled, temporary, or per-user runtime paths are a strong signal for persistence or package drift."
548
+ severity: critical
549
+ category: obom-runtime
550
+ dry-run-support: full
551
+ condition: |
552
+ components[
553
+ $prop($, 'cdx:osquery:category') = 'elevated_processes'
554
+ and $safeStr($prop($, 'uid')) = '0'
555
+ and (
556
+ $contains($nullSafeProp($, 'path'), '/tmp/')
557
+ or $contains($nullSafeProp($, 'path'), '/var/tmp/')
558
+ or $contains($nullSafeProp($, 'path'), '/dev/shm/')
559
+ or $contains($nullSafeProp($, 'path'), '/home/')
560
+ or $contains($nullSafeProp($, 'path'), '/run/user/')
561
+ or $contains($nullSafeProp($, 'cmdline'), '/tmp/')
562
+ or $contains($nullSafeProp($, 'cmdline'), '/var/tmp/')
563
+ or $contains($nullSafeProp($, 'cmdline'), '/dev/shm/')
564
+ or $contains($nullSafeProp($, 'cmdline'), '/home/')
565
+ or $contains($nullSafeProp($, 'cmdline'), '/run/user/')
566
+ or $safeStr($prop($, 'package_source_hint')) = 'user-writable-path'
567
+ )
568
+ and $safeStr(name) != 'systemd'
569
+ and $safeStr(name) != 'init'
570
+ ]
571
+ location: |
572
+ {
573
+ "bomRef": $."bom-ref",
574
+ "purl": purl
575
+ }
576
+ message: "Elevated process '{{ name }}' executes from a risky path or command: {{ $firstNonEmpty($prop($, 'path'), $prop($, 'cmdline'), name) }}"
577
+ mitigation: "Validate the executable path and full command line, move approved binaries into trusted system locations, and investigate any root process sourced from writable directories or per-user runtime paths."
578
+ evidence: |
579
+ {
580
+ "account": $prop($, 'account'),
581
+ "path": $prop($, 'path'),
582
+ "cmdline": $prop($, 'cmdline'),
583
+ "serviceUnit": $prop($, 'service_unit'),
584
+ "parentPath": $prop($, 'parent_path'),
585
+ "parentCmdline": $prop($, 'parent_cmdline'),
586
+ "startTime": $prop($, 'start_time'),
587
+ "packageSourceHint": $prop($, 'package_source_hint')
588
+ }
589
+
590
+ - id: OBOM-LNX-011
591
+ name: "Interactive shell parent spawned privileged Linux execution"
592
+ description: "Shell-driven privileged chains are useful for separating admin changes from long-running service behavior."
593
+ severity: medium
594
+ category: obom-runtime
595
+ dry-run-support: full
596
+ condition: |
597
+ components[
598
+ $prop($, 'cdx:osquery:category') = 'sudo_executions'
599
+ and $safeStr($prop($, 'auid')) != ''
600
+ and $safeStr($prop($, 'auid')) != '0'
601
+ and (
602
+ $safeStr($prop($, 'euid')) = '0'
603
+ or $safeStr($prop($, 'effective_user')) = 'root'
604
+ )
605
+ and (
606
+ $safeStr($prop($, 'parent_name')) = 'bash'
607
+ or $safeStr($prop($, 'parent_name')) = 'sh'
608
+ or $safeStr($prop($, 'parent_name')) = 'zsh'
609
+ or $safeStr($prop($, 'parent_name')) = 'dash'
610
+ or $safeStr($prop($, 'parent_name')) = 'fish'
611
+ or $contains($lowercase($nullSafeProp($, 'parent_cmdline')), 'bash')
612
+ or $contains($lowercase($nullSafeProp($, 'parent_cmdline')), 'zsh')
613
+ or $contains($lowercase($nullSafeProp($, 'parent_cmdline')), 'fish')
614
+ )
615
+ ]
616
+ location: |
617
+ {
618
+ "bomRef": $."bom-ref",
619
+ "purl": purl
620
+ }
621
+ message: "Interactive shell lineage for privileged command '{{ $prop($, 'cmdline') }}' merits change-review validation"
622
+ mitigation: "Correlate the privileged command with shell history, tickets, and package changes to confirm it was expected."
623
+ evidence: |
624
+ {
625
+ "loginUser": $prop($, 'login_user'),
626
+ "parentName": $prop($, 'parent_name'),
627
+ "parentCmdline": $prop($, 'parent_cmdline'),
628
+ "path": $prop($, 'path'),
629
+ "cmdline": $prop($, 'cmdline'),
630
+ "timestamp": $prop($, 'time')
631
+ }
632
+
633
+ - id: OBOM-LNX-012
634
+ name: "Linux Secure Boot inventory contains revoked certificate"
635
+ description: "Revoked entries in the Secure Boot trust inventory can indicate stale firmware trust policy or unexpected dbx posture drift."
636
+ severity: high
637
+ category: obom-runtime
638
+ dry-run-support: full
639
+ condition: |
640
+ components[
641
+ $prop($, 'cdx:osquery:category') = 'secureboot_certificates'
642
+ and $safeStr($prop($, 'revoked')) = '1'
643
+ ]
644
+ location: |
645
+ {
646
+ "bomRef": $."bom-ref",
647
+ "purl": purl
648
+ }
649
+ message: "Secure Boot certificate '{{ name }}' is marked revoked in firmware trust inventory"
650
+ mitigation: "Review db/dbx enrollment, remove stale trust anchors, and reconcile firmware policy with approved platform signing certificates."
651
+ evidence: |
652
+ {
653
+ "subject": $prop($, 'subject'),
654
+ "issuer": $prop($, 'issuer'),
655
+ "serial": $prop($, 'serial'),
656
+ "path": $prop($, 'path'),
657
+ "notValidAfter": $prop($, 'not_valid_after')
658
+ }
659
+
660
+ - id: OBOM-LNX-013
661
+ name: "Linux Secure Boot certificate expired or expiring soon"
662
+ description: "Secure Boot trust anchors nearing expiry can cause firmware validation drift and interrupt planned key rotation windows."
663
+ severity: medium
664
+ category: obom-runtime
665
+ dry-run-support: full
666
+ condition: |
667
+ components[
668
+ $prop($, 'cdx:osquery:category') = 'secureboot_certificates'
669
+ and $safeStr($prop($, 'not_valid_after')) != ''
670
+ and $number($prop($, 'not_valid_after')) <= ($floor($millis() / 1000) + 2592000)
671
+ ]
672
+ location: |
673
+ {
674
+ "bomRef": $."bom-ref",
675
+ "purl": purl
676
+ }
677
+ message: "Secure Boot certificate '{{ name }}' expires at {{ $prop($, 'not_valid_after') }} and should be rotated or reviewed"
678
+ mitigation: "Rotate or re-enroll Secure Boot certificates before expiry and validate firmware trust stores against your approved signing hierarchy."
679
+ evidence: |
680
+ {
681
+ "subject": $prop($, 'subject'),
682
+ "issuer": $prop($, 'issuer'),
683
+ "serial": $prop($, 'serial'),
684
+ "path": $prop($, 'path'),
685
+ "notValidBefore": $prop($, 'not_valid_before'),
686
+ "notValidAfter": $prop($, 'not_valid_after')
687
+ }
688
+
689
+ - id: OBOM-WIN-004
690
+ name: "Hidden scheduled task uses suspicious execution path"
691
+ description: "Enabled hidden tasks executing from temp paths or encoded script launchers are common persistence tradecraft."
692
+ severity: high
693
+ category: obom-runtime
694
+ dry-run-support: full
695
+ condition: |
696
+ components[
697
+ $prop($, 'cdx:osquery:category') = 'scheduled_tasks'
698
+ and $safeStr($prop($, 'enabled')) = '1'
699
+ and $safeStr($prop($, 'hidden')) = '1'
700
+ and (
701
+ $contains($lowercase($nullSafeProp($, 'path')), '\\temp\\')
702
+ or ($contains($lowercase($nullSafeProp($, 'action')), 'powershell') and $contains($lowercase($nullSafeProp($, 'action')), '-enc '))
703
+ )
704
+ ]
705
+ location: |
706
+ {
707
+ "bomRef": $."bom-ref",
708
+ "purl": purl
709
+ }
710
+ message: "Hidden scheduled task '{{ name }}' has suspicious action/path: {{ $prop($, 'action') }}"
711
+ mitigation: "Validate author and binary lineage, disable unauthorized tasks, and investigate task registration event history."
712
+ evidence: |
713
+ {
714
+ "taskName": name,
715
+ "taskPath": $prop($, 'path'),
716
+ "action": $prop($, 'action'),
717
+ "state": $prop($, 'state')
718
+ }
719
+
720
+ - id: OBOM-WIN-005
721
+ name: "Auto-start Windows service points to user-writable path"
722
+ description: "Auto-start services from temp or AppData paths may indicate privilege persistence through service hijacking."
723
+ severity: critical
724
+ category: obom-runtime
725
+ dry-run-support: full
726
+ condition: |
727
+ components[
728
+ $prop($, 'cdx:osquery:category') = 'services_snapshot'
729
+ and $safeStr($prop($, 'start_type')) = 'AUTO_START'
730
+ and (
731
+ $contains($lowercase($nullSafeProp($, 'path')), '\\temp\\')
732
+ or $contains($lowercase($nullSafeProp($, 'path')), '\\appdata\\')
733
+ )
734
+ ]
735
+ location: |
736
+ {
737
+ "bomRef": $."bom-ref",
738
+ "purl": purl
739
+ }
740
+ message: "Auto-start service '{{ name }}' launches from a user-writable path: {{ $prop($, 'path') }}"
741
+ mitigation: "Move binaries to protected system paths, lock ACLs, and validate service image hashes/signatures."
742
+ evidence: |
743
+ {
744
+ "serviceName": name,
745
+ "displayName": $prop($, 'display_name'),
746
+ "servicePath": $prop($, 'path'),
747
+ "account": $prop($, 'user_account')
748
+ }
749
+
750
+ - id: OBOM-WIN-006
751
+ name: "Windows suspicious persistence surface references LOLBAS execution helper"
752
+ description: "Any Windows persistence or startup surface that invokes a LOLBAS helper deserves review, including vendor- or platform-managed maintenance registrations, because these surfaces can become breachable execution targets."
753
+ severity: high
754
+ category: obom-runtime
755
+ dry-run-support: full
756
+ condition: |
757
+ components[
758
+ $prop($, 'cdx:lolbas:matched') = 'true'
759
+ and (
760
+ $prop($, 'cdx:osquery:category') = 'windows_run_keys'
761
+ or $prop($, 'cdx:osquery:category') = 'scheduled_tasks'
762
+ or $prop($, 'cdx:osquery:category') = 'startup_items'
763
+ or $prop($, 'cdx:osquery:category') = 'services_snapshot'
764
+ )
765
+ and (
766
+ $listContains($prop($, 'cdx:lolbas:functions'), 'command')
767
+ or $listContains($prop($, 'cdx:lolbas:functions'), 'script-execution')
768
+ or $listContains($prop($, 'cdx:lolbas:functions'), 'proxy-execution')
769
+ or $listContains($prop($, 'cdx:lolbas:functions'), 'library-load')
770
+ or $listContains($prop($, 'cdx:lolbas:functions'), 'shell')
771
+ )
772
+ ]
773
+ location: |
774
+ {
775
+ "bomRef": $."bom-ref",
776
+ "purl": purl
777
+ }
778
+ message: "Windows {{ $prop($, 'cdx:osquery:category') }} registration '{{ $firstNonEmpty($prop($, 'key'), $prop($, 'path'), name) }}' launches '{{ $firstNonEmpty($prop($, 'action'), $prop($, 'executable'), $prop($, 'module_path'), $prop($, 'path'), description, name) }}' via LOLBAS helper(s) {{ $prop($, 'cdx:lolbas:names') }}"
779
+ mitigation: "Review the registration surface and launched command together, validate the owning change, and do not auto-trust managed or vendor-owned maintenance surfaces without provenance and hardening review."
780
+ attack:
781
+ tactics: [TA0003, TA0004, TA0005]
782
+ techniques: [T1218, T1547]
783
+ evidence: |
784
+ {
785
+ "queryCategory": $prop($, 'cdx:osquery:category'),
786
+ "registrationPath": $firstNonEmpty($prop($, 'key'), $prop($, 'path'), name),
787
+ "targetPath": $firstNonEmpty($prop($, 'action'), $prop($, 'executable'), $prop($, 'module_path'), $prop($, 'path'), description),
788
+ "lolbasNames": $prop($, 'cdx:lolbas:names'),
789
+ "functions": $prop($, 'cdx:lolbas:functions'),
790
+ "matchFields": $prop($, 'cdx:lolbas:matchFields'),
791
+ "path": $prop($, 'path'),
792
+ "action": $prop($, 'action'),
793
+ "command": description
794
+ }
795
+
796
+ - id: OBOM-WIN-007
797
+ name: "Windows WMI or AppCompat persistence uses LOLBAS"
798
+ description: "WMI command consumers and AppCompat shims that invoke LOLBAS utilities are high-signal persistence and defense-evasion indicators."
799
+ severity: critical
800
+ category: obom-runtime
801
+ dry-run-support: full
802
+ condition: |
803
+ components[
804
+ $prop($, 'cdx:lolbas:matched') = 'true'
805
+ and (
806
+ $prop($, 'cdx:osquery:category') = 'appcompat_shims'
807
+ or $prop($, 'cdx:osquery:category') = 'wmi_cli_event_consumers'
808
+ or $prop($, 'cdx:osquery:category') = 'wmi_cli_event_consumers_snapshot'
809
+ )
810
+ ]
811
+ location: |
812
+ {
813
+ "bomRef": $."bom-ref",
814
+ "purl": purl
815
+ }
816
+ message: "WMI/AppCompat persistence artifact '{{ name }}' references LOLBAS helper(s) {{ $prop($, 'cdx:lolbas:names') }}"
817
+ mitigation: "Treat as a persistence investigation, review WMI repository and shim databases, and remove unauthorized subscriptions or shim registrations."
818
+ attack:
819
+ tactics: [TA0003, TA0004, TA0005]
820
+ techniques: [T1218, T1546]
821
+ evidence: |
822
+ {
823
+ "queryCategory": $prop($, 'cdx:osquery:category'),
824
+ "lolbasNames": $prop($, 'cdx:lolbas:names'),
825
+ "functions": $prop($, 'cdx:lolbas:functions'),
826
+ "matchFields": $prop($, 'cdx:lolbas:matchFields'),
827
+ "path": $prop($, 'path'),
828
+ "executable": $prop($, 'executable'),
829
+ "commandLine": $prop($, 'command_line'),
830
+ "commandTemplate": $prop($, 'command_line_template')
831
+ }
832
+
833
+ - id: OBOM-WIN-008
834
+ name: "Windows startup or process activity uses network-capable LOLBAS"
835
+ description: "Network-capable LOLBAS helpers such as PowerShell, Certutil, Bitsadmin, or WMIC become higher priority when they appear in persistence surfaces or suspicious live process command lines."
836
+ severity: high
837
+ category: obom-runtime
838
+ dry-run-support: full
839
+ condition: |
840
+ components[
841
+ $prop($, 'cdx:lolbas:matched') = 'true'
842
+ and (
843
+ $listContains($prop($, 'cdx:lolbas:functions'), 'download')
844
+ or $listContains($prop($, 'cdx:lolbas:functions'), 'upload')
845
+ )
846
+ and (
847
+ $prop($, 'cdx:osquery:category') = 'windows_run_keys'
848
+ or $prop($, 'cdx:osquery:category') = 'scheduled_tasks'
849
+ or $prop($, 'cdx:osquery:category') = 'startup_items'
850
+ or (
851
+ $prop($, 'cdx:osquery:category') = 'processes'
852
+ and (
853
+ $contains($lowercase($nullSafeProp($, 'cmdline')), 'http://')
854
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), 'https://')
855
+ or $contains($lowercase($nullSafeProp($, 'cmdline')), '-enc ')
856
+ )
857
+ )
858
+ )
859
+ ]
860
+ location: |
861
+ {
862
+ "bomRef": $."bom-ref",
863
+ "purl": purl
864
+ }
865
+ message: "Network-capable LOLBAS helper(s) {{ $prop($, 'cdx:lolbas:names') }} detected in '{{ $prop($, 'cdx:osquery:category') }}'"
866
+ mitigation: "Correlate with outbound connections and downloads, restrict unmanaged scripting/network utilities, and investigate encoded or remote-fetch command lines."
867
+ attack:
868
+ tactics: [TA0002, TA0010, TA0011]
869
+ techniques: [T1041, T1059.001, T1105]
870
+ evidence: |
871
+ {
872
+ "queryCategory": $prop($, 'cdx:osquery:category'),
873
+ "lolbasNames": $prop($, 'cdx:lolbas:names'),
874
+ "functions": $prop($, 'cdx:lolbas:functions'),
875
+ "command": description,
876
+ "cmdline": $prop($, 'cmdline'),
877
+ "action": $prop($, 'action')
878
+ }
879
+
880
+ - id: OBOM-WIN-009
881
+ name: "Network-facing Windows listener is a LOLBAS execution helper"
882
+ description: "A listening process backed by a LOLBAS execution helper is a strong remote-control or staging indicator on Windows endpoints."
883
+ severity: critical
884
+ category: obom-runtime
885
+ dry-run-support: full
886
+ condition: |
887
+ components[
888
+ $prop($, 'cdx:osquery:category') = 'listening_ports'
889
+ and $prop($, 'cdx:lolbas:matched') = 'true'
890
+ and (
891
+ $safeStr($prop($, 'address')) = '0.0.0.0'
892
+ or $safeStr($prop($, 'address')) = '::'
893
+ )
894
+ and (
895
+ $listContains($prop($, 'cdx:lolbas:functions'), 'command')
896
+ or $listContains($prop($, 'cdx:lolbas:functions'), 'script-execution')
897
+ or $listContains($prop($, 'cdx:lolbas:functions'), 'shell')
898
+ )
899
+ ]
900
+ location: |
901
+ {
902
+ "bomRef": $."bom-ref",
903
+ "purl": purl
904
+ }
905
+ message: "Listening process '{{ name }}' on {{ $prop($, 'address') }}:{{ $prop($, 'port') }} matches LOLBAS helper(s) {{ $prop($, 'cdx:lolbas:names') }}"
906
+ mitigation: "Review parent process lineage, isolate unmanaged listeners, and block or remove unexpected inbound admin or scripting surfaces."
907
+ attack:
908
+ tactics: [TA0002, TA0005, TA0011]
909
+ techniques: [T1059, T1105, T1218]
910
+ evidence: |
911
+ {
912
+ "lolbasNames": $prop($, 'cdx:lolbas:names'),
913
+ "functions": $prop($, 'cdx:lolbas:functions'),
914
+ "path": $prop($, 'path'),
915
+ "cmdline": $prop($, 'cmdline'),
916
+ "address": $prop($, 'address'),
917
+ "port": $prop($, 'port')
918
+ }
919
+
920
+ - id: OBOM-WIN-010
921
+ name: "Windows persistence artifact uses LOLBAS with UAC-bypass context"
922
+ description: "Persistence surfaces that reference LOLBAS helpers documented with UAC-bypass behavior should be treated as privilege-escalation investigations."
923
+ severity: critical
924
+ category: obom-runtime
925
+ dry-run-support: full
926
+ condition: |
927
+ components[
928
+ $prop($, 'cdx:lolbas:matched') = 'true'
929
+ and $listContains($prop($, 'cdx:lolbas:contexts'), 'uac-bypass')
930
+ and (
931
+ $prop($, 'cdx:osquery:category') = 'windows_run_keys'
932
+ or $prop($, 'cdx:osquery:category') = 'scheduled_tasks'
933
+ or $prop($, 'cdx:osquery:category') = 'startup_items'
934
+ or $prop($, 'cdx:osquery:category') = 'wmi_cli_event_consumers'
935
+ or $prop($, 'cdx:osquery:category') = 'wmi_cli_event_consumers_snapshot'
936
+ )
937
+ ]
938
+ location: |
939
+ {
940
+ "bomRef": $."bom-ref",
941
+ "purl": purl
942
+ }
943
+ message: "UAC-bypass-capable LOLBAS helper(s) {{ $prop($, 'cdx:lolbas:names') }} detected in Windows persistence artifact '{{ name }}'"
944
+ mitigation: "Investigate as a possible privilege-escalation foothold, remove unauthorized registration points, and enforce WDAC/AppLocker policies for known proxy binaries."
945
+ attack:
946
+ tactics: [TA0004, TA0005]
947
+ techniques: [T1548.002, T1218]
948
+ evidence: |
949
+ {
950
+ "queryCategory": $prop($, 'cdx:osquery:category'),
951
+ "lolbasNames": $prop($, 'cdx:lolbas:names'),
952
+ "contexts": $prop($, 'cdx:lolbas:contexts'),
953
+ "path": $prop($, 'path'),
954
+ "action": $prop($, 'action'),
955
+ "command": description
956
+ }
957
+
958
+ - id: OBOM-MAC-004
959
+ name: "macOS launchd override disables Apple-managed service"
960
+ description: "Launchd overrides disabling Apple-managed services can indicate tampering with built-in security or platform controls."
961
+ severity: medium
962
+ category: obom-runtime
963
+ dry-run-support: full
964
+ condition: |
965
+ components[
966
+ $prop($, 'cdx:osquery:category') = 'launchd_overrides'
967
+ and $safeStr($prop($, 'key')) = 'Disabled'
968
+ and (
969
+ $safeStr($prop($, 'value')) = '1'
970
+ or $lowercase($safeStr($prop($, 'value'))) = 'true'
971
+ )
972
+ and $startsWith($safeStr($prop($, 'label')), 'com.apple.')
973
+ ]
974
+ location: |
975
+ {
976
+ "bomRef": $."bom-ref",
977
+ "purl": purl
978
+ }
979
+ message: "Launchd override disables Apple-managed label '{{ $prop($, 'label') }}'"
980
+ mitigation: "Review override provenance, restore approved launchd settings, and investigate unauthorized local configuration changes."
981
+ evidence: |
982
+ {
983
+ "label": $prop($, 'label'),
984
+ "key": $prop($, 'key'),
985
+ "value": $prop($, 'value'),
986
+ "uid": $prop($, 'uid'),
987
+ "plistPath": $prop($, 'path')
988
+ }
989
+
990
+ - id: OBOM-MAC-005
991
+ name: "macOS Gatekeeper enforcement is disabled or weakened"
992
+ description: "Gatekeeper should enforce assessments and identified-developer checks on managed macOS endpoints."
993
+ severity: high
994
+ category: obom-runtime
995
+ dry-run-support: full
996
+ condition: |
997
+ components[
998
+ $prop($, 'cdx:osquery:category') = 'gatekeeper'
999
+ and (
1000
+ $safeStr($prop($, 'assessments_enabled')) != '1'
1001
+ or $safeStr($prop($, 'dev_id_enabled')) != '1'
1002
+ )
1003
+ ]
1004
+ location: |
1005
+ {
1006
+ "bomRef": $."bom-ref",
1007
+ "purl": purl
1008
+ }
1009
+ message: "Gatekeeper posture is weakened (assessments_enabled={{ $prop($, 'assessments_enabled') }}, dev_id_enabled={{ $prop($, 'dev_id_enabled') }})"
1010
+ mitigation: "Re-enable Gatekeeper assessments and identified-developer enforcement with spctl or an MDM configuration profile, then validate the host against baseline policy."
1011
+ evidence: |
1012
+ {
1013
+ "gatekeeperVersion": version,
1014
+ "opaqueVersion": description,
1015
+ "assessmentsEnabled": $prop($, 'assessments_enabled'),
1016
+ "devIdEnabled": $prop($, 'dev_id_enabled')
1017
+ }
1018
+
1019
+ - id: OBOM-LNX-014
1020
+ name: "Linux reverse shell behavior detected in live process telemetry"
1021
+ description: "A shell process with a live remote socket is a strong signal for hands-on-keyboard abuse, staging, or remote command execution."
1022
+ severity: critical
1023
+ category: obom-runtime
1024
+ dry-run-support: full
1025
+ condition: |
1026
+ components[
1027
+ $prop($, 'cdx:osquery:category') = 'behavioral_reverse_shell'
1028
+ ]
1029
+ location: |
1030
+ {
1031
+ "bomRef": $."bom-ref",
1032
+ "purl": purl
1033
+ }
1034
+ message: "Reverse-shell-like process behavior detected for '{{ name }}' reaching {{ $prop($, 'remote_address') }}:{{ $prop($, 'remote_port') }}"
1035
+ mitigation: "Isolate the host, review process lineage and parent shell context, and confirm whether the remote session is expected administrative activity."
1036
+ evidence: |
1037
+ {
1038
+ "path": $prop($, 'path'),
1039
+ "cmdline": $prop($, 'cmdline'),
1040
+ "parentCmdline": $prop($, 'parent_cmdline'),
1041
+ "remoteAddress": $prop($, 'remote_address'),
1042
+ "remotePort": $prop($, 'remote_port')
1043
+ }
1044
+
1045
+ - id: OBOM-LNX-015
1046
+ name: "Linux process uses LD_PRELOAD from writable or temporary path"
1047
+ description: "LD_PRELOAD pointing at user-controlled paths can indicate library hijacking, stealth persistence, or runtime tampering."
1048
+ severity: high
1049
+ category: obom-runtime
1050
+ dry-run-support: full
1051
+ condition: |
1052
+ components[
1053
+ $prop($, 'cdx:osquery:category') = 'ld_preload'
1054
+ and (
1055
+ $contains($lowercase($safeStr($prop($, 'value'))), '/tmp/')
1056
+ or $contains($lowercase($safeStr($prop($, 'value'))), '/var/tmp/')
1057
+ or $contains($lowercase($safeStr($prop($, 'value'))), '/dev/shm/')
1058
+ or $contains($lowercase($safeStr($prop($, 'value'))), '/home/')
1059
+ or $contains($lowercase($safeStr($prop($, 'value'))), '/run/user/')
1060
+ )
1061
+ ]
1062
+ location: |
1063
+ {
1064
+ "bomRef": $."bom-ref",
1065
+ "purl": purl
1066
+ }
1067
+ message: "Process '{{ name }}' sets LD_PRELOAD to a risky path: {{ $prop($, 'value') }}"
1068
+ mitigation: "Review the preload library, remove unauthorized runtime injection, and compare the process with package ownership and startup history."
1069
+ evidence: |
1070
+ {
1071
+ "processPath": $prop($, 'path'),
1072
+ "cmdline": $prop($, 'cmdline'),
1073
+ "cwd": $prop($, 'cwd'),
1074
+ "ldPreload": $prop($, 'value')
1075
+ }
1076
+
1077
+ - id: OBOM-LNX-016
1078
+ name: "Linux cron entry fetches remote content or runs from writable path"
1079
+ description: "Cron jobs that fetch remote content or execute from temporary and user-writable paths are a high-signal persistence pattern."
1080
+ severity: high
1081
+ category: obom-runtime
1082
+ dry-run-support: full
1083
+ condition: |
1084
+ components[
1085
+ $prop($, 'cdx:osquery:category') = 'crontab_snapshot'
1086
+ and (
1087
+ (
1088
+ (
1089
+ $contains($lowercase($safeStr($prop($, 'command'))), 'curl ')
1090
+ or $contains($lowercase($safeStr($prop($, 'command'))), 'wget ')
1091
+ )
1092
+ and (
1093
+ $contains($lowercase($safeStr($prop($, 'command'))), 'http://')
1094
+ or $contains($lowercase($safeStr($prop($, 'command'))), 'https://')
1095
+ or $contains($lowercase($safeStr($prop($, 'command'))), '| sh')
1096
+ or $contains($lowercase($safeStr($prop($, 'command'))), '| bash')
1097
+ )
1098
+ )
1099
+ or $contains($lowercase($safeStr($prop($, 'command'))), '/tmp/')
1100
+ or $contains($lowercase($safeStr($prop($, 'command'))), '/var/tmp/')
1101
+ or $contains($lowercase($safeStr($prop($, 'command'))), '/dev/shm/')
1102
+ or $contains($lowercase($safeStr($prop($, 'command'))), '/home/')
1103
+ )
1104
+ ]
1105
+ location: |
1106
+ {
1107
+ "bomRef": $."bom-ref",
1108
+ "purl": purl
1109
+ }
1110
+ message: "Cron entry '{{ name }}' has a risky command: {{ $prop($, 'command') }}"
1111
+ mitigation: "Move bootstrap downloads into a managed deployment path, review cron ownership, and remove unauthorized recurring tasks."
1112
+ evidence: |
1113
+ {
1114
+ "command": $prop($, 'command'),
1115
+ "path": $prop($, 'path'),
1116
+ "minute": $prop($, 'minute'),
1117
+ "hour": $prop($, 'hour')
1118
+ }
1119
+
1120
+ - id: OBOM-LNX-017
1121
+ name: "Linux sysctl posture diverges from common hardening baseline"
1122
+ description: "Weak ASLR and redirect-handling sysctl values are commonly called out in Lynis and CIS-style hardening reviews."
1123
+ severity: medium
1124
+ category: obom-runtime
1125
+ dry-run-support: full
1126
+ condition: |
1127
+ components[
1128
+ $prop($, 'cdx:osquery:category') = 'sysctl_hardening'
1129
+ and (
1130
+ (name = 'kernel.randomize_va_space' and $safeStr(version) != '2')
1131
+ or (name = 'kernel.kptr_restrict' and $safeStr(version) = '0')
1132
+ or (
1133
+ (
1134
+ name = 'net.ipv4.conf.all.accept_redirects'
1135
+ or name = 'net.ipv4.conf.default.accept_redirects'
1136
+ or name = 'net.ipv4.conf.all.send_redirects'
1137
+ or name = 'net.ipv4.conf.default.send_redirects'
1138
+ )
1139
+ and $safeStr(version) = '1'
1140
+ )
1141
+ )
1142
+ ]
1143
+ location: |
1144
+ {
1145
+ "bomRef": $."bom-ref",
1146
+ "purl": purl
1147
+ }
1148
+ message: "Sysctl '{{ name }}' has a weak hardening value: {{ version }}"
1149
+ mitigation: "Align the sysctl value with your baseline, apply the setting persistently, and validate whether the deviation is truly required for this host."
1150
+ evidence: |
1151
+ {
1152
+ "sysctl": name,
1153
+ "value": version
1154
+ }
1155
+
1156
+ - id: OBOM-LNX-018
1157
+ name: "Linux temporary mount is missing key hardening flags"
1158
+ description: "Temporary and shared-memory mounts should usually carry noexec, nosuid, and nodev protections on hardened hosts."
1159
+ severity: high
1160
+ category: obom-runtime
1161
+ dry-run-support: full
1162
+ condition: |
1163
+ components[
1164
+ $prop($, 'cdx:osquery:category') = 'mount_hardening'
1165
+ and (
1166
+ name = '/tmp'
1167
+ or name = '/var/tmp'
1168
+ or name = '/dev/shm'
1169
+ )
1170
+ and (
1171
+ $not($contains($lowercase($safeStr(version)), 'noexec'))
1172
+ or $not($contains($lowercase($safeStr(version)), 'nosuid'))
1173
+ or $not($contains($lowercase($safeStr(version)), 'nodev'))
1174
+ )
1175
+ ]
1176
+ location: |
1177
+ {
1178
+ "bomRef": $."bom-ref",
1179
+ "purl": purl
1180
+ }
1181
+ message: "Mount '{{ name }}' is missing one or more hardening flags: {{ version }}"
1182
+ mitigation: "Review whether the mount should carry noexec, nosuid, and nodev, then enforce the chosen baseline through fstab, systemd mounts, or image build policy."
1183
+ evidence: |
1184
+ {
1185
+ "mount": name,
1186
+ "flags": version,
1187
+ "device": description,
1188
+ "type": $prop($, 'type')
1189
+ }
1190
+
1191
+ - id: OBOM-LNX-019
1192
+ name: "Live Linux runtime artifact matches GTFOBins execution helper"
1193
+ description: "GTFOBins-capable binaries in privileged or network-active runtime contexts deserve elevated review because they compress execution, persistence, and lateral movement tradecraft into familiar tools."
1194
+ severity: high
1195
+ category: obom-runtime
1196
+ dry-run-support: full
1197
+ condition: |
1198
+ components[
1199
+ $prop($, 'cdx:gtfobins:matched') = 'true'
1200
+ and (
1201
+ $prop($, 'cdx:osquery:category') = 'sudo_executions'
1202
+ or $prop($, 'cdx:osquery:category') = 'privilege_transitions'
1203
+ or $prop($, 'cdx:osquery:category') = 'privileged_listening_ports'
1204
+ or $prop($, 'cdx:osquery:category') = 'behavioral_reverse_shell'
1205
+ or (
1206
+ $prop($, 'cdx:osquery:category') = 'elevated_processes'
1207
+ and (
1208
+ $safeStr($prop($, 'package_source_hint')) = 'user-writable-path'
1209
+ or $contains($nullSafeProp($, 'path'), '/tmp/')
1210
+ or $contains($nullSafeProp($, 'path'), '/var/tmp/')
1211
+ or $contains($nullSafeProp($, 'path'), '/dev/shm/')
1212
+ or $contains($nullSafeProp($, 'path'), '/home/')
1213
+ or $contains($nullSafeProp($, 'path'), '/run/user/')
1214
+ or $contains($nullSafeProp($, 'cmdline'), '/tmp/')
1215
+ or $contains($nullSafeProp($, 'cmdline'), '/var/tmp/')
1216
+ or $contains($nullSafeProp($, 'cmdline'), '/dev/shm/')
1217
+ or $contains($nullSafeProp($, 'cmdline'), '/home/')
1218
+ or $contains($nullSafeProp($, 'cmdline'), '/run/user/')
1219
+ )
1220
+ )
1221
+ )
1222
+ and (
1223
+ $listContains($prop($, 'cdx:gtfobins:functions'), 'shell')
1224
+ or $listContains($prop($, 'cdx:gtfobins:functions'), 'command')
1225
+ or $listContains($prop($, 'cdx:gtfobins:functions'), 'reverse-shell')
1226
+ )
1227
+ ]
1228
+ location: |
1229
+ {
1230
+ "bomRef": $."bom-ref",
1231
+ "purl": purl
1232
+ }
1233
+ message: "Runtime artifact '{{ name }}' matches GTFOBins helper(s) {{ $prop($, 'cdx:gtfobins:names') }} in '{{ $prop($, 'cdx:osquery:category') }}'"
1234
+ mitigation: "Validate the binary provenance and operator intent, then review related sudo, privilege-transition, listener, and remote-connection telemetry before suppressing the finding."
1235
+ evidence: |
1236
+ {
1237
+ "queryCategory": $prop($, 'cdx:osquery:category'),
1238
+ "gtfobinsNames": $prop($, 'cdx:gtfobins:names'),
1239
+ "functions": $prop($, 'cdx:gtfobins:functions'),
1240
+ "contexts": $prop($, 'cdx:gtfobins:contexts'),
1241
+ "riskTags": $prop($, 'cdx:gtfobins:riskTags'),
1242
+ "path": $prop($, 'path'),
1243
+ "cmdline": $prop($, 'cmdline')
1244
+ }
1245
+
1246
+ - id: OBOM-WIN-011
1247
+ name: "Windows Public profile inbound firewall allow rule"
1248
+ description: "Inbound allow rules on the Public firewall profile can expose services beyond expected trust boundaries."
1249
+ severity: high
1250
+ category: obom-runtime
1251
+ dry-run-support: full
1252
+ condition: |
1253
+ components[
1254
+ $prop($, 'cdx:osquery:category') = 'windows_firewall_rules'
1255
+ and (
1256
+ $lowercase($safeStr($prop($, 'enabled'))) = '1'
1257
+ or $lowercase($safeStr($prop($, 'enabled'))) = 'true'
1258
+ )
1259
+ and $lowercase($safeStr($prop($, 'direction'))) = 'in'
1260
+ and $lowercase($safeStr($prop($, 'action'))) = 'allow'
1261
+ and $contains($lowercase($safeStr($prop($, 'profile'))), 'public')
1262
+ ]
1263
+ location: |
1264
+ {
1265
+ "bomRef": $."bom-ref",
1266
+ "purl": purl
1267
+ }
1268
+ message: "Firewall rule '{{ name }}' allows inbound traffic on the Public profile"
1269
+ mitigation: "Narrow the rule scope, move it to a more trusted profile when justified, and verify the backing service really needs public-network reachability."
1270
+ evidence: |
1271
+ {
1272
+ "action": $prop($, 'action'),
1273
+ "direction": $prop($, 'direction'),
1274
+ "profile": $prop($, 'profile'),
1275
+ "localPorts": $prop($, 'local_ports'),
1276
+ "remoteAddresses": $prop($, 'remote_addresses')
1277
+ }
1278
+
1279
+ - id: OBOM-WIN-012
1280
+ name: "Windows startup or listener binary has invalid Authenticode status"
1281
+ description: "Persistence and network-facing artifacts backed by definitively invalid Authenticode status deserve urgent review on managed Windows hosts."
1282
+ severity: critical
1283
+ category: obom-runtime
1284
+ dry-run-support: full
1285
+ condition: |
1286
+ components[
1287
+ (
1288
+ $prop($, 'cdx:osquery:category') = 'windows_run_keys'
1289
+ or $prop($, 'cdx:osquery:category') = 'scheduled_tasks'
1290
+ or $prop($, 'cdx:osquery:category') = 'startup_items'
1291
+ or $prop($, 'cdx:osquery:category') = 'services_snapshot'
1292
+ or $prop($, 'cdx:osquery:category') = 'listening_ports'
1293
+ )
1294
+ and $not(
1295
+ $contains(
1296
+ $lowercase(
1297
+ $firstNonEmpty(
1298
+ $prop($, 'image_path'),
1299
+ $prop($, 'executable'),
1300
+ $prop($, 'action'),
1301
+ $prop($, 'module_path'),
1302
+ $prop($, 'path'),
1303
+ description,
1304
+ name
1305
+ )
1306
+ ),
1307
+ '.lnk'
1308
+ )
1309
+ )
1310
+ and $hasProp($, 'cdx:windows:authenticode:status')
1311
+ and $lowercase($safeStr($prop($, 'cdx:windows:authenticode:status'))) != 'valid'
1312
+ and $lowercase($safeStr($prop($, 'cdx:windows:authenticode:status'))) != 'unknown'
1313
+ and $lowercase($safeStr($prop($, 'cdx:windows:authenticode:status'))) != 'unknownerror'
1314
+ and $lowercase($safeStr($prop($, 'cdx:windows:authenticode:status'))) != 'unknown_error'
1315
+ ]
1316
+ location: |
1317
+ {
1318
+ "bomRef": $."bom-ref",
1319
+ "purl": purl
1320
+ }
1321
+ message: "Windows {{ $prop($, 'cdx:osquery:category') }} registration '{{ $firstNonEmpty($prop($, 'key'), $prop($, 'path'), name) }}' resolves to '{{ $firstNonEmpty($prop($, 'image_path'), $prop($, 'executable'), $prop($, 'action'), $prop($, 'module_path'), $prop($, 'path'), description, name) }}' with Authenticode status {{ $prop($, 'cdx:windows:authenticode:status') }}"
1322
+ mitigation: "Review the startup/listener registration and backing binary together, treat the executable as suspicious until provenance is confirmed, compare the hash and signer with an approved baseline, and investigate who registered the surface."
1323
+ evidence: |
1324
+ {
1325
+ "queryCategory": $prop($, 'cdx:osquery:category'),
1326
+ "registrationPath": $firstNonEmpty($prop($, 'key'), $prop($, 'path'), name),
1327
+ "targetPath": $firstNonEmpty($prop($, 'image_path'), $prop($, 'executable'), $prop($, 'action'), $prop($, 'module_path'), $prop($, 'path'), description),
1328
+ "path": $prop($, 'path'),
1329
+ "imagePath": $prop($, 'image_path'),
1330
+ "action": $prop($, 'action'),
1331
+ "authenticodeStatus": $prop($, 'cdx:windows:authenticode:status'),
1332
+ "signerSubject": $prop($, 'cdx:windows:authenticode:signerSubject')
1333
+ }
1334
+
1335
+ - id: OBOM-WIN-014
1336
+ name: "Windows user-controlled startup or listener binary has unresolved Authenticode status"
1337
+ description: "Unknown Authenticode state on binaries launched from user-controlled startup or network-facing surfaces deserves review even when Windows cannot conclusively mark the signature invalid."
1338
+ severity: high
1339
+ category: obom-runtime
1340
+ dry-run-support: full
1341
+ condition: |
1342
+ components[
1343
+ (
1344
+ $prop($, 'cdx:osquery:category') = 'windows_run_keys'
1345
+ or $prop($, 'cdx:osquery:category') = 'scheduled_tasks'
1346
+ or $prop($, 'cdx:osquery:category') = 'startup_items'
1347
+ or $prop($, 'cdx:osquery:category') = 'services_snapshot'
1348
+ or $prop($, 'cdx:osquery:category') = 'listening_ports'
1349
+ )
1350
+ and $not(
1351
+ $contains(
1352
+ $lowercase(
1353
+ $firstNonEmpty(
1354
+ $prop($, 'image_path'),
1355
+ $prop($, 'executable'),
1356
+ $prop($, 'action'),
1357
+ $prop($, 'module_path'),
1358
+ $prop($, 'path'),
1359
+ description,
1360
+ name
1361
+ )
1362
+ ),
1363
+ '.lnk'
1364
+ )
1365
+ )
1366
+ and $hasProp($, 'cdx:windows:authenticode:status')
1367
+ and (
1368
+ $lowercase($safeStr($prop($, 'cdx:windows:authenticode:status'))) = 'unknown'
1369
+ or $lowercase($safeStr($prop($, 'cdx:windows:authenticode:status'))) = 'unknownerror'
1370
+ or $lowercase($safeStr($prop($, 'cdx:windows:authenticode:status'))) = 'unknown_error'
1371
+ )
1372
+ and (
1373
+ $isWindowsUserControlledPath(
1374
+ $firstNonEmpty(
1375
+ $prop($, 'image_path'),
1376
+ $prop($, 'executable'),
1377
+ $prop($, 'action'),
1378
+ description,
1379
+ $prop($, 'path'),
1380
+ name
1381
+ )
1382
+ )
1383
+ or $isWindowsUserControlledPath(
1384
+ $firstNonEmpty($prop($, 'path'), $prop($, 'key'), name)
1385
+ )
1386
+ )
1387
+ ]
1388
+ location: |
1389
+ {
1390
+ "bomRef": $."bom-ref",
1391
+ "purl": purl
1392
+ }
1393
+ message: "Windows {{ $prop($, 'cdx:osquery:category') }} registration '{{ $firstNonEmpty($prop($, 'key'), $prop($, 'path'), name) }}' resolves to '{{ $firstNonEmpty($prop($, 'image_path'), $prop($, 'executable'), $prop($, 'action'), $prop($, 'module_path'), $prop($, 'path'), description, name) }}' with unresolved Authenticode status {{ $prop($, 'cdx:windows:authenticode:status') }}"
1394
+ mitigation: "Review the startup/listener registration and backing binary together, confirm signature collection completed successfully, compare the hash and signer with an approved baseline, and prioritize cleanup of user-controlled execution paths."
1395
+ evidence: |
1396
+ {
1397
+ "queryCategory": $prop($, 'cdx:osquery:category'),
1398
+ "registrationPath": $firstNonEmpty($prop($, 'key'), $prop($, 'path'), name),
1399
+ "targetPath": $firstNonEmpty($prop($, 'image_path'), $prop($, 'executable'), $prop($, 'action'), $prop($, 'module_path'), $prop($, 'path'), description),
1400
+ "path": $prop($, 'path'),
1401
+ "imagePath": $prop($, 'image_path'),
1402
+ "action": $prop($, 'action'),
1403
+ "authenticodeStatus": $prop($, 'cdx:windows:authenticode:status'),
1404
+ "signerSubject": $prop($, 'cdx:windows:authenticode:signerSubject')
1405
+ }
1406
+
1407
+ - id: OBOM-WIN-013
1408
+ name: "Windows host has no active WDAC policies"
1409
+ description: "A managed Windows endpoint with no active WDAC policy loses an important application control and allowlisting layer."
1410
+ severity: high
1411
+ category: obom-runtime
1412
+ dry-run-support: full
1413
+ condition: |
1414
+ components[
1415
+ $hasProp($, 'cdx:windows:wdac:activePolicyCount')
1416
+ and $safeStr($prop($, 'cdx:windows:wdac:activePolicyCount')) = '0'
1417
+ ]
1418
+ location: |
1419
+ {
1420
+ "bomRef": $."bom-ref",
1421
+ "purl": purl
1422
+ }
1423
+ message: "Windows Defender Application Control is not enforcing any active policy on this host"
1424
+ mitigation: "Deploy or restore the approved WDAC policy set and review why policy enforcement is absent on the endpoint."
1425
+ evidence: |
1426
+ {
1427
+ "component": name,
1428
+ "activePolicyCount": $prop($, 'cdx:windows:wdac:activePolicyCount')
1429
+ }
1430
+
1431
+ - id: OBOM-MAC-006
1432
+ name: "macOS running app launches from Downloads, Desktop, or temporary path"
1433
+ description: "User-space execution from Downloads, Desktop, or temporary folders is a useful triage signal for ad hoc tooling and unreviewed payloads."
1434
+ severity: medium
1435
+ category: obom-runtime
1436
+ dry-run-support: full
1437
+ condition: |
1438
+ components[
1439
+ $prop($, 'cdx:osquery:category') = 'running_apps'
1440
+ and (
1441
+ $contains($safeStr($prop($, 'bundle_path')), '/Users/')
1442
+ and (
1443
+ $contains($safeStr($prop($, 'bundle_path')), '/Downloads/')
1444
+ or $contains($safeStr($prop($, 'bundle_path')), '/Desktop/')
1445
+ or $contains($safeStr($prop($, 'bundle_path')), '/tmp/')
1446
+ )
1447
+ )
1448
+ ]
1449
+ location: |
1450
+ {
1451
+ "bomRef": $."bom-ref",
1452
+ "purl": purl
1453
+ }
1454
+ message: "Running app '{{ name }}' originates from a risky user path: {{ $prop($, 'bundle_path') }}"
1455
+ mitigation: "Validate the app origin, move approved software into managed application paths, and investigate unexpected user-land execution."
1456
+ evidence: |
1457
+ {
1458
+ "bundlePath": $prop($, 'bundle_path'),
1459
+ "bundleExecutable": $prop($, 'bundle_executable'),
1460
+ "isFinishedLaunching": $prop($, 'is_finished_launching')
1461
+ }
1462
+
1463
+ - id: OBOM-MAC-007
1464
+ name: "macOS startup or application artifact failed notarization assessment"
1465
+ description: "Launchd, startup, and application artifacts with rejected notarization assessment deserve review before they are treated as trusted software."
1466
+ severity: high
1467
+ category: obom-runtime
1468
+ dry-run-support: full
1469
+ condition: |
1470
+ components[
1471
+ (
1472
+ (
1473
+ (
1474
+ $prop($, 'cdx:osquery:category') = 'launchd_services'
1475
+ or $prop($, 'cdx:osquery:category') = 'startup_items'
1476
+ )
1477
+ and (
1478
+ $not(
1479
+ $isDarwinSystemPath(
1480
+ $firstNonEmpty($prop($, 'path'), $prop($, 'bundle_path'))
1481
+ )
1482
+ )
1483
+ or $not(
1484
+ $isDarwinSystemPath(
1485
+ $firstNonEmpty(
1486
+ $prop($, 'program'),
1487
+ $prop($, 'bundle_executable'),
1488
+ $prop($, 'bundle_path'),
1489
+ $prop($, 'path')
1490
+ )
1491
+ )
1492
+ )
1493
+ )
1494
+ )
1495
+ or (
1496
+ $prop($, 'cdx:osquery:category') = 'running_apps'
1497
+ and $not(
1498
+ $isDarwinSystemPath(
1499
+ $firstNonEmpty($prop($, 'bundle_path'), $prop($, 'path'))
1500
+ )
1501
+ )
1502
+ )
1503
+ )
1504
+ and $hasProp($, 'cdx:darwin:notarization:assessment')
1505
+ and $lowercase($safeStr($prop($, 'cdx:darwin:notarization:assessment'))) = 'rejected'
1506
+ ]
1507
+ location: |
1508
+ {
1509
+ "bomRef": $."bom-ref",
1510
+ "purl": purl
1511
+ }
1512
+ message: "macOS {{ $prop($, 'cdx:osquery:category') }} artifact '{{ name }}' uses registration path '{{ $firstNonEmpty($prop($, 'path'), $prop($, 'bundle_path'), name) }}' and target '{{ $firstNonEmpty($prop($, 'program'), $prop($, 'bundle_executable'), $prop($, 'bundle_path'), $prop($, 'path'), name) }}' with notarization assessment {{ $prop($, 'cdx:darwin:notarization:assessment') }}"
1513
+ mitigation: "Review the registration/config path and backing executable together, confirm the signer or team identifier against approved inventory, and remove or quarantine unexpected startup items or app bundles."
1514
+ evidence: |
1515
+ {
1516
+ "queryCategory": $prop($, 'cdx:osquery:category'),
1517
+ "registrationPath": $firstNonEmpty($prop($, 'path'), $prop($, 'bundle_path')),
1518
+ "targetPath": $firstNonEmpty($prop($, 'program'), $prop($, 'bundle_executable'), $prop($, 'bundle_path'), $prop($, 'path')),
1519
+ "label": $prop($, 'label'),
1520
+ "path": $prop($, 'path'),
1521
+ "bundlePath": $prop($, 'bundle_path'),
1522
+ "bundleExecutable": $prop($, 'bundle_executable'),
1523
+ "program": $prop($, 'program'),
1524
+ "programArguments": $prop($, 'program_arguments'),
1525
+ "teamIdentifier": $prop($, 'cdx:darwin:codesign:teamIdentifier'),
1526
+ "notarizationAssessment": $prop($, 'cdx:darwin:notarization:assessment')
1527
+ }
1528
+
1529
+ - id: OBOM-MAC-008
1530
+ name: "macOS user-controlled startup or application artifact has unknown notarization assessment"
1531
+ description: "Launchd, startup, and application artifacts with unknown notarization assessment should be reviewed when they execute from user-controlled macOS paths."
1532
+ severity: medium
1533
+ category: obom-runtime
1534
+ dry-run-support: full
1535
+ condition: |
1536
+ components[
1537
+ (
1538
+ (
1539
+ (
1540
+ $prop($, 'cdx:osquery:category') = 'launchd_services'
1541
+ or $prop($, 'cdx:osquery:category') = 'startup_items'
1542
+ )
1543
+ and (
1544
+ $not(
1545
+ $isDarwinSystemPath(
1546
+ $firstNonEmpty($prop($, 'path'), $prop($, 'bundle_path'))
1547
+ )
1548
+ )
1549
+ or $not(
1550
+ $isDarwinSystemPath(
1551
+ $firstNonEmpty(
1552
+ $prop($, 'program'),
1553
+ $prop($, 'bundle_executable'),
1554
+ $prop($, 'bundle_path'),
1555
+ $prop($, 'path')
1556
+ )
1557
+ )
1558
+ )
1559
+ )
1560
+ )
1561
+ or (
1562
+ $prop($, 'cdx:osquery:category') = 'running_apps'
1563
+ and $not(
1564
+ $isDarwinSystemPath(
1565
+ $firstNonEmpty($prop($, 'bundle_path'), $prop($, 'path'))
1566
+ )
1567
+ )
1568
+ )
1569
+ )
1570
+ and $hasProp($, 'cdx:darwin:notarization:assessment')
1571
+ and $lowercase($safeStr($prop($, 'cdx:darwin:notarization:assessment'))) = 'unknown'
1572
+ and (
1573
+ $contains(
1574
+ $lowercase($firstNonEmpty($prop($, 'path'), $prop($, 'bundle_path'))),
1575
+ '/users/'
1576
+ )
1577
+ or $contains(
1578
+ $lowercase(
1579
+ $firstNonEmpty(
1580
+ $prop($, 'program'),
1581
+ $prop($, 'bundle_executable'),
1582
+ $prop($, 'bundle_path'),
1583
+ $prop($, 'path')
1584
+ )
1585
+ ),
1586
+ '/users/'
1587
+ )
1588
+ or $contains(
1589
+ $lowercase($firstNonEmpty($prop($, 'path'), $prop($, 'bundle_path'))),
1590
+ '/downloads/'
1591
+ )
1592
+ or $contains(
1593
+ $lowercase(
1594
+ $firstNonEmpty(
1595
+ $prop($, 'program'),
1596
+ $prop($, 'bundle_executable'),
1597
+ $prop($, 'bundle_path'),
1598
+ $prop($, 'path')
1599
+ )
1600
+ ),
1601
+ '/downloads/'
1602
+ )
1603
+ or $contains(
1604
+ $lowercase($firstNonEmpty($prop($, 'path'), $prop($, 'bundle_path'))),
1605
+ '/desktop/'
1606
+ )
1607
+ or $contains(
1608
+ $lowercase(
1609
+ $firstNonEmpty(
1610
+ $prop($, 'program'),
1611
+ $prop($, 'bundle_executable'),
1612
+ $prop($, 'bundle_path'),
1613
+ $prop($, 'path')
1614
+ )
1615
+ ),
1616
+ '/desktop/'
1617
+ )
1618
+ or $contains(
1619
+ $lowercase($firstNonEmpty($prop($, 'path'), $prop($, 'bundle_path'))),
1620
+ '/tmp/'
1621
+ )
1622
+ or $contains(
1623
+ $lowercase(
1624
+ $firstNonEmpty(
1625
+ $prop($, 'program'),
1626
+ $prop($, 'bundle_executable'),
1627
+ $prop($, 'bundle_path'),
1628
+ $prop($, 'path')
1629
+ )
1630
+ ),
1631
+ '/tmp/'
1632
+ )
1633
+ or $contains(
1634
+ $lowercase($firstNonEmpty($prop($, 'path'), $prop($, 'bundle_path'))),
1635
+ '/private/var/'
1636
+ )
1637
+ or $contains(
1638
+ $lowercase(
1639
+ $firstNonEmpty(
1640
+ $prop($, 'program'),
1641
+ $prop($, 'bundle_executable'),
1642
+ $prop($, 'bundle_path'),
1643
+ $prop($, 'path')
1644
+ )
1645
+ ),
1646
+ '/private/var/'
1647
+ )
1648
+ )
1649
+ ]
1650
+ location: |
1651
+ {
1652
+ "bomRef": $."bom-ref",
1653
+ "purl": purl
1654
+ }
1655
+ message: "macOS {{ $prop($, 'cdx:osquery:category') }} artifact '{{ name }}' uses registration path '{{ $firstNonEmpty($prop($, 'path'), $prop($, 'bundle_path'), name) }}' and target '{{ $firstNonEmpty($prop($, 'program'), $prop($, 'bundle_executable'), $prop($, 'bundle_path'), $prop($, 'path'), name) }}' with unknown notarization assessment on a user-controlled path"
1656
+ mitigation: "Review the registration/config path and backing executable together, re-check notarization and code-signing metadata, and move approved software out of user-controlled paths before suppressing the finding."
1657
+ evidence: |
1658
+ {
1659
+ "queryCategory": $prop($, 'cdx:osquery:category'),
1660
+ "registrationPath": $firstNonEmpty($prop($, 'path'), $prop($, 'bundle_path')),
1661
+ "targetPath": $firstNonEmpty($prop($, 'program'), $prop($, 'bundle_executable'), $prop($, 'bundle_path'), $prop($, 'path')),
1662
+ "label": $prop($, 'label'),
1663
+ "path": $prop($, 'path'),
1664
+ "bundlePath": $prop($, 'bundle_path'),
1665
+ "bundleExecutable": $prop($, 'bundle_executable'),
1666
+ "program": $prop($, 'program'),
1667
+ "programArguments": $prop($, 'program_arguments'),
1668
+ "teamIdentifier": $prop($, 'cdx:darwin:codesign:teamIdentifier'),
1669
+ "notarizationAssessment": $prop($, 'cdx:darwin:notarization:assessment')
1670
+ }
1671
+
1672
+ - id: OBOM-LNX-020
1673
+ name: "Privileged Linux listener exposed on a non-local interface from writable or unclassified path"
1674
+ description: "Root or service-account listeners bound to all interfaces from user-controlled or unclassified paths are high-signal persistence or runtime-drift indicators."
1675
+ severity: high
1676
+ category: obom-runtime
1677
+ dry-run-support: full
1678
+ condition: |
1679
+ components[
1680
+ $prop($, 'cdx:osquery:category') = 'privileged_listening_ports'
1681
+ and (
1682
+ $safeStr($prop($, 'address')) = '0.0.0.0'
1683
+ or $safeStr($prop($, 'address')) = '::'
1684
+ )
1685
+ and $safeStr($prop($, 'port')) != '22'
1686
+ and $safeStr($prop($, 'port')) != '53'
1687
+ and $safeStr(name) != 'systemd-resolved'
1688
+ and $safeStr(name) != 'avahi-daemon'
1689
+ and $safeStr(name) != 'cupsd'
1690
+ and (
1691
+ $safeStr($prop($, 'package_source_hint')) = 'user-writable-path'
1692
+ or $safeStr($prop($, 'package_source_hint')) = 'unclassified-path'
1693
+ or $contains($lowercase($nullSafeProp($, 'path')), '/tmp/')
1694
+ or $contains($lowercase($nullSafeProp($, 'path')), '/var/tmp/')
1695
+ or $contains($lowercase($nullSafeProp($, 'path')), '/dev/shm/')
1696
+ or $contains($lowercase($nullSafeProp($, 'path')), '/home/')
1697
+ or $contains($lowercase($nullSafeProp($, 'path')), '/run/user/')
1698
+ )
1699
+ ]
1700
+ location: |
1701
+ {
1702
+ "bomRef": $."bom-ref",
1703
+ "purl": purl
1704
+ }
1705
+ message: "Privileged listener '{{ name }}' is reachable on {{ $prop($, 'address') }}:{{ $prop($, 'port') }} from risky path '{{ $firstNonEmpty($prop($, 'path'), name) }}'"
1706
+ mitigation: "Treat the listener path as a high-priority review item, validate package ownership and recent changes, and remove or isolate privileged services sourced from writable or unclassified locations."
1707
+ evidence: |
1708
+ {
1709
+ "account": $prop($, 'account'),
1710
+ "pid": $prop($, 'pid'),
1711
+ "address": $prop($, 'address'),
1712
+ "port": $prop($, 'port'),
1713
+ "path": $prop($, 'path'),
1714
+ "serviceUnit": $prop($, 'service_unit'),
1715
+ "packageSourceHint": $prop($, 'package_source_hint'),
1716
+ "parentCmdline": $prop($, 'parent_cmdline')
1717
+ }
1718
+
1719
+ - id: OBOM-LNX-021
1720
+ name: "Linux APT source uses plaintext HTTP transport"
1721
+ description: "Plain HTTP APT mirrors weaken transport integrity and are often called out in baseline hardening reviews even when package signatures remain enabled."
1722
+ severity: medium
1723
+ category: obom-runtime
1724
+ dry-run-support: full
1725
+ condition: |
1726
+ components[
1727
+ (
1728
+ $prop($, 'cdx:osquery:category') = 'apt_sources'
1729
+ or $prop($, 'cdx:osquery:category') = 'apt_ppa_sources'
1730
+ )
1731
+ and $startsWith($lowercase($safeStr($prop($, 'base_uri'))), 'http://')
1732
+ ]
1733
+ location: |
1734
+ {
1735
+ "bomRef": $."bom-ref",
1736
+ "purl": purl,
1737
+ "file": $prop($, 'source')
1738
+ }
1739
+ message: "APT source '{{ name }}' still uses plaintext HTTP transport: {{ $prop($, 'base_uri') }}"
1740
+ mitigation: "Move the repository to HTTPS or an authenticated local mirror, then confirm the source file and mirror policy match your approved package-trust baseline."
1741
+ evidence: |
1742
+ {
1743
+ "sourceFile": $prop($, 'source'),
1744
+ "baseUri": $prop($, 'base_uri'),
1745
+ "release": $prop($, 'release'),
1746
+ "components": $prop($, 'components'),
1747
+ "maintainer": $prop($, 'maintainer')
1748
+ }
1749
+
1750
+ - id: OBOM-LNX-022
1751
+ name: "Linux authorized_keys entry uses deprecated ssh-rsa algorithm"
1752
+ description: "ssh-rsa authorized_keys entries rely on an older signature algorithm profile and should be reviewed during SSH hardening work."
1753
+ severity: medium
1754
+ category: obom-runtime
1755
+ dry-run-support: full
1756
+ condition: |
1757
+ components[
1758
+ $prop($, 'cdx:osquery:category') = 'authorized_keys_snapshot'
1759
+ and $lowercase($safeStr(version)) = 'ssh-rsa'
1760
+ ]
1761
+ location: |
1762
+ {
1763
+ "bomRef": $."bom-ref",
1764
+ "purl": purl,
1765
+ "file": $prop($, 'key_file')
1766
+ }
1767
+ message: "Authorized key for account '{{ name }}' in '{{ $prop($, 'key_file') }}' still uses deprecated ssh-rsa"
1768
+ mitigation: "Replace the key with ed25519 or a modern RSA/SHA-2 compatible key, then re-review key restrictions and account ownership before retaining access."
1769
+ evidence: |
1770
+ {
1771
+ "account": name,
1772
+ "algorithm": version,
1773
+ "keyFile": $prop($, 'key_file'),
1774
+ "comment": description,
1775
+ "uid": $prop($, 'uid')
1776
+ }