@cyclonedx/cdxgen 12.2.1 → 12.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/README.md +239 -90
  2. package/bin/audit.js +191 -0
  3. package/bin/cdxgen.js +513 -167
  4. package/bin/convert.js +99 -0
  5. package/bin/evinse.js +23 -0
  6. package/bin/repl.js +339 -8
  7. package/bin/sign.js +8 -0
  8. package/bin/validate.js +8 -0
  9. package/bin/verify.js +8 -0
  10. package/data/container-knowledge-index.json +125 -0
  11. package/data/gtfobins-index.json +6296 -0
  12. package/data/lolbas-index.json +150 -0
  13. package/data/queries-darwin.json +63 -3
  14. package/data/queries-win.json +45 -3
  15. package/data/queries.json +74 -2
  16. package/data/rules/chrome-extensions.yaml +240 -0
  17. package/data/rules/ci-permissions.yaml +478 -18
  18. package/data/rules/container-risk.yaml +270 -0
  19. package/data/rules/obom-runtime.yaml +891 -0
  20. package/data/rules/package-integrity.yaml +49 -0
  21. package/data/spdx-export.schema.json +6794 -0
  22. package/data/spdx-model-v3.0.1.jsonld +15999 -0
  23. package/lib/audit/index.js +1924 -0
  24. package/lib/audit/index.poku.js +1488 -0
  25. package/lib/audit/progress.js +137 -0
  26. package/lib/audit/progress.poku.js +188 -0
  27. package/lib/audit/reporters.js +618 -0
  28. package/lib/audit/scoring.js +310 -0
  29. package/lib/audit/scoring.poku.js +341 -0
  30. package/lib/audit/targets.js +260 -0
  31. package/lib/audit/targets.poku.js +331 -0
  32. package/lib/cli/index.js +154 -11
  33. package/lib/cli/index.poku.js +251 -0
  34. package/lib/helpers/analyzer.js +446 -2
  35. package/lib/helpers/analyzer.poku.js +72 -1
  36. package/lib/helpers/annotationFormatter.js +49 -0
  37. package/lib/helpers/annotationFormatter.poku.js +44 -0
  38. package/lib/helpers/bomUtils.js +36 -0
  39. package/lib/helpers/bomUtils.poku.js +51 -0
  40. package/lib/helpers/caxa.js +2 -2
  41. package/lib/helpers/chromextutils.js +1153 -0
  42. package/lib/helpers/chromextutils.poku.js +493 -0
  43. package/lib/helpers/ciParsers/githubActions.js +1632 -45
  44. package/lib/helpers/ciParsers/githubActions.poku.js +853 -1
  45. package/lib/helpers/containerRisk.js +186 -0
  46. package/lib/helpers/containerRisk.poku.js +52 -0
  47. package/lib/helpers/display.js +241 -59
  48. package/lib/helpers/display.poku.js +162 -2
  49. package/lib/helpers/exportUtils.js +123 -0
  50. package/lib/helpers/exportUtils.poku.js +60 -0
  51. package/lib/helpers/formulationParsers.js +69 -0
  52. package/lib/helpers/formulationParsers.poku.js +44 -0
  53. package/lib/helpers/gtfobins.js +189 -0
  54. package/lib/helpers/gtfobins.poku.js +49 -0
  55. package/lib/helpers/lolbas.js +267 -0
  56. package/lib/helpers/lolbas.poku.js +39 -0
  57. package/lib/helpers/osqueryTransform.js +84 -0
  58. package/lib/helpers/osqueryTransform.poku.js +49 -0
  59. package/lib/helpers/provenanceUtils.js +193 -0
  60. package/lib/helpers/provenanceUtils.poku.js +145 -0
  61. package/lib/helpers/pylockutils.js +281 -0
  62. package/lib/helpers/pylockutils.poku.js +48 -0
  63. package/lib/helpers/registryProvenance.js +793 -0
  64. package/lib/helpers/registryProvenance.poku.js +452 -0
  65. package/lib/helpers/source.js +1267 -0
  66. package/lib/helpers/source.poku.js +771 -0
  67. package/lib/helpers/spdxUtils.js +97 -0
  68. package/lib/helpers/spdxUtils.poku.js +70 -0
  69. package/lib/helpers/unicodeScan.js +147 -0
  70. package/lib/helpers/unicodeScan.poku.js +45 -0
  71. package/lib/helpers/utils.js +700 -128
  72. package/lib/helpers/utils.poku.js +877 -80
  73. package/lib/managers/binary.js +29 -5
  74. package/lib/managers/docker.js +179 -52
  75. package/lib/managers/docker.poku.js +327 -28
  76. package/lib/managers/oci.js +107 -23
  77. package/lib/managers/oci.poku.js +132 -0
  78. package/lib/server/openapi.yaml +17 -0
  79. package/lib/server/server.js +225 -336
  80. package/lib/server/server.poku.js +16 -10
  81. package/lib/stages/postgen/annotator.js +7 -0
  82. package/lib/stages/postgen/annotator.poku.js +40 -0
  83. package/lib/stages/postgen/auditBom.js +19 -3
  84. package/lib/stages/postgen/auditBom.poku.js +1729 -67
  85. package/lib/stages/postgen/postgen.js +40 -0
  86. package/lib/stages/postgen/postgen.poku.js +47 -0
  87. package/lib/stages/postgen/ruleEngine.js +80 -2
  88. package/lib/stages/postgen/spdxConverter.js +796 -0
  89. package/lib/stages/postgen/spdxConverter.poku.js +341 -0
  90. package/lib/validator/bomValidator.js +232 -0
  91. package/lib/validator/bomValidator.poku.js +70 -0
  92. package/lib/validator/complianceRules.js +70 -7
  93. package/lib/validator/complianceRules.poku.js +30 -0
  94. package/lib/validator/reporters/annotations.js +2 -2
  95. package/lib/validator/reporters/console.js +11 -0
  96. package/lib/validator/reporters.poku.js +13 -0
  97. package/package.json +10 -7
  98. package/types/bin/audit.d.ts +3 -0
  99. package/types/bin/audit.d.ts.map +1 -0
  100. package/types/bin/convert.d.ts +3 -0
  101. package/types/bin/convert.d.ts.map +1 -0
  102. package/types/bin/repl.d.ts.map +1 -1
  103. package/types/lib/audit/index.d.ts +115 -0
  104. package/types/lib/audit/index.d.ts.map +1 -0
  105. package/types/lib/audit/progress.d.ts +27 -0
  106. package/types/lib/audit/progress.d.ts.map +1 -0
  107. package/types/lib/audit/reporters.d.ts +35 -0
  108. package/types/lib/audit/reporters.d.ts.map +1 -0
  109. package/types/lib/audit/scoring.d.ts +35 -0
  110. package/types/lib/audit/scoring.d.ts.map +1 -0
  111. package/types/lib/audit/targets.d.ts +63 -0
  112. package/types/lib/audit/targets.d.ts.map +1 -0
  113. package/types/lib/cli/index.d.ts +8 -0
  114. package/types/lib/cli/index.d.ts.map +1 -1
  115. package/types/lib/helpers/analyzer.d.ts +13 -0
  116. package/types/lib/helpers/analyzer.d.ts.map +1 -1
  117. package/types/lib/helpers/annotationFormatter.d.ts +23 -0
  118. package/types/lib/helpers/annotationFormatter.d.ts.map +1 -0
  119. package/types/lib/helpers/bomUtils.d.ts +5 -0
  120. package/types/lib/helpers/bomUtils.d.ts.map +1 -0
  121. package/types/lib/helpers/chromextutils.d.ts +97 -0
  122. package/types/lib/helpers/chromextutils.d.ts.map +1 -0
  123. package/types/lib/helpers/ciParsers/githubActions.d.ts +3 -8
  124. package/types/lib/helpers/ciParsers/githubActions.d.ts.map +1 -1
  125. package/types/lib/helpers/containerRisk.d.ts +17 -0
  126. package/types/lib/helpers/containerRisk.d.ts.map +1 -0
  127. package/types/lib/helpers/display.d.ts +4 -1
  128. package/types/lib/helpers/display.d.ts.map +1 -1
  129. package/types/lib/helpers/exportUtils.d.ts +40 -0
  130. package/types/lib/helpers/exportUtils.d.ts.map +1 -0
  131. package/types/lib/helpers/formulationParsers.d.ts.map +1 -1
  132. package/types/lib/helpers/gtfobins.d.ts +17 -0
  133. package/types/lib/helpers/gtfobins.d.ts.map +1 -0
  134. package/types/lib/helpers/lolbas.d.ts +16 -0
  135. package/types/lib/helpers/lolbas.d.ts.map +1 -0
  136. package/types/lib/helpers/osqueryTransform.d.ts +7 -0
  137. package/types/lib/helpers/osqueryTransform.d.ts.map +1 -0
  138. package/types/lib/helpers/provenanceUtils.d.ts +90 -0
  139. package/types/lib/helpers/provenanceUtils.d.ts.map +1 -0
  140. package/types/lib/helpers/pylockutils.d.ts +51 -0
  141. package/types/lib/helpers/pylockutils.d.ts.map +1 -0
  142. package/types/lib/helpers/registryProvenance.d.ts +17 -0
  143. package/types/lib/helpers/registryProvenance.d.ts.map +1 -0
  144. package/types/lib/helpers/source.d.ts +141 -0
  145. package/types/lib/helpers/source.d.ts.map +1 -0
  146. package/types/lib/helpers/spdxUtils.d.ts +2 -0
  147. package/types/lib/helpers/spdxUtils.d.ts.map +1 -0
  148. package/types/lib/helpers/unicodeScan.d.ts +46 -0
  149. package/types/lib/helpers/unicodeScan.d.ts.map +1 -0
  150. package/types/lib/helpers/utils.d.ts +29 -11
  151. package/types/lib/helpers/utils.d.ts.map +1 -1
  152. package/types/lib/managers/binary.d.ts.map +1 -1
  153. package/types/lib/managers/docker.d.ts.map +1 -1
  154. package/types/lib/managers/oci.d.ts.map +1 -1
  155. package/types/lib/server/server.d.ts +0 -36
  156. package/types/lib/server/server.d.ts.map +1 -1
  157. package/types/lib/stages/postgen/annotator.d.ts.map +1 -1
  158. package/types/lib/stages/postgen/auditBom.d.ts.map +1 -1
  159. package/types/lib/stages/postgen/postgen.d.ts.map +1 -1
  160. package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -1
  161. package/types/lib/stages/postgen/spdxConverter.d.ts +11 -0
  162. package/types/lib/stages/postgen/spdxConverter.d.ts.map +1 -0
  163. package/types/lib/validator/bomValidator.d.ts +1 -0
  164. package/types/lib/validator/bomValidator.d.ts.map +1 -1
  165. package/types/lib/validator/complianceRules.d.ts.map +1 -1
  166. package/types/lib/validator/reporters/console.d.ts.map +1 -1
  167. package/types/bin/dependencies.d.ts +0 -3
  168. package/types/bin/dependencies.d.ts.map +0 -1
  169. package/types/bin/licenses.d.ts +0 -3
  170. package/types/bin/licenses.d.ts.map +0 -1
@@ -211,6 +211,20 @@ function manual(message, extras = {}) {
211
211
  return { status: "manual", message, ...extras };
212
212
  }
213
213
 
214
+ const CDX_AUDIT_MANUAL_COMMAND = "cdx-audit --bom bom.json --scope required";
215
+
216
+ function buildCdxAuditAssistMitigation(reviewFocus) {
217
+ return `${reviewFocus} To support manual verification, run \`${CDX_AUDIT_MANUAL_COMMAND}\` against the same SBOM and review the resulting repository, workflow, provenance, and publishing findings.`;
218
+ }
219
+
220
+ function buildCdxAuditAssistEvidence(controlId) {
221
+ return {
222
+ reviewMode: "manual-with-cdx-audit",
223
+ standardRef: `SCVS-${controlId}`,
224
+ suggestedCommand: CDX_AUDIT_MANUAL_COMMAND,
225
+ };
226
+ }
227
+
214
228
  /**
215
229
  * Factory for SCVS manual-review rules. These are emitted so that benchmark
216
230
  * reports can accurately reflect per-level coverage even when the rule cannot
@@ -220,9 +234,10 @@ function manual(message, extras = {}) {
220
234
  * @param {string} name
221
235
  * @param {string} description
222
236
  * @param {{ l1: boolean, l2: boolean, l3: boolean }} levels
237
+ * @param {{ mitigation?: string, evidence?: object }} [options]
223
238
  * @returns {object}
224
239
  */
225
- function scvsManual(id, name, description, levels) {
240
+ function scvsManual(id, name, description, levels, options = {}) {
226
241
  const required = [];
227
242
  if (levels.l1) required.push("L1");
228
243
  if (levels.l2) required.push("L2");
@@ -241,7 +256,8 @@ function scvsManual(id, name, description, levels) {
241
256
  manual(
242
257
  `${name} is not automatable from the BOM and requires manual review.`,
243
258
  {
244
- mitigation: description,
259
+ evidence: options.evidence,
260
+ mitigation: options.mitigation || description,
245
261
  },
246
262
  ),
247
263
  };
@@ -546,11 +562,22 @@ const SCVS_RULES = [
546
562
  return pass(`metadata.timestamp present (${ts}).`);
547
563
  },
548
564
  },
549
- scvsManual("2.8", "SBOM is analyzed for risk", "SBOM is analyzed for risk.", {
550
- l1: true,
551
- l2: true,
552
- l3: true,
553
- }),
565
+ scvsManual(
566
+ "2.8",
567
+ "SBOM is analyzed for risk",
568
+ "SBOM is analyzed for risk.",
569
+ {
570
+ l1: true,
571
+ l2: true,
572
+ l3: true,
573
+ },
574
+ {
575
+ evidence: buildCdxAuditAssistEvidence("2.8"),
576
+ mitigation: buildCdxAuditAssistMitigation(
577
+ "Use predictive audit evidence to show how the SBOM is being reviewed for workflow, provenance, and publishing risk.",
578
+ ),
579
+ },
580
+ ),
554
581
  {
555
582
  id: "SCVS-2.9",
556
583
  name: "Complete and accurate inventory",
@@ -838,6 +865,12 @@ const SCVS_RULES = [
838
865
  "Application uses CI build pipeline",
839
866
  "Application uses a continuous integration build pipeline.",
840
867
  { l1: true, l2: true, l3: true },
868
+ {
869
+ evidence: buildCdxAuditAssistEvidence("3.3"),
870
+ mitigation: buildCdxAuditAssistMitigation(
871
+ "Review the resolved repository workflows to confirm a CI build pipeline is present and corresponds to the released package.",
872
+ ),
873
+ },
841
874
  ),
842
875
  scvsManual(
843
876
  "3.4",
@@ -856,6 +889,12 @@ const SCVS_RULES = [
856
889
  "No arbitrary code execution",
857
890
  "Application build pipeline prohibits the execution of arbitrary code outside of the context of a jobs build script.",
858
891
  { l1: false, l2: true, l3: true },
892
+ {
893
+ evidence: buildCdxAuditAssistEvidence("3.6"),
894
+ mitigation: buildCdxAuditAssistMitigation(
895
+ "Review workflow and publishing findings for risky scripts, hidden Unicode, and legacy token-based release steps that may indicate unsafe build execution paths.",
896
+ ),
897
+ },
859
898
  ),
860
899
  scvsManual(
861
900
  "3.7",
@@ -1063,12 +1102,24 @@ const SCVS_RULES = [
1063
1102
  "Version-to-source correlation",
1064
1103
  "Package repository provides a verifiable way of correlating component versions to specific source codes in version control.",
1065
1104
  { l1: false, l2: true, l3: true },
1105
+ {
1106
+ evidence: buildCdxAuditAssistEvidence("4.10"),
1107
+ mitigation: buildCdxAuditAssistMitigation(
1108
+ "Review the resolved repository URL, version mapping, and source correlation details for the component version under review.",
1109
+ ),
1110
+ },
1066
1111
  ),
1067
1112
  scvsManual(
1068
1113
  "4.11",
1069
1114
  "Package repository auditability",
1070
1115
  "Package repository provides auditability when components are updated.",
1071
1116
  { l1: true, l2: true, l3: true },
1117
+ {
1118
+ evidence: buildCdxAuditAssistEvidence("4.11"),
1119
+ mitigation: buildCdxAuditAssistMitigation(
1120
+ "Review provenance, publisher drift, publish timing, and trusted-publishing signals to assess whether package updates are auditable.",
1121
+ ),
1122
+ },
1072
1123
  ),
1073
1124
  scvsManual(
1074
1125
  "4.12",
@@ -1235,12 +1286,24 @@ const SCVS_RULES = [
1235
1286
  "Point of origin verifiable",
1236
1287
  "Point of origin is verifiable for source code and binary components.",
1237
1288
  { l1: false, l2: true, l3: true },
1289
+ {
1290
+ evidence: buildCdxAuditAssistEvidence("6.1"),
1291
+ mitigation: buildCdxAuditAssistMitigation(
1292
+ "Review the resolved repository and registry provenance signals to confirm the package point of origin is verifiable.",
1293
+ ),
1294
+ },
1238
1295
  ),
1239
1296
  scvsManual(
1240
1297
  "6.2",
1241
1298
  "Chain of custody auditable",
1242
1299
  "Chain of custody if auditable for source code and binary components.",
1243
1300
  { l1: false, l2: false, l3: true },
1301
+ {
1302
+ evidence: buildCdxAuditAssistEvidence("6.2"),
1303
+ mitigation: buildCdxAuditAssistMitigation(
1304
+ "Review provenance, publisher identity changes, trusted-publishing status, and source-repository correlation to assess auditable chain-of-custody evidence.",
1305
+ ),
1306
+ },
1244
1307
  ),
1245
1308
  {
1246
1309
  id: "SCVS-6.3",
@@ -282,6 +282,36 @@ describe("SCVS automatable rules on a clean BOM", () => {
282
282
  });
283
283
  });
284
284
 
285
+ describe("SCVS manual controls with predictive audit assistance", () => {
286
+ it("includes cdx-audit guidance for mapped manual-review controls", () => {
287
+ const mappedRuleIds = [
288
+ "SCVS-2.8",
289
+ "SCVS-3.3",
290
+ "SCVS-3.6",
291
+ "SCVS-4.10",
292
+ "SCVS-4.11",
293
+ "SCVS-6.1",
294
+ "SCVS-6.2",
295
+ ];
296
+
297
+ mappedRuleIds.forEach((ruleId) => {
298
+ const rule = getScvsRules().find((entry) => entry.id === ruleId);
299
+ assert.ok(rule, `missing rule ${ruleId}`);
300
+ const result = rule.evaluate(baseBom());
301
+ assert.strictEqual(result.status, "manual");
302
+ assert.match(
303
+ result.mitigation,
304
+ /cdx-audit --bom bom\.json --scope required/,
305
+ );
306
+ assert.strictEqual(
307
+ result.evidence?.suggestedCommand,
308
+ "cdx-audit --bom bom.json --scope required",
309
+ );
310
+ assert.strictEqual(result.evidence?.reviewMode, "manual-with-cdx-audit");
311
+ });
312
+ });
313
+ });
314
+
285
315
  describe("CRA rules", () => {
286
316
  const rules = getCraRules();
287
317
 
@@ -5,10 +5,10 @@
5
5
  * CycloneDX supports the annotation schema from spec version 1.5 onward.
6
6
  */
7
7
 
8
+ import { buildAnnotationText } from "../../helpers/annotationFormatter.js";
8
9
  import { DEBUG_MODE, getTimestamp } from "../../helpers/utils.js";
9
10
 
10
11
  const SUPPORTED_FROM = 1.5;
11
- const CODE_BLOCK = "```";
12
12
 
13
13
  /**
14
14
  * Render a set of findings into CycloneDX annotations.
@@ -81,7 +81,7 @@ export function buildAnnotations(findings, bomJson) {
81
81
  component: cdxgenAnnotator[0],
82
82
  },
83
83
  timestamp,
84
- text: `${f.message}\n${CODE_BLOCK}\n${JSON.stringify(properties)}\n${CODE_BLOCK}`,
84
+ text: buildAnnotationText(f.message, properties),
85
85
  };
86
86
  });
87
87
  }
@@ -144,6 +144,17 @@ export function render(report) {
144
144
  title: `Manual review required (${manual.length})`,
145
145
  }),
146
146
  );
147
+ if (
148
+ manual.some((finding) =>
149
+ finding?.mitigation?.includes(
150
+ "cdx-audit --bom bom.json --scope required",
151
+ ),
152
+ )
153
+ ) {
154
+ pieces.push(
155
+ "Tip: some manual SCVS controls can be supported with predictive audit evidence. Run `cdx-audit --bom bom.json --scope required` against the same SBOM and review the flagged repositories, workflows, provenance, and publishing signals.",
156
+ );
157
+ }
147
158
  }
148
159
  return pieces.filter(Boolean).join("\n");
149
160
  }
@@ -82,6 +82,18 @@ describe("reporter dispatcher", () => {
82
82
  assert.match(out, /SCVS-2\.4/);
83
83
  });
84
84
 
85
+ it("console reporter suggests cdx-audit when manual controls include predictive-audit guidance", () => {
86
+ const report = sampleReport();
87
+ report.findings[1].mitigation =
88
+ "To support manual verification, run `cdx-audit --bom bom.json --scope required` against the same SBOM.";
89
+ const out = render("console", report);
90
+ assert.match(
91
+ out,
92
+ /Tip: some manual SCVS controls can be supported with predictive audit evidence/,
93
+ );
94
+ assert.match(out, /cdx-audit --bom bom\.json --scope required/);
95
+ });
96
+
85
97
  it("json reporter emits stable schema", () => {
86
98
  const out = render("json", sampleReport());
87
99
  const parsed = JSON.parse(out);
@@ -136,6 +148,7 @@ describe("reporter dispatcher", () => {
136
148
  const first = parsed.annotations[0];
137
149
  assert.ok(first.subjects[0].includes(bomJson.serialNumber));
138
150
  assert.ok(first.annotator);
151
+ assert.match(first.text, /\| Property \| Value \|/);
139
152
  });
140
153
 
141
154
  it("annotations reporter skips when spec version is below 1.5", () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyclonedx/cdxgen",
3
- "version": "12.2.1",
3
+ "version": "12.3.0",
4
4
  "description": "Creates CycloneDX Software Bill of Materials (SBOM) from source or container image",
5
5
  "keywords": [
6
6
  "sbom",
@@ -82,6 +82,8 @@
82
82
  "types": "./types/lib/cli/index.d.ts",
83
83
  "bin": {
84
84
  "cbom": "bin/cdxgen.js",
85
+ "cdx-audit": "bin/audit.js",
86
+ "cdx-convert": "bin/convert.js",
85
87
  "cdx-validate": "bin/validate.js",
86
88
  "cdx-verify": "bin/verify.js",
87
89
  "cdx-sign": "bin/sign.js",
@@ -90,7 +92,8 @@
90
92
  "cdxi": "bin/repl.js",
91
93
  "evinse": "bin/evinse.js",
92
94
  "obom": "bin/cdxgen.js",
93
- "saasbom": "bin/cdxgen.js"
95
+ "saasbom": "bin/cdxgen.js",
96
+ "spdxgen": "bin/cdxgen.js"
94
97
  },
95
98
  "files": [
96
99
  "*.js",
@@ -109,7 +112,7 @@
109
112
  "@npmcli/map-workspaces": "5.0.3",
110
113
  "@npmcli/name-from-folder": "4.0.0",
111
114
  "@npmcli/package-json": "7.0.5",
112
- "ajv": "8.18.0",
115
+ "ajv": "8.20.0",
113
116
  "ajv-formats": "3.0.1",
114
117
  "bin-links": "6.0.0",
115
118
  "cheerio": "1.2.0",
@@ -131,7 +134,7 @@
131
134
  "ssri": "13.0.1",
132
135
  "tar": "7.5.13",
133
136
  "treeverse": "3.0.0",
134
- "uuid": "13.0.0",
137
+ "uuid": "14.0.0",
135
138
  "walk-up-path": "4.0.0",
136
139
  "xml-js": "1.6.11",
137
140
  "yaml": "2.8.3",
@@ -139,11 +142,11 @@
139
142
  "yoctocolors": "2.1.2"
140
143
  },
141
144
  "devDependencies": {
142
- "@biomejs/biome": "2.4.12",
145
+ "@biomejs/biome": "2.4.13",
143
146
  "esmock": "2.7.3",
144
- "poku": "4.2.1",
147
+ "poku": "4.3.0",
145
148
  "sinon": "21.1.2",
146
- "typescript": "6.0.2"
149
+ "typescript": "6.0.3"
147
150
  },
148
151
  "optionalDependencies": {
149
152
  "@appthreat/atom": "2.5.2",
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../bin/audit.js"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../bin/convert.js"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../bin/repl.js"],"names":[],"mappings":";AAsEO,kDAsCN"}
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../bin/repl.js"],"names":[],"mappings":";AAsKO,kDAmDN"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Read and validate a CycloneDX BOM file.
3
+ *
4
+ * @param {string} bomPath BOM file path
5
+ * @returns {object} parsed CycloneDX BOM
6
+ */
7
+ export function loadBomFile(bomPath: string): object;
8
+ /**
9
+ * Recursively list JSON files under a BOM directory.
10
+ *
11
+ * @param {string} bomDir directory path
12
+ * @returns {string[]} discovered file paths
13
+ */
14
+ export function listBomFiles(bomDir: string): string[];
15
+ /**
16
+ * Load input BOM files from either a single file or a directory.
17
+ *
18
+ * @param {object} options CLI options
19
+ * @returns {{ source: string, bomJson: object }[]} loaded input BOMs
20
+ */
21
+ export function loadInputBoms(options: object): {
22
+ source: string;
23
+ bomJson: object;
24
+ }[];
25
+ /**
26
+ * Build low-noise provenance-aware contextual findings from the root BOM target.
27
+ *
28
+ * These are intentionally conservative and only fire when there is explicit risk
29
+ * posture already present in the target metadata.
30
+ *
31
+ * @param {object} target audit target
32
+ * @returns {object[]} contextual findings
33
+ */
34
+ export function buildTargetContextFindings(target: object): object[];
35
+ /**
36
+ * Resolve the most specific Python package directory inside a cloned repo.
37
+ *
38
+ * @param {string} cloneDir cloned repository root
39
+ * @param {object} target audit target
40
+ * @returns {{ confidence: string, scanDir: string }} selected directory and confidence
41
+ */
42
+ export function resolvePythonSourceDirectory(cloneDir: string, target: object): {
43
+ confidence: string;
44
+ scanDir: string;
45
+ };
46
+ /**
47
+ * Resolve the most appropriate scan directory for a cloned target repository.
48
+ *
49
+ * @param {string} cloneDir cloned repository root
50
+ * @param {object} target audit target
51
+ * @param {object} resolution repository resolution metadata
52
+ * @returns {{ confidence: string, scanDir: string }} selected directory and confidence
53
+ */
54
+ export function resolveTargetSourceDirectory(cloneDir: string, target: object, resolution: object): {
55
+ confidence: string;
56
+ scanDir: string;
57
+ };
58
+ /**
59
+ * Build shallow predictive findings for suspicious Python packaging files.
60
+ *
61
+ * Phase 1 intentionally focuses on high-signal packaging surfaces (`setup.py`
62
+ * and package `__init__.py`) until deeper Python static analysis is added.
63
+ *
64
+ * @param {string} scanDir cloned repository scan directory
65
+ * @param {object} target audit target
66
+ * @returns {object[]} predictive findings
67
+ */
68
+ export function buildPythonSourceHeuristicFindings(scanDir: string, target: object): object[];
69
+ /**
70
+ * Analyze a single purl target by generating a child SBOM and auditing it.
71
+ *
72
+ * @param {object} target audit target
73
+ * @param {object} options CLI options
74
+ * @returns {Promise<object>} analyzed target result
75
+ */
76
+ export function auditTarget(target: object, options: object): Promise<object>;
77
+ export function groupAuditResults(results: any): any[];
78
+ /**
79
+ * Run the predictive audit flow from one or more already-loaded CycloneDX BOM inputs.
80
+ *
81
+ * @param {{ source: string, bomJson: object }[]} inputBoms loaded CycloneDX BOM objects
82
+ * @param {object} options CLI options
83
+ * @returns {Promise<object>} aggregate audit report
84
+ */
85
+ export function runAuditFromBoms(inputBoms: {
86
+ source: string;
87
+ bomJson: object;
88
+ }[], options: object): Promise<object>;
89
+ /**
90
+ * Run the predictive audit flow from one or more CycloneDX BOM inputs.
91
+ *
92
+ * @param {object} options CLI options
93
+ * @returns {Promise<object>} aggregate audit report
94
+ */
95
+ export function runAudit(options: object): Promise<object>;
96
+ /**
97
+ * Render a report and compute the proper process exit code.
98
+ *
99
+ * @param {object} report aggregate report
100
+ * @param {object} options CLI options
101
+ * @returns {{ exitCode: number, output: string }} rendered output and exit code
102
+ */
103
+ export function finalizeAuditReport(report: object, options: object): {
104
+ exitCode: number;
105
+ output: string;
106
+ };
107
+ /**
108
+ * Build a result file name for user-provided report output paths.
109
+ *
110
+ * @param {object} options CLI options
111
+ * @returns {string | undefined} output file path
112
+ */
113
+ export function defaultOutputFile(options: object): string | undefined;
114
+ export const DEFAULT_AUDIT_CATEGORIES: string[];
115
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/audit/index.js"],"names":[],"mappings":"AAyFA;;;;;GAKG;AACH,qCAHW,MAAM,GACJ,MAAM,CAclB;AAED;;;;;GAKG;AACH,qCAHW,MAAM,GACJ,MAAM,EAAE,CAoBpB;AAED;;;;;GAKG;AACH,uCAHW,MAAM,GACJ;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CA0BjD;AAkbD;;;;;;;;GAQG;AACH,mDAHW,MAAM,GACJ,MAAM,EAAE,CAwXpB;AAgJD;;;;;;GAMG;AACH,uDAJW,MAAM,UACN,MAAM,GACJ;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0CnD;AAED;;;;;;;GAOG;AACH,uDALW,MAAM,UACN,MAAM,cACN,MAAM,GACJ;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuBnD;AAoED;;;;;;;;;GASG;AACH,4DAJW,MAAM,UACN,MAAM,GACJ,MAAM,EAAE,CAkEpB;AAuBD;;;;;;GAMG;AACH,oCAJW,MAAM,WACN,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAgN3B;AAgJD,uDA2BC;AAoBD;;;;;;GAMG;AACH,4CAJW;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,WACrC,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAkF3B;AAED;;;;;GAKG;AACH,kCAHW,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAe3B;AAED;;;;;;GAMG;AACH,4CAJW,MAAM,WACN,MAAM,GACJ;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAmBhD;AAED;;;;;GAKG;AACH,2CAHW,MAAM,GACJ,MAAM,GAAG,SAAS,CAU9B;AAn1DD,gDAIE"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Build a human-readable label for an audit target.
3
+ *
4
+ * @param {object} target audit target
5
+ * @returns {string} formatted target label
6
+ */
7
+ export function formatTargetLabel(target: object): string;
8
+ /**
9
+ * Decide if interactive progress should be shown.
10
+ *
11
+ * @param {object} [options] progress options
12
+ * @returns {boolean} true when spinner-style progress is appropriate
13
+ */
14
+ export function shouldRenderProgress(options?: object): boolean;
15
+ /**
16
+ * Create a dependency-free progress renderer for cdx-audit.
17
+ *
18
+ * Progress is always written to stderr so JSON/stdout reports remain clean.
19
+ *
20
+ * @param {object} [options] progress options
21
+ * @returns {{ onProgress: Function, stop: Function }} progress controller
22
+ */
23
+ export function createProgressTracker(options?: object): {
24
+ onProgress: Function;
25
+ stop: Function;
26
+ };
27
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../lib/audit/progress.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,0CAHW,MAAM,GACJ,MAAM,CAMlB;AAED;;;;;GAKG;AACH,+CAHW,MAAM,GACJ,OAAO,CAWnB;AAED;;;;;;;GAOG;AACH,gDAHW,MAAM,GACJ;IAAE,UAAU,WAAW;IAAC,IAAI,WAAU;CAAE,CAgGpD"}
@@ -0,0 +1,35 @@
1
+ export function renderSarifReport(report: any, options?: {}): string;
2
+ /**
3
+ * Render an audit report as pretty JSON.
4
+ *
5
+ * @param {object} report aggregate report
6
+ * @returns {string} JSON output
7
+ */
8
+ export function renderJsonReport(report: object): string;
9
+ /**
10
+ * Render an audit report for terminal output.
11
+ *
12
+ * @param {object} report aggregate report
13
+ * @param {object} options render options
14
+ * @returns {string} console report text
15
+ */
16
+ export function renderConsoleReport(report: object, options?: object): string;
17
+ /**
18
+ * Render the requested report format.
19
+ *
20
+ * @param {string} reportType format name
21
+ * @param {object} report aggregate report
22
+ * @param {object} options render options
23
+ * @returns {string} rendered report
24
+ */
25
+ export function renderAuditReport(reportType: string, report: object, options?: object): string;
26
+ /**
27
+ * Convert predictive audit results into CycloneDX annotations.
28
+ *
29
+ * @param {object} report aggregate audit report
30
+ * @param {object} bomJson root CycloneDX BOM
31
+ * @param {object} [options] annotation options
32
+ * @returns {object[]} annotations
33
+ */
34
+ export function formatPredictiveAnnotations(report: object, bomJson: object, options?: object): object[];
35
+ //# sourceMappingURL=reporters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporters.d.ts","sourceRoot":"","sources":["../../../lib/audit/reporters.js"],"names":[],"mappings":"AA0ZA,qEAkDC;AAED;;;;;GAKG;AACH,yCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;;GAMG;AACH,4CAJW,MAAM,YACN,MAAM,GACJ,MAAM,CAkClB;AAED;;;;;;;GAOG;AACH,8CALW,MAAM,UACN,MAAM,YACN,MAAM,GACJ,MAAM,CAUlB;AAED;;;;;;;GAOG;AACH,oDALW,MAAM,WACN,MAAM,YACN,MAAM,GACJ,MAAM,EAAE,CAgFpB"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Convert a numeric confidence score into a human readable label.
3
+ *
4
+ * @param {number} confidence confidence score
5
+ * @returns {string} confidence label
6
+ */
7
+ export function confidenceLabel(confidence: number): string;
8
+ /**
9
+ * Check if a severity meets the given threshold.
10
+ *
11
+ * @param {string} severity severity to compare
12
+ * @param {string} threshold threshold severity
13
+ * @returns {boolean} true if severity is at or above threshold
14
+ */
15
+ export function severityMeetsThreshold(severity: string, threshold: string): boolean;
16
+ /**
17
+ * Conservatively score predictive supply-chain risk for a single target.
18
+ *
19
+ * High and critical require corroboration across categories and strong findings,
20
+ * which keeps false positives low.
21
+ *
22
+ * @param {object[]} findings post-generation audit findings
23
+ * @param {object} target target metadata
24
+ * @param {object} context additional scan context
25
+ * @returns {object} conservative risk assessment
26
+ */
27
+ export function scoreTargetRisk(findings: object[], target: object, context?: object): object;
28
+ export namespace SEVERITY_ORDER {
29
+ let none: number;
30
+ let low: number;
31
+ let medium: number;
32
+ let high: number;
33
+ let critical: number;
34
+ }
35
+ //# sourceMappingURL=scoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../lib/audit/scoring.js"],"names":[],"mappings":"AAyDA;;;;;GAKG;AACH,4CAHW,MAAM,GACJ,MAAM,CAUlB;AAED;;;;;;GAMG;AACH,iDAJW,MAAM,aACN,MAAM,GACJ,OAAO,CAMnB;AAED;;;;;;;;;;GAUG;AACH,0CALW,MAAM,EAAE,UACR,MAAM,YACN,MAAM,GACJ,MAAM,CAsNlB"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Determine whether a CycloneDX component scope should be treated as required.
3
+ *
4
+ * Missing scope is treated as required to match the main BOM filtering flow.
5
+ *
6
+ * @param {string | undefined} scope component scope
7
+ * @returns {boolean} true when the component is required for predictive audit selection
8
+ */
9
+ export function isRequiredComponentScope(scope: string | undefined): boolean;
10
+ /**
11
+ * Normalize package names for safe matching and grouping.
12
+ *
13
+ * @param {string | undefined} packageName package name
14
+ * @returns {string} normalized package name
15
+ */
16
+ export function normalizePackageName(packageName: string | undefined): string;
17
+ /**
18
+ * Extract npm and PyPI package-url targets from a CycloneDX BOM.
19
+ *
20
+ * @param {object} bomJson CycloneDX BOM
21
+ * @param {string} sourceName source BOM path or label
22
+ * @param {number | object | undefined} [options] selector options
23
+ * @returns {{ targets: object[], skipped: object[] }} extracted targets and skipped components
24
+ */
25
+ export function extractPurlTargetsFromBom(bomJson: object, sourceName: string, options?: number | object | undefined): {
26
+ targets: object[];
27
+ skipped: object[];
28
+ };
29
+ /**
30
+ * Merge targets across many BOMs by purl.
31
+ *
32
+ * @param {{ source: string, bomJson: object }[]} inputBoms input BOMs
33
+ * @param {number | object | undefined} [options] selector options or a legacy maxTargets value
34
+ * @returns {{
35
+ * skipped: object[],
36
+ * stats: {
37
+ * availableTargets: number,
38
+ * nonRequiredTargets: number,
39
+ * requiredTargets: number,
40
+ * trustedTargets: number,
41
+ * trustedTargetsExcluded: number,
42
+ * truncatedTargets: number,
43
+ * },
44
+ * targets: object[],
45
+ * }} merged targets and skipped components
46
+ */
47
+ export function collectAuditTargets(inputBoms: {
48
+ source: string;
49
+ bomJson: object;
50
+ }[], options?: number | object | undefined): {
51
+ skipped: object[];
52
+ stats: {
53
+ availableTargets: number;
54
+ nonRequiredTargets: number;
55
+ requiredTargets: number;
56
+ trustedTargets: number;
57
+ trustedTargetsExcluded: number;
58
+ truncatedTargets: number;
59
+ };
60
+ targets: object[];
61
+ };
62
+ export const SUPPORTED_PURL_TYPES: Set<string>;
63
+ //# sourceMappingURL=targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../../lib/audit/targets.js"],"names":[],"mappings":"AAqCA;;;;;;;GAOG;AACH,gDAHW,MAAM,GAAG,SAAS,GAChB,OAAO,CAOnB;AAyBD;;;;;GAKG;AACH,kDAHW,MAAM,GAAG,SAAS,GAChB,MAAM,CAOlB;AAED;;;;;;;GAOG;AACH,mDALW,MAAM,cACN,MAAM,YACN,MAAM,GAAG,MAAM,GAAG,SAAS,GACzB;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CA+DpD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,+CAfW;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,YACrC,MAAM,GAAG,MAAM,GAAG,SAAS,GACzB;IACR,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE;QACL,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAkFH;AA7PD,+CAAsD"}
@@ -242,6 +242,14 @@ export function createCsharpBom(path: string, options: Object): Promise<Object |
242
242
  * @returns {Promise<Object>} Promise resolving to BOM object
243
243
  */
244
244
  export function createVscodeExtensionBom(path: string, options: Object): Promise<Object>;
245
+ /**
246
+ * Function to create BOM for installed Chrome and Chromium-based browser extensions.
247
+ *
248
+ * @param {string} path to the project path or a directly provided extension path
249
+ * @param {Object} options Parse options from the cli
250
+ * @returns {Promise<Object>} Promise resolving to BOM object
251
+ */
252
+ export function createChromeExtensionBom(path: string, options: Object): Promise<Object>;
245
253
  /**
246
254
  * Function to create bom object for cryptographic certificate files
247
255
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cli/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cli/index.js"],"names":[],"mappings":"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"}