@cyclonedx/cdxgen 12.3.3 → 12.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -25
- package/bin/audit.js +21 -7
- package/bin/cdxgen.js +270 -127
- package/bin/convert.js +34 -15
- package/bin/hbom.js +495 -0
- package/bin/repl.js +592 -37
- package/bin/validate.js +31 -4
- package/bin/verify.js +18 -5
- package/data/README.md +298 -25
- package/data/component-tags.json +6 -0
- package/data/crypto-oid.json +16 -0
- package/data/cyclonedx-2.0-bundled.schema.json +7182 -0
- package/data/predictive-audit-allowlist.json +11 -0
- package/data/queries-darwin.json +12 -1
- package/data/queries-win.json +7 -1
- package/data/queries.json +39 -2
- package/data/rules/ai-agent-governance.yaml +16 -0
- package/data/rules/asar-archives.yaml +150 -0
- package/data/rules/chrome-extensions.yaml +8 -0
- package/data/rules/ci-permissions.yaml +42 -18
- package/data/rules/container-risk.yaml +14 -7
- package/data/rules/dependency-sources.yaml +11 -0
- package/data/rules/hbom-compliance.yaml +325 -0
- package/data/rules/hbom-performance.yaml +307 -0
- package/data/rules/hbom-security.yaml +248 -0
- package/data/rules/host-topology.yaml +165 -0
- package/data/rules/mcp-servers.yaml +18 -3
- package/data/rules/obom-runtime.yaml +907 -22
- package/data/rules/package-integrity.yaml +14 -0
- package/data/rules/rootfs-hardening.yaml +179 -0
- package/data/rules/vscode-extensions.yaml +9 -0
- package/lib/audit/index.js +210 -8
- package/lib/audit/index.poku.js +332 -0
- package/lib/audit/reporters.js +222 -0
- package/lib/audit/targets.js +146 -1
- package/lib/audit/targets.poku.js +186 -0
- package/lib/cli/asar.poku.js +328 -0
- package/lib/cli/index.js +527 -99
- package/lib/cli/index.poku.js +1469 -212
- package/lib/evinser/evinser.js +14 -9
- package/lib/helpers/analyzer.js +1406 -29
- package/lib/helpers/analyzer.poku.js +342 -0
- package/lib/helpers/analyzerScope.js +712 -0
- package/lib/helpers/asarutils.js +1556 -0
- package/lib/helpers/asarutils.poku.js +443 -0
- package/lib/helpers/auditCategories.js +12 -0
- package/lib/helpers/auditCategories.poku.js +32 -0
- package/lib/helpers/bomUtils.js +155 -1
- package/lib/helpers/bomUtils.poku.js +79 -1
- package/lib/helpers/cbomutils.js +271 -1
- package/lib/helpers/cbomutils.poku.js +248 -5
- package/lib/helpers/display.js +291 -1
- package/lib/helpers/display.poku.js +149 -0
- package/lib/helpers/evidenceUtils.js +58 -0
- package/lib/helpers/evidenceUtils.poku.js +54 -0
- package/lib/helpers/exportUtils.js +9 -0
- package/lib/helpers/gtfobins.js +142 -8
- package/lib/helpers/gtfobins.poku.js +24 -1
- package/lib/helpers/hbom.js +710 -0
- package/lib/helpers/hbom.poku.js +496 -0
- package/lib/helpers/hbomAnalysis.js +268 -0
- package/lib/helpers/hbomAnalysis.poku.js +249 -0
- package/lib/helpers/hbomLoader.js +35 -0
- package/lib/helpers/hostTopology.js +803 -0
- package/lib/helpers/hostTopology.poku.js +363 -0
- package/lib/helpers/inventoryStats.js +69 -0
- package/lib/helpers/inventoryStats.poku.js +86 -0
- package/lib/helpers/lolbas.js +19 -1
- package/lib/helpers/lolbas.poku.js +23 -0
- package/lib/helpers/osqueryTransform.js +47 -0
- package/lib/helpers/osqueryTransform.poku.js +47 -0
- package/lib/helpers/plugins.js +350 -0
- package/lib/helpers/plugins.poku.js +57 -0
- package/lib/helpers/protobom.js +209 -45
- package/lib/helpers/protobom.poku.js +183 -5
- package/lib/helpers/protobomLoader.js +43 -0
- package/lib/helpers/protobomLoader.poku.js +31 -0
- package/lib/helpers/remote/dependency-track.js +36 -3
- package/lib/helpers/remote/dependency-track.poku.js +44 -0
- package/lib/helpers/source.js +24 -0
- package/lib/helpers/source.poku.js +32 -0
- package/lib/helpers/utils.js +1438 -93
- package/lib/helpers/utils.poku.js +846 -4
- package/lib/managers/binary.e2e.poku.js +367 -0
- package/lib/managers/binary.js +2293 -353
- package/lib/managers/binary.poku.js +1699 -1
- package/lib/managers/docker.js +201 -79
- package/lib/managers/docker.poku.js +337 -12
- package/lib/server/server.js +4 -28
- package/lib/stages/postgen/annotator.js +38 -0
- package/lib/stages/postgen/annotator.poku.js +107 -1
- package/lib/stages/postgen/auditBom.js +121 -18
- package/lib/stages/postgen/auditBom.poku.js +1366 -31
- package/lib/stages/postgen/hostTopologyAudit.poku.js +186 -0
- package/lib/stages/postgen/postgen.js +406 -8
- package/lib/stages/postgen/postgen.poku.js +484 -0
- package/lib/stages/postgen/ruleEngine.js +116 -0
- package/lib/stages/pregen/envAudit.js +14 -3
- package/lib/validator/bomValidator.js +90 -38
- package/lib/validator/bomValidator.poku.js +90 -0
- package/lib/validator/complianceRules.js +4 -2
- package/lib/validator/index.poku.js +14 -0
- package/package.json +23 -21
- package/types/bin/hbom.d.ts +3 -0
- package/types/bin/hbom.d.ts.map +1 -0
- package/types/bin/repl.d.ts +1 -1
- package/types/bin/repl.d.ts.map +1 -1
- package/types/lib/audit/index.d.ts +44 -0
- package/types/lib/audit/index.d.ts.map +1 -1
- package/types/lib/audit/reporters.d.ts +16 -0
- package/types/lib/audit/reporters.d.ts.map +1 -1
- package/types/lib/audit/targets.d.ts.map +1 -1
- package/types/lib/cli/index.d.ts +16 -0
- package/types/lib/cli/index.d.ts.map +1 -1
- package/types/lib/evinser/evinser.d.ts +4 -0
- package/types/lib/evinser/evinser.d.ts.map +1 -1
- package/types/lib/helpers/analyzer.d.ts +33 -0
- package/types/lib/helpers/analyzer.d.ts.map +1 -1
- package/types/lib/helpers/analyzerScope.d.ts +11 -0
- package/types/lib/helpers/analyzerScope.d.ts.map +1 -0
- package/types/lib/helpers/asarutils.d.ts +34 -0
- package/types/lib/helpers/asarutils.d.ts.map +1 -0
- package/types/lib/helpers/auditCategories.d.ts +5 -0
- package/types/lib/helpers/auditCategories.d.ts.map +1 -1
- package/types/lib/helpers/bomUtils.d.ts +10 -0
- package/types/lib/helpers/bomUtils.d.ts.map +1 -1
- package/types/lib/helpers/cbomutils.d.ts +3 -2
- package/types/lib/helpers/cbomutils.d.ts.map +1 -1
- package/types/lib/helpers/display.d.ts.map +1 -1
- package/types/lib/helpers/evidenceUtils.d.ts +8 -0
- package/types/lib/helpers/evidenceUtils.d.ts.map +1 -0
- package/types/lib/helpers/exportUtils.d.ts.map +1 -1
- package/types/lib/helpers/gtfobins.d.ts +8 -0
- package/types/lib/helpers/gtfobins.d.ts.map +1 -1
- package/types/lib/helpers/hbom.d.ts +49 -0
- package/types/lib/helpers/hbom.d.ts.map +1 -0
- package/types/lib/helpers/hbomAnalysis.d.ts +76 -0
- package/types/lib/helpers/hbomAnalysis.d.ts.map +1 -0
- package/types/lib/helpers/hbomLoader.d.ts +7 -0
- package/types/lib/helpers/hbomLoader.d.ts.map +1 -0
- package/types/lib/helpers/hostTopology.d.ts +12 -0
- package/types/lib/helpers/hostTopology.d.ts.map +1 -0
- package/types/lib/helpers/inventoryStats.d.ts +11 -0
- package/types/lib/helpers/inventoryStats.d.ts.map +1 -0
- package/types/lib/helpers/lolbas.d.ts.map +1 -1
- package/types/lib/helpers/osqueryTransform.d.ts +3 -0
- package/types/lib/helpers/osqueryTransform.d.ts.map +1 -1
- package/types/lib/helpers/plugins.d.ts +58 -0
- package/types/lib/helpers/plugins.d.ts.map +1 -0
- package/types/lib/helpers/protobom.d.ts +5 -4
- package/types/lib/helpers/protobom.d.ts.map +1 -1
- package/types/lib/helpers/protobomLoader.d.ts +17 -0
- package/types/lib/helpers/protobomLoader.d.ts.map +1 -0
- package/types/lib/helpers/remote/dependency-track.d.ts +10 -3
- package/types/lib/helpers/remote/dependency-track.d.ts.map +1 -1
- package/types/lib/helpers/source.d.ts.map +1 -1
- package/types/lib/helpers/utils.d.ts +45 -8
- package/types/lib/helpers/utils.d.ts.map +1 -1
- package/types/lib/managers/binary.d.ts +5 -0
- package/types/lib/managers/binary.d.ts.map +1 -1
- package/types/lib/managers/docker.d.ts.map +1 -1
- package/types/lib/server/server.d.ts +2 -1
- package/types/lib/server/server.d.ts.map +1 -1
- package/types/lib/stages/postgen/annotator.d.ts.map +1 -1
- package/types/lib/stages/postgen/auditBom.d.ts +26 -1
- package/types/lib/stages/postgen/auditBom.d.ts.map +1 -1
- package/types/lib/stages/postgen/postgen.d.ts +2 -1
- package/types/lib/stages/postgen/postgen.d.ts.map +1 -1
- package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -1
- package/types/lib/stages/pregen/envAudit.d.ts.map +1 -1
- package/types/lib/third-party/arborist/lib/node.d.ts +23 -0
- package/types/lib/third-party/arborist/lib/node.d.ts.map +1 -1
- package/types/lib/validator/bomValidator.d.ts.map +1 -1
- package/types/lib/validator/complianceRules.d.ts.map +1 -1
- package/data/spdx-model-v3.0.1.jsonld +0 -15999
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
description: "GitHub Actions referenced by tag/branch in workflows with write permissions pose supply chain risk"
|
|
8
8
|
severity: high
|
|
9
9
|
category: ci-permission
|
|
10
|
+
dry-run-support: full
|
|
10
11
|
attack:
|
|
11
|
-
tactics: [TA0001
|
|
12
|
+
tactics: [TA0001]
|
|
12
13
|
techniques: [T1195.001]
|
|
13
14
|
condition: |
|
|
14
15
|
$auditComponents($)[
|
|
@@ -37,6 +38,7 @@
|
|
|
37
38
|
description: "Workflows or jobs granting id-token:write to third-party actions may enable token exfiltration"
|
|
38
39
|
severity: high
|
|
39
40
|
category: ci-permission
|
|
41
|
+
dry-run-support: full
|
|
40
42
|
attack:
|
|
41
43
|
tactics: [TA0006]
|
|
42
44
|
techniques: [T1528]
|
|
@@ -68,8 +70,9 @@
|
|
|
68
70
|
description: "GitHub Actions pinned to tags (vs SHA) can change behavior unexpectedly if tag is moved"
|
|
69
71
|
severity: medium
|
|
70
72
|
category: ci-permission
|
|
73
|
+
dry-run-support: full
|
|
71
74
|
attack:
|
|
72
|
-
tactics: [TA0001
|
|
75
|
+
tactics: [TA0001]
|
|
73
76
|
techniques: [T1195.001]
|
|
74
77
|
condition: |
|
|
75
78
|
$auditComponents($)[
|
|
@@ -89,6 +92,7 @@
|
|
|
89
92
|
description: "pull_request_target can execute code in the context of the base branch, risking secret exposure"
|
|
90
93
|
severity: medium
|
|
91
94
|
category: ci-permission
|
|
95
|
+
dry-run-support: full
|
|
92
96
|
attack:
|
|
93
97
|
tactics: [TA0001, TA0004]
|
|
94
98
|
condition: |
|
|
@@ -112,8 +116,9 @@
|
|
|
112
116
|
description: "actions/checkout with persist-credentials=true (default) exposes GITHUB_TOKEN to subsequent steps"
|
|
113
117
|
severity: medium
|
|
114
118
|
category: ci-permission
|
|
119
|
+
dry-run-support: full
|
|
115
120
|
attack:
|
|
116
|
-
tactics: [
|
|
121
|
+
tactics: [TA0006]
|
|
117
122
|
techniques: [T1552]
|
|
118
123
|
condition: |
|
|
119
124
|
$auditComponents($)[
|
|
@@ -142,8 +147,9 @@
|
|
|
142
147
|
description: "GitHub Actions cache can be poisoned when used in workflows triggered by untrusted input (e.g., pull_request from forks)"
|
|
143
148
|
severity: high
|
|
144
149
|
category: ci-permission
|
|
150
|
+
dry-run-support: full
|
|
145
151
|
attack:
|
|
146
|
-
tactics: [TA0001
|
|
152
|
+
tactics: [TA0001]
|
|
147
153
|
techniques: [T1195.001]
|
|
148
154
|
condition: |
|
|
149
155
|
$auditComponents($)[
|
|
@@ -180,8 +186,9 @@
|
|
|
180
186
|
description: "Direct interpolation of github.event.* or inputs.* into run: blocks enables command injection"
|
|
181
187
|
severity: critical
|
|
182
188
|
category: ci-permission
|
|
189
|
+
dry-run-support: full
|
|
183
190
|
attack:
|
|
184
|
-
tactics: [TA0002
|
|
191
|
+
tactics: [TA0002]
|
|
185
192
|
techniques: [T1059]
|
|
186
193
|
condition: |
|
|
187
194
|
$auditComponents($)[
|
|
@@ -205,6 +212,7 @@
|
|
|
205
212
|
description: "Triggers like pull_request_target, issue_comment, or workflow_run combined with write permissions enable privilege escalation"
|
|
206
213
|
severity: high
|
|
207
214
|
category: ci-permission
|
|
215
|
+
dry-run-support: full
|
|
208
216
|
attack:
|
|
209
217
|
tactics: [TA0001, TA0004]
|
|
210
218
|
condition: |
|
|
@@ -234,6 +242,7 @@
|
|
|
234
242
|
description: "Hidden Unicode in workflow files can disguise malicious logic, comments, or diffs and should be reviewed before merge"
|
|
235
243
|
severity: medium
|
|
236
244
|
category: ci-permission
|
|
245
|
+
dry-run-support: full
|
|
237
246
|
attack:
|
|
238
247
|
tactics: [TA0005]
|
|
239
248
|
techniques: [T1027]
|
|
@@ -260,8 +269,9 @@
|
|
|
260
269
|
description: "npm and PyPI publishing should prefer trusted publishing or OIDC-backed flows instead of long-lived token secrets or explicit --token arguments"
|
|
261
270
|
severity: medium
|
|
262
271
|
category: ci-permission
|
|
272
|
+
dry-run-support: full
|
|
263
273
|
attack:
|
|
264
|
-
tactics: [TA0006
|
|
274
|
+
tactics: [TA0006]
|
|
265
275
|
techniques: [T1528]
|
|
266
276
|
condition: |
|
|
267
277
|
$auditComponents($)[
|
|
@@ -287,8 +297,9 @@
|
|
|
287
297
|
description: "Reusable workflows invoked from external repositories with secrets: inherit expand the trust boundary and can expose repository credentials"
|
|
288
298
|
severity: high
|
|
289
299
|
category: ci-permission
|
|
300
|
+
dry-run-support: full
|
|
290
301
|
attack:
|
|
291
|
-
tactics: [TA0006
|
|
302
|
+
tactics: [TA0006]
|
|
292
303
|
techniques: [T1528, T1552]
|
|
293
304
|
condition: |
|
|
294
305
|
$auditComponents($)[
|
|
@@ -315,8 +326,9 @@
|
|
|
315
326
|
description: "Reusable workflows referenced by tag or branch can change behavior without review and should be pinned to immutable SHAs"
|
|
316
327
|
severity: medium
|
|
317
328
|
category: ci-permission
|
|
329
|
+
dry-run-support: full
|
|
318
330
|
attack:
|
|
319
|
-
tactics: [TA0001
|
|
331
|
+
tactics: [TA0001]
|
|
320
332
|
techniques: [T1195.001]
|
|
321
333
|
condition: |
|
|
322
334
|
$auditComponents($)[
|
|
@@ -342,6 +354,7 @@
|
|
|
342
354
|
description: "High-risk triggers executing on self-hosted runners can expose internal network access, credentials, and long-lived runner state"
|
|
343
355
|
severity: high
|
|
344
356
|
category: ci-permission
|
|
357
|
+
dry-run-support: full
|
|
345
358
|
attack:
|
|
346
359
|
tactics: [TA0004, TA0008]
|
|
347
360
|
condition: |
|
|
@@ -373,8 +386,9 @@
|
|
|
373
386
|
description: "Writing to GITHUB_ENV, GITHUB_PATH, or GITHUB_OUTPUT in privileged workflows can persist attacker-controlled state across later steps and jobs"
|
|
374
387
|
severity: high
|
|
375
388
|
category: ci-permission
|
|
389
|
+
dry-run-support: full
|
|
376
390
|
attack:
|
|
377
|
-
tactics: [
|
|
391
|
+
tactics: [TA0002]
|
|
378
392
|
techniques: [T1059]
|
|
379
393
|
condition: |
|
|
380
394
|
$auditComponents($)[
|
|
@@ -406,8 +420,9 @@
|
|
|
406
420
|
description: "Run steps that invoke outbound network tools while transmitting secrets, github.token, or OIDC request context are strong exfiltration indicators"
|
|
407
421
|
severity: high
|
|
408
422
|
category: ci-permission
|
|
423
|
+
dry-run-support: full
|
|
409
424
|
attack:
|
|
410
|
-
tactics: [
|
|
425
|
+
tactics: [TA0010]
|
|
411
426
|
techniques: [T1048]
|
|
412
427
|
condition: |
|
|
413
428
|
$auditComponents($)[
|
|
@@ -436,8 +451,9 @@
|
|
|
436
451
|
description: "workflow_call producers that request caller-provided secrets while also holding write or OIDC permissions expand the blast radius across repositories and workflows"
|
|
437
452
|
severity: high
|
|
438
453
|
category: ci-permission
|
|
454
|
+
dry-run-support: full
|
|
439
455
|
attack:
|
|
440
|
-
tactics: [TA0006
|
|
456
|
+
tactics: [TA0006]
|
|
441
457
|
techniques: [T1528, T1552]
|
|
442
458
|
condition: |
|
|
443
459
|
$auditWorkflows($)[
|
|
@@ -468,6 +484,7 @@
|
|
|
468
484
|
description: "workflow_call producers that both accept caller-controlled inputs and emit outputs from privileged execution contexts can propagate unsafe values into downstream trusted jobs"
|
|
469
485
|
severity: medium
|
|
470
486
|
category: ci-permission
|
|
487
|
+
dry-run-support: full
|
|
471
488
|
attack:
|
|
472
489
|
tactics: [TA0003, TA0004]
|
|
473
490
|
condition: |
|
|
@@ -500,8 +517,9 @@
|
|
|
500
517
|
description: "Dispatching workflow_dispatch or repository_dispatch from fork-reachable or privileged jobs can create a lateral-movement path into downstream workflows with broader credentials"
|
|
501
518
|
severity: high
|
|
502
519
|
category: ci-permission
|
|
520
|
+
dry-run-support: full
|
|
503
521
|
attack:
|
|
504
|
-
tactics: [
|
|
522
|
+
tactics: [TA0006]
|
|
505
523
|
techniques: [T1528]
|
|
506
524
|
condition: |
|
|
507
525
|
$auditComponents($)[
|
|
@@ -543,8 +561,9 @@
|
|
|
543
561
|
description: "Dispatch chains that inspect pull_request head-repository or fork context before invoking downstream workflows are strong signals of fork-to-privileged lateral movement"
|
|
544
562
|
severity: critical
|
|
545
563
|
category: ci-permission
|
|
564
|
+
dry-run-support: full
|
|
546
565
|
attack:
|
|
547
|
-
tactics: [
|
|
566
|
+
tactics: [TA0006]
|
|
548
567
|
techniques: [T1528, T1552]
|
|
549
568
|
condition: |
|
|
550
569
|
$auditComponents($)[
|
|
@@ -581,8 +600,9 @@
|
|
|
581
600
|
description: "Checking out github.event.pull_request.head.* repository or ref inside pull_request_target executes untrusted fork code with base-repository privileges"
|
|
582
601
|
severity: critical
|
|
583
602
|
category: ci-permission
|
|
603
|
+
dry-run-support: full
|
|
584
604
|
attack:
|
|
585
|
-
tactics: [TA0001,
|
|
605
|
+
tactics: [TA0001, TA0006]
|
|
586
606
|
techniques: [T1195.001, T1552]
|
|
587
607
|
condition: |
|
|
588
608
|
$auditComponents($)[
|
|
@@ -616,8 +636,9 @@
|
|
|
616
636
|
description: "High-risk GitHub Actions workflows that omit explicit permissions blocks while still performing sensitive operations may rely on repository-default token scopes. This is a review heuristic, not proof of write access."
|
|
617
637
|
severity: medium
|
|
618
638
|
category: ci-permission
|
|
639
|
+
dry-run-support: full
|
|
619
640
|
attack:
|
|
620
|
-
tactics: [
|
|
641
|
+
tactics: [TA0006]
|
|
621
642
|
techniques: [T1528, T1552]
|
|
622
643
|
condition: |
|
|
623
644
|
$auditComponents($)[
|
|
@@ -649,8 +670,9 @@
|
|
|
649
670
|
description: "Explicitly disabling setup-node caching reduces tamper resistance and reviewability when npm dependencies are resolved from remote package distributions"
|
|
650
671
|
severity: medium
|
|
651
672
|
category: ci-permission
|
|
673
|
+
dry-run-support: full
|
|
652
674
|
attack:
|
|
653
|
-
tactics: [
|
|
675
|
+
tactics: [TA0001]
|
|
654
676
|
techniques: [T1195.001]
|
|
655
677
|
condition: |
|
|
656
678
|
$auditComponents($)[
|
|
@@ -706,8 +728,9 @@
|
|
|
706
728
|
description: "Explicitly disabling setup-python caching reduces tamper resistance and reviewability when PyPI dependencies are resolved from remote archives or VCS sources"
|
|
707
729
|
severity: medium
|
|
708
730
|
category: ci-permission
|
|
731
|
+
dry-run-support: full
|
|
709
732
|
attack:
|
|
710
|
-
tactics: [
|
|
733
|
+
tactics: [TA0001]
|
|
711
734
|
techniques: [T1195.001]
|
|
712
735
|
condition: |
|
|
713
736
|
$auditComponents($)[
|
|
@@ -747,8 +770,9 @@
|
|
|
747
770
|
description: "Explicitly disabling Cargo setup caching reduces tamper resistance and reviewability when Cargo manifests rely on git dependencies"
|
|
748
771
|
severity: medium
|
|
749
772
|
category: ci-permission
|
|
773
|
+
dry-run-support: full
|
|
750
774
|
attack:
|
|
751
|
-
tactics: [
|
|
775
|
+
tactics: [TA0001]
|
|
752
776
|
techniques: [T1195.001]
|
|
753
777
|
condition: |
|
|
754
778
|
$auditComponents($)[
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
description: "Known GTFOBins execution helpers become materially riskier when the image keeps the binary setuid or setgid."
|
|
4
4
|
severity: critical
|
|
5
5
|
category: container-risk
|
|
6
|
+
dry-run-support: full
|
|
6
7
|
condition: |
|
|
7
8
|
components[
|
|
8
9
|
$prop($, 'cdx:gtfobins:matched') = 'true'
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
message: "Executable '{{ name }}' at '{{ $prop($, 'SrcFile') }}' combines GTFOBins execution features with setuid/setgid permissions"
|
|
27
28
|
mitigation: "Remove the setuid/setgid bit, replace the image with a slimmer base, and keep container privilege boundaries strict (no host mounts, no privileged mode, no extra capabilities)."
|
|
28
29
|
attack:
|
|
29
|
-
tactics: [TA0004
|
|
30
|
+
tactics: [TA0004]
|
|
30
31
|
techniques: [T1548, T1611]
|
|
31
32
|
evidence: |
|
|
32
33
|
{
|
|
@@ -43,6 +44,7 @@
|
|
|
43
44
|
description: "Container runtime or namespace-management helpers that are already classified as GTFOBins can accelerate container breakout when runtime isolation is weakened."
|
|
44
45
|
severity: critical
|
|
45
46
|
category: container-risk
|
|
47
|
+
dry-run-support: full
|
|
46
48
|
condition: |
|
|
47
49
|
components[
|
|
48
50
|
$prop($, 'cdx:gtfobins:matched') = 'true'
|
|
@@ -62,7 +64,7 @@
|
|
|
62
64
|
message: "Container-escape helper '{{ name }}' is present at '{{ $prop($, 'SrcFile') }}' with elevated execution semantics"
|
|
63
65
|
mitigation: "Remove container runtime and namespace-management tooling from application images, avoid CAP_SYS_ADMIN-like capability grants, and block access to the Docker/containerd sockets."
|
|
64
66
|
attack:
|
|
65
|
-
tactics: [TA0004
|
|
67
|
+
tactics: [TA0004]
|
|
66
68
|
techniques: [T1611]
|
|
67
69
|
evidence: |
|
|
68
70
|
{
|
|
@@ -77,6 +79,7 @@
|
|
|
77
79
|
description: "GTFOBins entries that can load attacker-controlled shared libraries or directly escalate privileges are strong hardening failures in container images."
|
|
78
80
|
severity: high
|
|
79
81
|
category: container-risk
|
|
82
|
+
dry-run-support: full
|
|
80
83
|
condition: |
|
|
81
84
|
components[
|
|
82
85
|
$prop($, 'cdx:gtfobins:matched') = 'true'
|
|
@@ -101,7 +104,7 @@
|
|
|
101
104
|
message: "Binary '{{ name }}' exposes GTFOBins privilege-escalation or library-load behavior in a privileged execution context"
|
|
102
105
|
mitigation: "Remove the helper from the image where possible, strip privileged bits/capabilities, and keep writable mounts away from privileged processes."
|
|
103
106
|
attack:
|
|
104
|
-
tactics: [
|
|
107
|
+
tactics: [TA0002, TA0004, TA0005]
|
|
105
108
|
techniques: [T1574, T1548]
|
|
106
109
|
evidence: |
|
|
107
110
|
{
|
|
@@ -116,6 +119,7 @@
|
|
|
116
119
|
description: "A GTFOBins helper that can read local files or upload data becomes especially dangerous when it also runs with setuid/setgid or other elevated contexts."
|
|
117
120
|
severity: high
|
|
118
121
|
category: container-risk
|
|
122
|
+
dry-run-support: full
|
|
119
123
|
condition: |
|
|
120
124
|
components[
|
|
121
125
|
$prop($, 'cdx:gtfobins:matched') = 'true'
|
|
@@ -140,7 +144,7 @@
|
|
|
140
144
|
message: "Binary '{{ name }}' can read or exfiltrate local data from a privileged execution path"
|
|
141
145
|
mitigation: "Drop privileged bits, keep secrets off the image filesystem, and remove unnecessary upload/file-read helpers from runtime images."
|
|
142
146
|
attack:
|
|
143
|
-
tactics: [
|
|
147
|
+
tactics: [TA0009, TA0010]
|
|
144
148
|
techniques: [T1005, T1041]
|
|
145
149
|
evidence: |
|
|
146
150
|
{
|
|
@@ -155,6 +159,7 @@
|
|
|
155
159
|
description: "Remote-execution-capable GTFOBins helpers under mutable or non-standard image paths often indicate an avoidable attack toolkit or image tampering."
|
|
156
160
|
severity: medium
|
|
157
161
|
category: container-risk
|
|
162
|
+
dry-run-support: full
|
|
158
163
|
condition: |
|
|
159
164
|
components[
|
|
160
165
|
$prop($, 'cdx:gtfobins:matched') = 'true'
|
|
@@ -191,7 +196,7 @@
|
|
|
191
196
|
message: "GTFOBins remote-execution helper '{{ name }}' is present in mutable image path '{{ $prop($, 'SrcFile') }}'"
|
|
192
197
|
mitigation: "Keep runtime images immutable and minimal, move administrative tooling to separate debug images, and investigate how the helper entered the image."
|
|
193
198
|
attack:
|
|
194
|
-
tactics: [
|
|
199
|
+
tactics: [TA0008, TA0011]
|
|
195
200
|
techniques: [T1105, T1570]
|
|
196
201
|
evidence: |
|
|
197
202
|
{
|
|
@@ -206,6 +211,7 @@
|
|
|
206
211
|
description: "Dedicated container or Kubernetes intrusion toolkits such as Peirates, CDK, or DEEPCE should not ship inside production runtime images."
|
|
207
212
|
severity: high
|
|
208
213
|
category: container-risk
|
|
214
|
+
dry-run-support: full
|
|
209
215
|
condition: |
|
|
210
216
|
components[
|
|
211
217
|
$prop($, 'cdx:container:matched') = 'true'
|
|
@@ -220,7 +226,7 @@
|
|
|
220
226
|
message: "Dedicated offensive toolkit '{{ name }}' is present at '{{ $prop($, 'SrcFile') }}'"
|
|
221
227
|
mitigation: "Remove offensive testing binaries from runtime images, rebuild from a minimal trusted base, and keep container debugging or red-team tooling in separate break-glass images."
|
|
222
228
|
attack:
|
|
223
|
-
tactics: [
|
|
229
|
+
tactics: [TA0002, TA0004, TA0006, TA0007]
|
|
224
230
|
techniques: [T1552.007, T1609, T1611, T1613]
|
|
225
231
|
evidence: |
|
|
226
232
|
{
|
|
@@ -237,6 +243,7 @@
|
|
|
237
243
|
description: "Helpers that rely on syscalls blocked by Docker's default seccomp profile become materially riskier when operators use `seccomp=unconfined` or permissive custom profiles."
|
|
238
244
|
severity: medium
|
|
239
245
|
category: container-risk
|
|
246
|
+
dry-run-support: full
|
|
240
247
|
condition: |
|
|
241
248
|
components[
|
|
242
249
|
$prop($, 'cdx:container:matched') = 'true'
|
|
@@ -256,7 +263,7 @@
|
|
|
256
263
|
message: "Seccomp-sensitive escape helper '{{ name }}' is present at '{{ $prop($, 'SrcFile') }}' and depends on syscalls blocked by the Docker default seccomp profile"
|
|
257
264
|
mitigation: "Keep Docker or OCI runtimes on the default seccomp profile, never use `seccomp=unconfined` for app workloads, and review custom profiles so they do not allow namespace or host-escape syscalls without a clear need."
|
|
258
265
|
attack:
|
|
259
|
-
tactics: [TA0004
|
|
266
|
+
tactics: [TA0004]
|
|
260
267
|
techniques: [T1611]
|
|
261
268
|
evidence: |
|
|
262
269
|
{
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
description: "npm packages with install scripts declared from git, URL, or local path sources in the manifest increase supply chain attack surface"
|
|
7
7
|
severity: high
|
|
8
8
|
category: dependency-source
|
|
9
|
+
dry-run-support: full
|
|
9
10
|
condition: |
|
|
10
11
|
components[
|
|
11
12
|
$prop($, 'cdx:npm:hasInstallScript') = 'true'
|
|
@@ -28,6 +29,7 @@
|
|
|
28
29
|
description: "Go modules with local_dir replacements are non-hermetic and may not be reproducible"
|
|
29
30
|
severity: high
|
|
30
31
|
category: dependency-source
|
|
32
|
+
dry-run-support: full
|
|
31
33
|
condition: |
|
|
32
34
|
components[
|
|
33
35
|
$hasProp($, 'cdx:go:local_dir')
|
|
@@ -46,6 +48,7 @@
|
|
|
46
48
|
description: "Swift packages with localCheckoutPath indicate developer-only dependencies not suitable for release"
|
|
47
49
|
severity: high
|
|
48
50
|
category: dependency-source
|
|
51
|
+
dry-run-support: full
|
|
49
52
|
condition: |
|
|
50
53
|
components[
|
|
51
54
|
$hasProp($, 'cdx:swift:localCheckoutPath')
|
|
@@ -64,6 +67,7 @@
|
|
|
64
67
|
description: "Nix dependencies without revision or nar_hash cannot be verified for content integrity"
|
|
65
68
|
severity: high
|
|
66
69
|
category: dependency-source
|
|
70
|
+
dry-run-support: full
|
|
67
71
|
condition: |
|
|
68
72
|
components[
|
|
69
73
|
$startsWith(purl, 'pkg:nix/')
|
|
@@ -88,6 +92,7 @@
|
|
|
88
92
|
description: "Ruby gems sourced from git branches (without revision pin) can change unexpectedly"
|
|
89
93
|
severity: medium
|
|
90
94
|
category: dependency-source
|
|
95
|
+
dry-run-support: full
|
|
91
96
|
condition: |
|
|
92
97
|
components[
|
|
93
98
|
$hasProp($, 'cdx:gem:remoteBranch')
|
|
@@ -108,6 +113,7 @@
|
|
|
108
113
|
description: "PyPI packages from unapproved registries may introduce unvetted code"
|
|
109
114
|
severity: low
|
|
110
115
|
category: dependency-source
|
|
116
|
+
dry-run-support: full
|
|
111
117
|
condition: |
|
|
112
118
|
components[
|
|
113
119
|
$hasProp($, 'cdx:pypi:registry')
|
|
@@ -128,6 +134,7 @@
|
|
|
128
134
|
description: "Cargo git dependencies without revision or tag pinning can change unexpectedly and reduce build reproducibility"
|
|
129
135
|
severity: high
|
|
130
136
|
category: dependency-source
|
|
137
|
+
dry-run-support: full
|
|
131
138
|
condition: |
|
|
132
139
|
components[
|
|
133
140
|
$hasProp($, 'cdx:cargo:git')
|
|
@@ -150,6 +157,7 @@
|
|
|
150
157
|
description: "Cargo path dependencies are local source references that reduce release reproducibility and may bypass registry review controls"
|
|
151
158
|
severity: high
|
|
152
159
|
category: dependency-source
|
|
160
|
+
dry-run-support: full
|
|
153
161
|
condition: |
|
|
154
162
|
components[
|
|
155
163
|
$hasProp($, 'cdx:cargo:path')
|
|
@@ -169,6 +177,7 @@
|
|
|
169
177
|
description: "Collider lock entries that resolve from HTTP origins can be observed or modified in transit before wrap-hash verification occurs"
|
|
170
178
|
severity: medium
|
|
171
179
|
category: dependency-source
|
|
180
|
+
dry-run-support: full
|
|
172
181
|
condition: |
|
|
173
182
|
components[
|
|
174
183
|
$prop($, 'cdx:collider:originScheme') = 'http'
|
|
@@ -188,6 +197,7 @@
|
|
|
188
197
|
description: "Collider lock origin URLs should not carry credentials, query strings, or fragments because those values may embed secrets or unstable signed URLs"
|
|
189
198
|
severity: low
|
|
190
199
|
category: dependency-source
|
|
200
|
+
dry-run-support: full
|
|
191
201
|
condition: |
|
|
192
202
|
components[
|
|
193
203
|
$prop($, 'cdx:collider:originSanitized') = 'true'
|
|
@@ -207,6 +217,7 @@
|
|
|
207
217
|
description: "Python dependencies declared via git, direct URL, or local path in requirements or pyproject files bypass normal registry version mediation"
|
|
208
218
|
severity: high
|
|
209
219
|
category: dependency-source
|
|
220
|
+
dry-run-support: full
|
|
210
221
|
condition: |
|
|
211
222
|
components[
|
|
212
223
|
$hasProp($, 'cdx:pypi:manifestSourceType')
|