@cdxgen/cdxgen 13.5.0 → 13.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/bin/cdxgen.js +4 -0
- package/bin/evinse.js +3 -0
- package/bin/validate.js +6 -0
- package/data/license-aliases.json +24 -2
- package/data/remediations.json +124 -0
- package/data/rules/ai-bom.yaml +1 -1
- package/data/rules/brotli-decoder.yaml +107 -0
- package/data/rules/vscode-extensions.yaml +75 -0
- package/data/spdx-license-list.json +121 -7
- package/data/spdx-licenses.json +69 -0
- package/data/spdx.schema.json +845 -2
- package/lib/cli/bomAssembly.js +92 -3
- package/lib/cli/index.js +108 -1
- package/lib/cli/jsBom.js +153 -64
- package/lib/cli/jvmBom.js +237 -46
- package/lib/cli/managedBom.js +142 -16
- package/lib/cli/nativeBom.js +42 -5
- package/lib/core/boundedFile.js +344 -0
- package/lib/core/brotliProbe.js +182 -0
- package/lib/core/env.js +8 -0
- package/lib/core/fs.js +12 -0
- package/lib/core/httpClient.js +98 -1
- package/lib/core/lockPaths.js +38 -0
- package/lib/core/paths.js +24 -1
- package/lib/core/processTree.js +5 -0
- package/lib/core/toolRegistry.js +170 -0
- package/lib/ecosystems/cppEvidence.js +263 -106
- package/lib/ecosystems/cppIncludeResolver.js +16 -5
- package/lib/ecosystems/ecosystems.js +25 -10
- package/lib/ecosystems/gemHostProbe.js +301 -0
- package/lib/ecosystems/gradleutils.js +828 -224
- package/lib/ecosystems/parsers-bazel.js +107 -6
- package/lib/ecosystems/parsers-js.js +505 -22
- package/lib/ecosystems/parsers-misc.js +209 -20
- package/lib/ecosystems/parsers-python.js +89 -2
- package/lib/ecosystems/pythonutils.js +128 -2
- package/lib/ecosystems/rubyutils.js +538 -31
- package/lib/ecosystems/scalacliutils.js +2 -0
- package/lib/ecosystems/scalasem.js +796 -151
- package/lib/ecosystems/vendoredCode.js +237 -3
- package/lib/ecosystems/venvProbe.js +360 -0
- package/lib/evinser/evinser.js +346 -43
- package/lib/helpers/agenticToolutils.js +413 -93
- package/lib/helpers/vsixutils.js +1574 -315
- package/lib/inventory/atomUtils.js +77 -0
- package/lib/inventory/brotliDecoder.js +142 -0
- package/lib/inventory/buildToolRateLimit.js +1 -1
- package/lib/inventory/cbomutils.js +56 -7
- package/lib/inventory/deps.js +35 -0
- package/lib/inventory/dosai.js +139 -5
- package/lib/inventory/dotnetRuntime.js +217 -0
- package/lib/inventory/envcontext.js +307 -13
- package/lib/inventory/evidenceUtils.js +11 -0
- package/lib/inventory/fetchBatch.js +1 -1
- package/lib/inventory/formulationParsers.js +31 -3
- package/lib/inventory/gtfobins.js +13 -0
- package/lib/inventory/hostRuntimeProbe.js +686 -0
- package/lib/inventory/jvmLocalRepos.js +9 -2
- package/lib/inventory/jvmToolEnv.js +29 -0
- package/lib/inventory/licenseEnhancer.js +12 -0
- package/lib/inventory/mavenCentralMirror.js +534 -0
- package/lib/inventory/nodeBuildInfo.js +218 -0
- package/lib/inventory/nodeHostProbe.js +202 -0
- package/lib/inventory/osPackageResolver.js +182 -0
- package/lib/inventory/phpBuildInfo.js +10 -59
- package/lib/inventory/phpHostProbe.js +32 -488
- package/lib/inventory/rubyBuildInfo.js +972 -0
- package/lib/inventory/rubyHostProbe.js +218 -0
- package/lib/inventory/scalaCoords.js +4 -3
- package/lib/inventory/scalaDedupe.js +440 -0
- package/lib/inventory/source.js +49 -2
- package/lib/managers/binary.js +337 -3
- package/lib/managers/docker.js +79 -0
- package/lib/parsers/largeJson.js +28 -11
- package/lib/parsers/vscodeExtensionId.js +183 -0
- package/lib/server/server.js +12 -1
- package/lib/stages/postgen/ruleEngine.js +13 -5
- package/lib/stages/pregen/envAudit.js +1 -0
- package/lib/stages/pregen/pregen.js +114 -57
- package/lib/validator/bomValidator.js +6 -1
- package/lib/validator/generated/validate-1.6.mjs +1 -1
- package/lib/validator/generated/validate-1.7.mjs +1 -1
- package/lib/validator/generated/validate-2.0.mjs +1 -1
- package/lib/validator/index.js +1 -1
- package/package.json +3 -2
- package/types/lib/cli/bomAssembly.d.ts +13 -1
- package/types/lib/cli/bomAssembly.d.ts.map +1 -1
- package/types/lib/cli/index.d.ts.map +1 -1
- package/types/lib/cli/jsBom.d.ts +1 -17
- package/types/lib/cli/jsBom.d.ts.map +1 -1
- package/types/lib/cli/jvmBom.d.ts.map +1 -1
- package/types/lib/cli/managedBom.d.ts.map +1 -1
- package/types/lib/cli/nativeBom.d.ts.map +1 -1
- package/types/lib/core/boundedFile.d.ts +70 -0
- package/types/lib/core/boundedFile.d.ts.map +1 -0
- package/types/lib/core/brotliProbe.d.ts +37 -0
- package/types/lib/core/brotliProbe.d.ts.map +1 -0
- package/types/lib/core/env.d.ts +4 -0
- package/types/lib/core/env.d.ts.map +1 -1
- package/types/lib/core/fs.d.ts.map +1 -1
- package/types/lib/core/httpClient.d.ts +24 -0
- package/types/lib/core/httpClient.d.ts.map +1 -1
- package/types/lib/core/lockPaths.d.ts +19 -0
- package/types/lib/core/lockPaths.d.ts.map +1 -0
- package/types/lib/core/processTree.d.ts +2 -0
- package/types/lib/core/processTree.d.ts.map +1 -1
- package/types/lib/core/toolRegistry.d.ts +36 -0
- package/types/lib/core/toolRegistry.d.ts.map +1 -0
- package/types/lib/ecosystems/cppEvidence.d.ts +40 -13
- package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -1
- package/types/lib/ecosystems/cppIncludeResolver.d.ts +2 -1
- package/types/lib/ecosystems/cppIncludeResolver.d.ts.map +1 -1
- package/types/lib/ecosystems/ecosystems.d.ts.map +1 -1
- package/types/lib/ecosystems/gemHostProbe.d.ts +28 -0
- package/types/lib/ecosystems/gemHostProbe.d.ts.map +1 -0
- package/types/lib/ecosystems/gradleutils.d.ts +47 -13
- package/types/lib/ecosystems/gradleutils.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-bazel.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-js.d.ts +17 -20
- package/types/lib/ecosystems/parsers-js.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-misc.d.ts +19 -0
- package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-python.d.ts +10 -0
- package/types/lib/ecosystems/parsers-python.d.ts.map +1 -1
- package/types/lib/ecosystems/pythonutils.d.ts +20 -2
- package/types/lib/ecosystems/pythonutils.d.ts.map +1 -1
- package/types/lib/ecosystems/rubyutils.d.ts +144 -12
- package/types/lib/ecosystems/rubyutils.d.ts.map +1 -1
- package/types/lib/ecosystems/scalacliutils.d.ts.map +1 -1
- package/types/lib/ecosystems/vendoredCode.d.ts +26 -0
- package/types/lib/ecosystems/vendoredCode.d.ts.map +1 -1
- package/types/lib/ecosystems/venvProbe.d.ts +40 -0
- package/types/lib/ecosystems/venvProbe.d.ts.map +1 -0
- package/types/lib/evinser/evinser.d.ts +63 -8
- package/types/lib/evinser/evinser.d.ts.map +1 -1
- package/types/lib/inventory/atomUtils.d.ts +19 -0
- package/types/lib/inventory/atomUtils.d.ts.map +1 -1
- package/types/lib/inventory/brotliDecoder.d.ts +58 -0
- package/types/lib/inventory/brotliDecoder.d.ts.map +1 -0
- package/types/lib/inventory/cbomutils.d.ts +17 -0
- package/types/lib/inventory/cbomutils.d.ts.map +1 -1
- package/types/lib/inventory/deps.d.ts.map +1 -1
- package/types/lib/inventory/dosai.d.ts +17 -1
- package/types/lib/inventory/dosai.d.ts.map +1 -1
- package/types/lib/inventory/dotnetRuntime.d.ts +44 -0
- package/types/lib/inventory/dotnetRuntime.d.ts.map +1 -0
- package/types/lib/inventory/envcontext.d.ts +52 -6
- package/types/lib/inventory/envcontext.d.ts.map +1 -1
- package/types/lib/inventory/evidenceUtils.d.ts.map +1 -1
- package/types/lib/inventory/formulationParsers.d.ts.map +1 -1
- package/types/lib/inventory/gtfobins.d.ts.map +1 -1
- package/types/lib/inventory/hostRuntimeProbe.d.ts +44 -0
- package/types/lib/inventory/hostRuntimeProbe.d.ts.map +1 -0
- package/types/lib/inventory/jvmToolEnv.d.ts +12 -0
- package/types/lib/inventory/jvmToolEnv.d.ts.map +1 -1
- package/types/lib/inventory/licenseEnhancer.d.ts.map +1 -1
- package/types/lib/inventory/mavenCentralMirror.d.ts +170 -0
- package/types/lib/inventory/mavenCentralMirror.d.ts.map +1 -0
- package/types/lib/inventory/nodeBuildInfo.d.ts +95 -0
- package/types/lib/inventory/nodeBuildInfo.d.ts.map +1 -0
- package/types/lib/inventory/nodeHostProbe.d.ts +15 -0
- package/types/lib/inventory/nodeHostProbe.d.ts.map +1 -0
- package/types/lib/inventory/osPackageResolver.d.ts +38 -0
- package/types/lib/inventory/osPackageResolver.d.ts.map +1 -1
- package/types/lib/inventory/phpBuildInfo.d.ts.map +1 -1
- package/types/lib/inventory/phpHostProbe.d.ts.map +1 -1
- package/types/lib/inventory/rubyBuildInfo.d.ts +271 -0
- package/types/lib/inventory/rubyBuildInfo.d.ts.map +1 -0
- package/types/lib/inventory/rubyHostProbe.d.ts +47 -0
- package/types/lib/inventory/rubyHostProbe.d.ts.map +1 -0
- package/types/lib/inventory/source.d.ts +10 -0
- package/types/lib/inventory/source.d.ts.map +1 -1
- package/types/lib/managers/binary.d.ts.map +1 -1
- package/types/lib/managers/docker.d.ts +12 -0
- package/types/lib/managers/docker.d.ts.map +1 -1
- package/types/lib/parsers/largeJson.d.ts +4 -3
- package/types/lib/parsers/largeJson.d.ts.map +1 -1
- package/types/lib/server/server.d.ts.map +1 -1
- package/types/lib/stages/pregen/envAudit.d.ts.map +1 -1
- package/types/lib/stages/pregen/pregen.d.ts +12 -8
- package/types/lib/stages/pregen/pregen.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -216,7 +216,7 @@ Common asset names:
|
|
|
216
216
|
#### Linux
|
|
217
217
|
|
|
218
218
|
```bash
|
|
219
|
-
VERSION="v13.
|
|
219
|
+
VERSION="v13.6.0"
|
|
220
220
|
ASSET="cdx-audit-linux-amd64"
|
|
221
221
|
BASE_URL="https://github.com/cdxgen/cdxgen/releases/download/${VERSION}"
|
|
222
222
|
|
|
@@ -230,7 +230,7 @@ chmod +x "${ASSET}"
|
|
|
230
230
|
#### macOS
|
|
231
231
|
|
|
232
232
|
```bash
|
|
233
|
-
VERSION="v13.
|
|
233
|
+
VERSION="v13.6.0"
|
|
234
234
|
ASSET="cdx-audit-darwin-arm64"
|
|
235
235
|
BASE_URL="https://github.com/cdxgen/cdxgen/releases/download/${VERSION}"
|
|
236
236
|
|
|
@@ -244,7 +244,7 @@ chmod +x "${ASSET}"
|
|
|
244
244
|
#### Windows (PowerShell)
|
|
245
245
|
|
|
246
246
|
```powershell
|
|
247
|
-
$Version = "v13.
|
|
247
|
+
$Version = "v13.6.0"
|
|
248
248
|
$Asset = "cdx-audit-windows-amd64.exe"
|
|
249
249
|
$BaseUrl = "https://github.com/cdxgen/cdxgen/releases/download/$Version"
|
|
250
250
|
|
|
@@ -269,7 +269,7 @@ steps:
|
|
|
269
269
|
env:
|
|
270
270
|
GH_TOKEN: ${{ github.token }}
|
|
271
271
|
run: |
|
|
272
|
-
gh release download v13.
|
|
272
|
+
gh release download v13.6.0 \
|
|
273
273
|
--repo cdxgen/cdxgen \
|
|
274
274
|
--pattern 'cdx-audit-linux-amd64' \
|
|
275
275
|
--pattern 'cdx-audit-linux-amd64.sha256'
|
|
@@ -296,7 +296,7 @@ winget install cdxgen
|
|
|
296
296
|
|
|
297
297
|
You can also use the cdxgen container image with node, deno, or bun runtime versions.
|
|
298
298
|
|
|
299
|
-
The default version uses Node.js
|
|
299
|
+
The default version uses Node.js 26
|
|
300
300
|
|
|
301
301
|
```bash
|
|
302
302
|
docker run --rm -e CDXGEN_DEBUG_MODE=debug -v /tmp:/tmp -v $(pwd):/app:rw -t ghcr.io/cdxgen/cdxgen:master -r /app -o /app/bom.json
|
|
@@ -337,7 +337,7 @@ npm install -g @cdxgen/cdxgen --ignore-scripts --min-release-age=2
|
|
|
337
337
|
**pnpm**:
|
|
338
338
|
|
|
339
339
|
```shell
|
|
340
|
-
pnpm add -g @cdxgen/cdxgen --
|
|
340
|
+
pnpm add -g @cdxgen/cdxgen --ignore-scripts --config.minimum-release-age=2880
|
|
341
341
|
```
|
|
342
342
|
|
|
343
343
|
**bun**:
|
package/bin/cdxgen.js
CHANGED
|
@@ -490,6 +490,10 @@ const args = _yargs
|
|
|
490
490
|
description: "Path for the usages slices file created by atom.",
|
|
491
491
|
hidden: true,
|
|
492
492
|
})
|
|
493
|
+
.option("callsites-slices-file", {
|
|
494
|
+
description: "Path for the callsites slices file created by atom.",
|
|
495
|
+
hidden: true,
|
|
496
|
+
})
|
|
493
497
|
.option("data-flow-slices-file", {
|
|
494
498
|
description: "Path for the data-flow slices file created by atom.",
|
|
495
499
|
hidden: true,
|
package/bin/evinse.js
CHANGED
|
@@ -269,6 +269,9 @@ const args = yargs(hideBin(process.argv))
|
|
|
269
269
|
description: "Use an existing usages slices file.",
|
|
270
270
|
default: "usages.slices.json",
|
|
271
271
|
})
|
|
272
|
+
.option("callsites-slices-file", {
|
|
273
|
+
description: "Use an existing callsites slices file (JS/TS).",
|
|
274
|
+
})
|
|
272
275
|
.option("scalasem-command", {
|
|
273
276
|
description:
|
|
274
277
|
"Use a specific scalasem script for Scala evidence analysis. Defaults to SCALASEM_CMD.",
|
package/bin/validate.js
CHANGED
|
@@ -19,6 +19,7 @@ import process from "node:process";
|
|
|
19
19
|
import yargs from "yargs";
|
|
20
20
|
import { hideBin } from "yargs/helpers";
|
|
21
21
|
|
|
22
|
+
import { installConsoleShim, restoreConsole } from "../lib/core/ui.js";
|
|
22
23
|
import {
|
|
23
24
|
dirNameStr,
|
|
24
25
|
retrieveCdxgenVersion,
|
|
@@ -144,6 +145,11 @@ const args = _yargs
|
|
|
144
145
|
.help()
|
|
145
146
|
.wrap(Math.min(120, yargs().terminalWidth())).argv;
|
|
146
147
|
|
|
148
|
+
// stdout carries the report and nothing else; messages from the validators
|
|
149
|
+
// go to the diagnostic stream so `-r json` and `-r sarif` stay parseable.
|
|
150
|
+
installConsoleShim();
|
|
151
|
+
process.once("exit", restoreConsole);
|
|
152
|
+
|
|
147
153
|
/**
|
|
148
154
|
* Loads the BOM. When signatures are verified, the text must also pass
|
|
149
155
|
* parseStrictJson(), and `strictError` explains why it did not.
|
|
@@ -18,8 +18,6 @@
|
|
|
18
18
|
"httpsopensourceorglicenseapache20": "Apache-2.0",
|
|
19
19
|
"httpwwwapacheorglicenseslicense20html": "Apache-2.0",
|
|
20
20
|
"zeroclausebsd": "0BSD",
|
|
21
|
-
"newbsdlicense": "BSD-3-Clause",
|
|
22
|
-
"newbsd": "BSD-3-Clause",
|
|
23
21
|
"bsd2clause": "BSD-2-Clause",
|
|
24
22
|
"bsd2clauselicense": "BSD-2-Clause",
|
|
25
23
|
"thebsd2clauselicense": "BSD-2-Clause",
|
|
@@ -30,11 +28,13 @@
|
|
|
30
28
|
"thebsd3clauselicense": "BSD-3-Clause",
|
|
31
29
|
"bsd3clauseneworrevisedlicensebsd3clause": "BSD-3-Clause",
|
|
32
30
|
"eclipsedistributionlicensenewbsdlicense": "BSD-3-Clause",
|
|
31
|
+
"newbsdlicense": "BSD-3-Clause",
|
|
33
32
|
"modifiedbsdlicense": "BSD-3-Clause",
|
|
34
33
|
"revisedbsd": "BSD-3-Clause",
|
|
35
34
|
"revisedbsdlicense": "BSD-3-Clause",
|
|
36
35
|
"thenewbsdlicense": "BSD-3-Clause",
|
|
37
36
|
"3clausebsdlicense": "BSD-3-Clause",
|
|
37
|
+
"newbsd": "BSD-3-Clause",
|
|
38
38
|
"bsd4clause": "BSD-4-Clause",
|
|
39
39
|
"bsd4clauselicense": "BSD-4-Clause",
|
|
40
40
|
"thebsd4clauselicense": "BSD-4-Clause",
|
|
@@ -258,6 +258,8 @@
|
|
|
258
258
|
"aswfdigitalassetslicenseversion10": "ASWF-Digital-Assets-1.0",
|
|
259
259
|
"aswfdigitalassets11": "ASWF-Digital-Assets-1.1",
|
|
260
260
|
"aswfdigitalassetslicense11": "ASWF-Digital-Assets-1.1",
|
|
261
|
+
"atcgame": "atc-game",
|
|
262
|
+
"atcgamelicense": "atc-game",
|
|
261
263
|
"baekmuk": "Baekmuk",
|
|
262
264
|
"baekmuklicense": "Baekmuk",
|
|
263
265
|
"bahyph": "Bahyph",
|
|
@@ -309,6 +311,8 @@
|
|
|
309
311
|
"bsd2clausepluspatentlicense": "BSD-2-Clause-Patent",
|
|
310
312
|
"bsd2clausepkgconfdisclaimer": "BSD-2-Clause-pkgconf-disclaimer",
|
|
311
313
|
"bsd2clausepkgconfdisclaimervariant": "BSD-2-Clause-pkgconf-disclaimer",
|
|
314
|
+
"bsd2clauseposunchanged": "BSD-2-Clause-pos-unchanged",
|
|
315
|
+
"bsd2clausepositionunchangedvariant": "BSD-2-Clause-pos-unchanged",
|
|
312
316
|
"bsd2clauseviews": "BSD-2-Clause-Views",
|
|
313
317
|
"bsd2clausewithviewssentence": "BSD-2-Clause-Views",
|
|
314
318
|
"bsd3clauseneworrevisedlicense": "BSD-3-Clause",
|
|
@@ -331,6 +335,8 @@
|
|
|
331
335
|
"bsd3clausenonuclearwarranty": "BSD-3-Clause-No-Nuclear-Warranty",
|
|
332
336
|
"bsd3clauseopenmpi": "BSD-3-Clause-Open-MPI",
|
|
333
337
|
"bsd3clauseopenmpivariant": "BSD-3-Clause-Open-MPI",
|
|
338
|
+
"bsd3clauseopenwebui": "BSD-3-Clause-OpenWebUI",
|
|
339
|
+
"bsd3clauseopenwebuivariant": "BSD-3-Clause-OpenWebUI",
|
|
334
340
|
"bsd3clausesun": "BSD-3-Clause-Sun",
|
|
335
341
|
"bsd3clausesunmicrosystems": "BSD-3-Clause-Sun",
|
|
336
342
|
"bsd3clausetso": "BSD-3-Clause-Tso",
|
|
@@ -345,6 +351,7 @@
|
|
|
345
351
|
"bsd43tahoelicense": "BSD-4.3TAHOE",
|
|
346
352
|
"bsdadvertisingacknowledgement": "BSD-Advertising-Acknowledgement",
|
|
347
353
|
"bsdadvertisingacknowledgementlicense": "BSD-Advertising-Acknowledgement",
|
|
354
|
+
"bsdasktoendorse": "BSD-ask-to-endorse",
|
|
348
355
|
"bsdattributionhpnddisclaimer": "BSD-Attribution-HPND-disclaimer",
|
|
349
356
|
"bsdwithattributionandhpnddisclaimer": "BSD-Attribution-HPND-disclaimer",
|
|
350
357
|
"bsdinfernonettverk": "BSD-Inferno-Nettverk",
|
|
@@ -352,10 +359,14 @@
|
|
|
352
359
|
"bsdmarkmodificationslicense": "BSD-Mark-Modifications",
|
|
353
360
|
"bsdprotection": "BSD-Protection",
|
|
354
361
|
"bsdprotectionlicense": "BSD-Protection",
|
|
362
|
+
"bsdsourcealtgpl": "BSD-Source-alt-GPL",
|
|
363
|
+
"bsdsourcecodeattributiongplalternative": "BSD-Source-alt-GPL",
|
|
355
364
|
"bsdsourcebeginningfile": "BSD-Source-beginning-file",
|
|
356
365
|
"bsdsourcecodeattributionbeginningoffilevariant": "BSD-Source-beginning-file",
|
|
357
366
|
"bsdsourcecode": "BSD-Source-Code",
|
|
358
367
|
"bsdsourcecodeattribution": "BSD-Source-Code",
|
|
368
|
+
"bsdsourcecodenodisclaimer": "BSD-Source-Code-no-disclaimer",
|
|
369
|
+
"bsdsourcecodeattributionnodisclaimer": "BSD-Source-Code-no-disclaimer",
|
|
359
370
|
"bsdsystemics": "BSD-Systemics",
|
|
360
371
|
"systemicsbsdvariantlicense": "BSD-Systemics",
|
|
361
372
|
"bsdsystemicsw3works": "BSD-Systemics-W3Works",
|
|
@@ -364,6 +375,8 @@
|
|
|
364
375
|
"boostsoftwarelicense10": "BSL-1.0",
|
|
365
376
|
"buddy": "Buddy",
|
|
366
377
|
"buddylicense": "Buddy",
|
|
378
|
+
"bugroff": "Bugroff",
|
|
379
|
+
"bugrofflicense": "Bugroff",
|
|
367
380
|
"busl11": "BUSL-1.1",
|
|
368
381
|
"businesssourcelicense11": "BUSL-1.1",
|
|
369
382
|
"bzip2105": "bzip2-1.0.6",
|
|
@@ -420,6 +433,8 @@
|
|
|
420
433
|
"creativecommonsattributionnoncommercial30unported": "CC-BY-NC-3.0",
|
|
421
434
|
"ccbync30de": "CC-BY-NC-3.0-DE",
|
|
422
435
|
"creativecommonsattributionnoncommercial30germany": "CC-BY-NC-3.0-DE",
|
|
436
|
+
"ccbync30igo": "CC-BY-NC-3.0-IGO",
|
|
437
|
+
"creativecommonsattributionnoncommercial30igo": "CC-BY-NC-3.0-IGO",
|
|
423
438
|
"ccbync40": "CC-BY-NC-4.0",
|
|
424
439
|
"creativecommonsattributionnoncommercial40international": "CC-BY-NC-4.0",
|
|
425
440
|
"ccbyncnd10": "CC-BY-NC-ND-1.0",
|
|
@@ -657,6 +672,8 @@
|
|
|
657
672
|
"fuzzybitmaplicense": "FBM",
|
|
658
673
|
"fdkaac": "FDK-AAC",
|
|
659
674
|
"fraunhoferfdkaaccodeclibrary": "FDK-AAC",
|
|
675
|
+
"fdkmpegh": "FDK-MPEG-H",
|
|
676
|
+
"fraunhoferfdkmpeghsoftware": "FDK-MPEG-H",
|
|
660
677
|
"fergusontwofish": "Ferguson-Twofish",
|
|
661
678
|
"fergusontwofishlicense": "Ferguson-Twofish",
|
|
662
679
|
"frameworx10": "Frameworx-1.0",
|
|
@@ -795,6 +812,8 @@
|
|
|
795
812
|
"hidapilicense": "HIDAPI",
|
|
796
813
|
"hippocratic21": "Hippocratic-2.1",
|
|
797
814
|
"hippocraticlicense21": "Hippocratic-2.1",
|
|
815
|
+
"hippocratic30core": "Hippocratic-3.0-core",
|
|
816
|
+
"hippocraticlicense30": "Hippocratic-3.0-core",
|
|
798
817
|
"hp1986": "HP-1986",
|
|
799
818
|
"hewlettpackard1986license": "HP-1986",
|
|
800
819
|
"hp1989": "HP-1989",
|
|
@@ -873,6 +892,8 @@
|
|
|
873
892
|
"imlib2license": "Imlib2",
|
|
874
893
|
"infozip": "Info-ZIP",
|
|
875
894
|
"infoziplicense": "Info-ZIP",
|
|
895
|
+
"informatica": "Informatica",
|
|
896
|
+
"informaticalicense": "Informatica",
|
|
876
897
|
"innernet20": "Inner-Net-2.0",
|
|
877
898
|
"innernetlicensev20": "Inner-Net-2.0",
|
|
878
899
|
"innosetup": "InnoSetup",
|
|
@@ -1660,6 +1681,7 @@
|
|
|
1660
1681
|
"shl21": "SHL-2.1",
|
|
1661
1682
|
"solderpadhardwarelicensev21": "SHL-2.1",
|
|
1662
1683
|
"simplelibraryusageexception": "Simple-Library-Usage-exception",
|
|
1684
|
+
"spellingproviderlgplexception": "Spelling-Provider-LGPL-exception",
|
|
1663
1685
|
"sqlitestudioopensslexception": "sqlitestudio-OpenSSL-exception",
|
|
1664
1686
|
"stunnelexception": "stunnel-exception",
|
|
1665
1687
|
"swiexception": "SWI-exception",
|
package/data/remediations.json
CHANGED
|
@@ -431,6 +431,34 @@
|
|
|
431
431
|
},
|
|
432
432
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
433
433
|
},
|
|
434
|
+
"js.lockfile-unsafe-path": {
|
|
435
|
+
"ecosystem": "npm",
|
|
436
|
+
"kind": "evidence.degraded",
|
|
437
|
+
"impact": "transitive-deps",
|
|
438
|
+
"title": "Secure mode omitted package-lock.json entries whose paths point outside the project",
|
|
439
|
+
"targetTier": "lockfile",
|
|
440
|
+
"actions": [
|
|
441
|
+
{
|
|
442
|
+
"kind": "config",
|
|
443
|
+
"command": "Review the file: and link entries the warning names; remove any you did not add, and regenerate the lockfile with npm install --package-lock-only"
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"kind": "config",
|
|
447
|
+
"command": "For trusted sibling file: or npm link dependencies, rerun outside secure mode on a trusted checkout to keep them"
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"kind": "rerun"
|
|
451
|
+
}
|
|
452
|
+
],
|
|
453
|
+
"verify": {
|
|
454
|
+
"rules": [],
|
|
455
|
+
"expectTier": "lockfile",
|
|
456
|
+
"eventsCleared": [
|
|
457
|
+
"js.lockfile-unsafe-path"
|
|
458
|
+
]
|
|
459
|
+
},
|
|
460
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
461
|
+
},
|
|
434
462
|
"js.pnpm-lock-unparseable": {
|
|
435
463
|
"ecosystem": "npm",
|
|
436
464
|
"kind": "evidence.degraded",
|
|
@@ -935,6 +963,30 @@
|
|
|
935
963
|
},
|
|
936
964
|
"docs": "https://cyclonedx.github.io/cdxgen/#/EVINSE"
|
|
937
965
|
},
|
|
966
|
+
"dosai.method-calls-capped": {
|
|
967
|
+
"ecosystem": "csharp",
|
|
968
|
+
"kind": "evidence.degraded",
|
|
969
|
+
"impact": "components",
|
|
970
|
+
"title": "The dosai report holds more distinct method calls than cdxgen keeps, so some occurrence evidence was dropped",
|
|
971
|
+
"targetTier": "resolved",
|
|
972
|
+
"actions": [
|
|
973
|
+
{
|
|
974
|
+
"kind": "config",
|
|
975
|
+
"detail": "Raise the cap with CDXGEN_DOSAI_MAX_METHOD_CALLS, or write the report with dosai's --sections so it holds less."
|
|
976
|
+
},
|
|
977
|
+
{
|
|
978
|
+
"kind": "rerun"
|
|
979
|
+
}
|
|
980
|
+
],
|
|
981
|
+
"verify": {
|
|
982
|
+
"rules": [],
|
|
983
|
+
"expectTier": "resolved",
|
|
984
|
+
"eventsCleared": [
|
|
985
|
+
"dosai.method-calls-capped"
|
|
986
|
+
]
|
|
987
|
+
},
|
|
988
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/EVINSE"
|
|
989
|
+
},
|
|
938
990
|
"cocoa.pods.missing": {
|
|
939
991
|
"ecosystem": "cocoa",
|
|
940
992
|
"kind": "fallback.engaged",
|
|
@@ -1282,6 +1334,54 @@
|
|
|
1282
1334
|
},
|
|
1283
1335
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES?id=php"
|
|
1284
1336
|
},
|
|
1337
|
+
"ruby.host-probe.package-db-unreadable": {
|
|
1338
|
+
"ecosystem": "ruby",
|
|
1339
|
+
"kind": "evidence.degraded",
|
|
1340
|
+
"impact": "components",
|
|
1341
|
+
"title": "A package database could not be read in full, so the Ruby no package owns on this host was not identified",
|
|
1342
|
+
"targetTier": null,
|
|
1343
|
+
"actions": [
|
|
1344
|
+
{
|
|
1345
|
+
"kind": "config",
|
|
1346
|
+
"command": "Run cdxgen as a user that can read the package databases (for example with sudo), so Ruby files can be matched to the packages that own them"
|
|
1347
|
+
},
|
|
1348
|
+
{
|
|
1349
|
+
"kind": "rerun"
|
|
1350
|
+
}
|
|
1351
|
+
],
|
|
1352
|
+
"verify": {
|
|
1353
|
+
"rules": [],
|
|
1354
|
+
"expectTier": null,
|
|
1355
|
+
"eventsCleared": [
|
|
1356
|
+
"ruby.host-probe.package-db-unreadable"
|
|
1357
|
+
]
|
|
1358
|
+
},
|
|
1359
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES?id=ruby"
|
|
1360
|
+
},
|
|
1361
|
+
"npm.host-probe.package-db-unreadable": {
|
|
1362
|
+
"ecosystem": "npm",
|
|
1363
|
+
"kind": "evidence.degraded",
|
|
1364
|
+
"impact": "components",
|
|
1365
|
+
"title": "A package database could not be read in full, so the Node.js no package owns on this host was not identified",
|
|
1366
|
+
"targetTier": null,
|
|
1367
|
+
"actions": [
|
|
1368
|
+
{
|
|
1369
|
+
"kind": "config",
|
|
1370
|
+
"command": "Run cdxgen as a user that can read the package databases (for example with sudo), so node binaries can be matched to the packages that own them"
|
|
1371
|
+
},
|
|
1372
|
+
{
|
|
1373
|
+
"kind": "rerun"
|
|
1374
|
+
}
|
|
1375
|
+
],
|
|
1376
|
+
"verify": {
|
|
1377
|
+
"rules": [],
|
|
1378
|
+
"expectTier": null,
|
|
1379
|
+
"eventsCleared": [
|
|
1380
|
+
"npm.host-probe.package-db-unreadable"
|
|
1381
|
+
]
|
|
1382
|
+
},
|
|
1383
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/OBOM_LESSONS"
|
|
1384
|
+
},
|
|
1285
1385
|
"php.composer.platform-unattributed": {
|
|
1286
1386
|
"ecosystem": "php",
|
|
1287
1387
|
"kind": "evidence.degraded",
|
|
@@ -1401,6 +1501,30 @@
|
|
|
1401
1501
|
},
|
|
1402
1502
|
"docs": "https://cyclonedx.github.io/cdxgen/#/PROJECT_TYPES"
|
|
1403
1503
|
},
|
|
1504
|
+
"binary.brotli-probe.capped": {
|
|
1505
|
+
"ecosystem": "generic",
|
|
1506
|
+
"kind": "evidence.degraded",
|
|
1507
|
+
"impact": "components",
|
|
1508
|
+
"title": "The Brotli decoder probe reached its file or byte cap, so some native files were not read for an embedded decoder",
|
|
1509
|
+
"targetTier": null,
|
|
1510
|
+
"actions": [
|
|
1511
|
+
{
|
|
1512
|
+
"kind": "config",
|
|
1513
|
+
"command": "Scan the image or root filesystem in smaller parts (for example one application directory at a time with -t rootfs), so every native file is read for an embedded Brotli decoder"
|
|
1514
|
+
},
|
|
1515
|
+
{
|
|
1516
|
+
"kind": "rerun"
|
|
1517
|
+
}
|
|
1518
|
+
],
|
|
1519
|
+
"verify": {
|
|
1520
|
+
"rules": [],
|
|
1521
|
+
"expectTier": null,
|
|
1522
|
+
"eventsCleared": [
|
|
1523
|
+
"binary.brotli-probe.capped"
|
|
1524
|
+
]
|
|
1525
|
+
},
|
|
1526
|
+
"docs": "https://cyclonedx.github.io/cdxgen/#/BOM_AUDIT?id=brotli-security"
|
|
1527
|
+
},
|
|
1404
1528
|
"os.apk-installed-db.unreadable": {
|
|
1405
1529
|
"ecosystem": "generic",
|
|
1406
1530
|
"kind": "evidence.degraded",
|
package/data/rules/ai-bom.yaml
CHANGED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Embedded Brotli decoder rules
|
|
2
|
+
# Category: brotli-security
|
|
3
|
+
# Evaluates the cdx:brotli:* properties recorded for native files (container,
|
|
4
|
+
# rootfs and OS scans) and vendored source trees (C/C++ source scans).
|
|
5
|
+
# CVE-2026-111497 is an out-of-bounds write in Google's Brotli decoder
|
|
6
|
+
# (CWE-252, CWE-787) reachable from any Brotli stream an attacker controls:
|
|
7
|
+
# an HTTP response a client decodes, a request body a server inflates, a
|
|
8
|
+
# compressed file. Fixed in google/brotli 1.0.10, 1.1.1 and 1.2.1 (commit
|
|
9
|
+
# 0ed4268). The Go port, andybalholm/brotli, had the same logic error but
|
|
10
|
+
# only crashes; it is fixed in v1.2.7.
|
|
11
|
+
# https://github.com/google/brotli/commit/0ed4268a4401abcb4472096340477cf4af7d1a2b
|
|
12
|
+
#
|
|
13
|
+
# The fix is read from the decoder itself (its BLOCK_SWITCH error name), not
|
|
14
|
+
# from a version number, so a distro backport that keeps the old version is
|
|
15
|
+
# recognised as fixed and a Node.js that still reports brotli 1.2.0 after the
|
|
16
|
+
# fix is not flagged.
|
|
17
|
+
|
|
18
|
+
- id: BROTLI-RCE-001
|
|
19
|
+
name: "Native file embeds a Brotli decoder affected by CVE-2026-111497"
|
|
20
|
+
description: "A binary, shared library or extension module carries its own copy of Google's C Brotli decoder without the fix for CVE-2026-111497. Updating the system libbrotli does not fix a private copy: the file itself has to be replaced by a release built from a fixed decoder."
|
|
21
|
+
severity: high
|
|
22
|
+
category: brotli-security
|
|
23
|
+
dry-run-support: full
|
|
24
|
+
condition: |
|
|
25
|
+
components[
|
|
26
|
+
$hasProp($, 'cdx:brotli:c:blockSwitchFix', 'false')
|
|
27
|
+
and $not($hasProp($, 'cdx:vendored', 'true'))
|
|
28
|
+
]
|
|
29
|
+
location: |
|
|
30
|
+
{
|
|
31
|
+
"bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
|
|
32
|
+
}
|
|
33
|
+
message: "'{{ name }}' embeds a Brotli decoder without the CVE-2026-111497 fix; a crafted Brotli stream can write past a decoder buffer (possible code execution). {{ $hasProp($, 'cdx:node:buildVersion') ? 'Upgrade Node.js ' & $prop($, 'cdx:node:buildVersion') & ' to 22.23.4, 24.22.1, 26.12.1 or later.' : 'Replace it with a build that bundles brotli 1.0.10, 1.1.1 or 1.2.1 (or google/brotli commit 0ed4268).' }}"
|
|
34
|
+
mitigation: "Node.js: 22.23.4, 24.22.1, 26.12.1. Python: Brotli 1.2.1, brotlicffi 1.2.1.0. Ruby: brotli gem 0.9.2. Java: Brotli4j 1.24.0. Other software: a release that bundles brotli 1.0.10, 1.1.1 or 1.2.1, or a rebuild with google/brotli commit 0ed4268. Until then, reject Content-Encoding: br request bodies at the proxy and keep untrusted Brotli data away from the affected process."
|
|
35
|
+
evidence: |
|
|
36
|
+
{
|
|
37
|
+
"srcFile": $prop($, 'internal:SrcFile'),
|
|
38
|
+
"evidence": $prop($, 'cdx:brotli:c:evidence'),
|
|
39
|
+
"nodeVersion": $prop($, 'cdx:node:buildVersion')
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
- id: BROTLI-RCE-002
|
|
43
|
+
name: "Vendored Brotli source affected by CVE-2026-111497"
|
|
44
|
+
description: "The project carries a copy of Google's Brotli sources whose decoder lacks the fix for CVE-2026-111497. Everything built from this tree inherits the bug, and no package manager or distro update will reach it."
|
|
45
|
+
severity: high
|
|
46
|
+
category: brotli-security
|
|
47
|
+
dry-run-support: full
|
|
48
|
+
condition: |
|
|
49
|
+
components[
|
|
50
|
+
$hasProp($, 'cdx:vendored', 'true')
|
|
51
|
+
and $hasProp($, 'cdx:brotli:c:blockSwitchFix', 'false')
|
|
52
|
+
]
|
|
53
|
+
location: |
|
|
54
|
+
{
|
|
55
|
+
"bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
|
|
56
|
+
}
|
|
57
|
+
message: "Vendored Brotli {{ version }} at '{{ $prop($, 'cdx:vendored:path') }}' lacks the CVE-2026-111497 fix; update it to 1.0.10, 1.1.1 or 1.2.1, or cherry-pick google/brotli commit 0ed4268."
|
|
58
|
+
mitigation: "Update the vendored copy to brotli 1.0.10, 1.1.1 or 1.2.1, or cherry-pick google/brotli commit 0ed4268 (with 50a9b70, b418fa8 and da98063), then rebuild everything that links it."
|
|
59
|
+
evidence: |
|
|
60
|
+
{
|
|
61
|
+
"path": $prop($, 'cdx:vendored:path'),
|
|
62
|
+
"version": version,
|
|
63
|
+
"versionSource": $prop($, 'cdx:vendored:versionSource')
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
- id: BROTLI-DOS-001
|
|
67
|
+
name: "Go binary embeds a Brotli port affected by the CVE-2026-111497 logic error"
|
|
68
|
+
description: "The Go port of the Brotli decoder (github.com/andybalholm/brotli) before v1.2.7 has the same unchecked block-switch error as the C decoder. Go's bounds checks turn it into a panic rather than a memory write, so a crafted stream crashes the process."
|
|
69
|
+
severity: medium
|
|
70
|
+
category: brotli-security
|
|
71
|
+
dry-run-support: full
|
|
72
|
+
condition: |
|
|
73
|
+
components[
|
|
74
|
+
$hasProp($, 'cdx:brotli:go:blockSwitchFix', 'false')
|
|
75
|
+
]
|
|
76
|
+
location: |
|
|
77
|
+
{
|
|
78
|
+
"bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
|
|
79
|
+
}
|
|
80
|
+
message: "'{{ name }}' embeds github.com/andybalholm/brotli older than v1.2.7; a crafted Brotli stream makes it panic. Rebuild with v1.2.7 or later."
|
|
81
|
+
mitigation: "Update github.com/andybalholm/brotli to v1.2.7 or later and rebuild the binary."
|
|
82
|
+
evidence: |
|
|
83
|
+
{
|
|
84
|
+
"srcFile": $prop($, 'internal:SrcFile')
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
- id: BROTLI-RCE-003
|
|
88
|
+
name: "Native file embeds a Brotli decoder whose CVE-2026-111497 fix state cannot be read"
|
|
89
|
+
description: "A binary, shared library or extension module carries Google's C Brotli decoder, recognised by its decoding tables, but the linker dropped the error-name table that shows whether the fix is in (--gc-sections, LTO and -dead_strip do this when nothing calls BrotliDecoderErrorString). Whether the copy is vulnerable has to be settled from the release that built the file."
|
|
90
|
+
severity: low
|
|
91
|
+
category: brotli-security
|
|
92
|
+
dry-run-support: full
|
|
93
|
+
condition: |
|
|
94
|
+
components[
|
|
95
|
+
$hasProp($, 'cdx:brotli:c:blockSwitchFix', 'unknown')
|
|
96
|
+
]
|
|
97
|
+
location: |
|
|
98
|
+
{
|
|
99
|
+
"bomRef": $firstNonEmpty($."bom-ref", bom.serialNumber)
|
|
100
|
+
}
|
|
101
|
+
message: "'{{ name }}' embeds a Brotli decoder whose CVE-2026-111497 fix state cannot be read from the file; check that it was built from brotli 1.0.10, 1.1.1, 1.2.1 or later, or with google/brotli commit 0ed4268."
|
|
102
|
+
mitigation: "Find the release the file belongs to and confirm it bundles a fixed decoder (brotli 1.0.10, 1.1.1, 1.2.1, or commit 0ed4268); replace it otherwise."
|
|
103
|
+
evidence: |
|
|
104
|
+
{
|
|
105
|
+
"srcFile": $prop($, 'internal:SrcFile'),
|
|
106
|
+
"evidence": $prop($, 'cdx:brotli:c:evidence')
|
|
107
|
+
}
|
|
@@ -235,3 +235,78 @@
|
|
|
235
235
|
"main": $prop($, 'cdx:vscode-extension:main'),
|
|
236
236
|
"contributes": $prop($, 'cdx:vscode-extension:contributes')
|
|
237
237
|
}
|
|
238
|
+
|
|
239
|
+
- id: VSC-010
|
|
240
|
+
name: "Extension folder the editor never registered"
|
|
241
|
+
description: "An extension folder that is on disk but missing from the editor's extensions.json was copied in by hand rather than installed by the editor, so no marketplace or signature check applied to it"
|
|
242
|
+
severity: high
|
|
243
|
+
category: vscode-extension
|
|
244
|
+
dry-run-support: full
|
|
245
|
+
condition: |
|
|
246
|
+
components[
|
|
247
|
+
$startsWith(purl, 'pkg:vscode-extension/')
|
|
248
|
+
and $prop($, 'cdx:vscode-extension:registered') = 'false'
|
|
249
|
+
]
|
|
250
|
+
location: |
|
|
251
|
+
{
|
|
252
|
+
"bomRef": $. "bom-ref",
|
|
253
|
+
"purl": purl,
|
|
254
|
+
"srcFile": $prop($, 'internal:SrcFile')
|
|
255
|
+
}
|
|
256
|
+
message: "VS Code extension '{{ publisher }}.{{ name }}@{{ version }}' is in the extensions folder of {{ $prop($, 'cdx:vscode-extension:ide') }} but not in its registry"
|
|
257
|
+
mitigation: "Find out who placed the folder; remove it and reinstall the extension from the marketplace if it is wanted"
|
|
258
|
+
evidence: |
|
|
259
|
+
{
|
|
260
|
+
"ide": $prop($, 'cdx:vscode-extension:ide'),
|
|
261
|
+
"activationEvents": $prop($, 'cdx:vscode-extension:activationEvents'),
|
|
262
|
+
"main": $prop($, 'cdx:vscode-extension:main')
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
- id: VSC-011
|
|
266
|
+
name: "Extension installed from a .vsix file"
|
|
267
|
+
description: "An extension installed from a local .vsix file bypassed the marketplace, so its publisher, signature and version history were not checked at install time"
|
|
268
|
+
severity: medium
|
|
269
|
+
category: vscode-extension
|
|
270
|
+
dry-run-support: full
|
|
271
|
+
condition: |
|
|
272
|
+
components[
|
|
273
|
+
$startsWith(purl, 'pkg:vscode-extension/')
|
|
274
|
+
and $listContains($propList($, 'cdx:vscode-extension:installSource'), 'vsix')
|
|
275
|
+
]
|
|
276
|
+
location: |
|
|
277
|
+
{
|
|
278
|
+
"bomRef": $. "bom-ref",
|
|
279
|
+
"purl": purl,
|
|
280
|
+
"srcFile": $prop($, 'internal:SrcFile')
|
|
281
|
+
}
|
|
282
|
+
message: "VS Code extension '{{ publisher }}.{{ name }}@{{ version }}' was installed from a .vsix file in {{ $prop($, 'cdx:vscode-extension:ide') }}"
|
|
283
|
+
mitigation: "Confirm where the .vsix came from and compare the entry-file hash with the marketplace build of the same version"
|
|
284
|
+
evidence: |
|
|
285
|
+
{
|
|
286
|
+
"ide": $prop($, 'cdx:vscode-extension:ide'),
|
|
287
|
+
"installedAt": $prop($, 'cdx:vscode-extension:installedAt')
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
- id: VSC-012
|
|
291
|
+
name: "Two copies of one extension build run different code"
|
|
292
|
+
description: "The same publisher, name, version and platform is installed in more than one place, but the entry files differ, so at least one copy was changed after it was installed"
|
|
293
|
+
severity: high
|
|
294
|
+
category: vscode-extension
|
|
295
|
+
dry-run-support: full
|
|
296
|
+
condition: |
|
|
297
|
+
components[
|
|
298
|
+
$startsWith(purl, 'pkg:vscode-extension/')
|
|
299
|
+
and $prop($, 'cdx:vscode-extension:entryHashMismatch') = 'true'
|
|
300
|
+
]
|
|
301
|
+
location: |
|
|
302
|
+
{
|
|
303
|
+
"bomRef": $. "bom-ref",
|
|
304
|
+
"purl": purl
|
|
305
|
+
}
|
|
306
|
+
message: "VS Code extension '{{ publisher }}.{{ name }}@{{ version }}' has different entry-file bytes in {{ $prop($, 'cdx:vscode-extension:ide') }}"
|
|
307
|
+
mitigation: "Compare each copy's entry-file SHA-256 with the marketplace build of the same version, remove the copy that differs and reinstall it from the marketplace"
|
|
308
|
+
evidence: |
|
|
309
|
+
{
|
|
310
|
+
"ide": $prop($, 'cdx:vscode-extension:ide'),
|
|
311
|
+
"entryFiles": components.{ "name": name, "sha256": hashes[0].content }
|
|
312
|
+
}
|