@vyuhlabs/dxkit 2.1.0 → 2.2.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/CHANGELOG.md +137 -0
- package/README.md +9 -9
- package/dist/analyzers/bom/gather.d.ts +12 -1
- package/dist/analyzers/bom/gather.d.ts.map +1 -1
- package/dist/analyzers/bom/gather.js +46 -0
- package/dist/analyzers/bom/gather.js.map +1 -1
- package/dist/analyzers/bom/index.d.ts.map +1 -1
- package/dist/analyzers/bom/index.js +37 -0
- package/dist/analyzers/bom/index.js.map +1 -1
- package/dist/analyzers/bom/types.d.ts +20 -0
- package/dist/analyzers/bom/types.d.ts.map +1 -1
- package/dist/analyzers/xlsx/bom.d.ts.map +1 -1
- package/dist/analyzers/xlsx/bom.js +11 -1
- package/dist/analyzers/xlsx/bom.js.map +1 -1
- package/dist/languages/capabilities/types.d.ts +1 -0
- package/dist/languages/capabilities/types.d.ts.map +1 -1
- package/dist/languages/csharp.d.ts +41 -6
- package/dist/languages/csharp.d.ts.map +1 -1
- package/dist/languages/csharp.js +225 -35
- package/dist/languages/csharp.js.map +1 -1
- package/dist/languages/go.d.ts +35 -0
- package/dist/languages/go.d.ts.map +1 -1
- package/dist/languages/go.js +156 -0
- package/dist/languages/go.js.map +1 -1
- package/dist/languages/python.d.ts +49 -0
- package/dist/languages/python.d.ts.map +1 -1
- package/dist/languages/python.js +202 -17
- package/dist/languages/python.js.map +1 -1
- package/dist/languages/rust.d.ts +15 -0
- package/dist/languages/rust.d.ts.map +1 -1
- package/dist/languages/rust.js +93 -0
- package/dist/languages/rust.js.map +1 -1
- package/dist/languages/typescript.d.ts +17 -0
- package/dist/languages/typescript.d.ts.map +1 -1
- package/dist/languages/typescript.js +106 -0
- package/dist/languages/typescript.js.map +1 -1
- package/package.json +4 -3
package/dist/languages/csharp.js
CHANGED
|
@@ -36,6 +36,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.csharp = void 0;
|
|
37
37
|
exports.parseCoberturaXml = parseCoberturaXml;
|
|
38
38
|
exports.parseDotnetVulnerableOutput = parseDotnetVulnerableOutput;
|
|
39
|
+
exports.parseProjectAssetsJson = parseProjectAssetsJson;
|
|
40
|
+
exports.buildCsharpTopLevelDepIndex = buildCsharpTopLevelDepIndex;
|
|
39
41
|
exports.extractCsharpImportsRaw = extractCsharpImportsRaw;
|
|
40
42
|
const fs = __importStar(require("fs"));
|
|
41
43
|
const path = __importStar(require("path"));
|
|
@@ -168,12 +170,20 @@ function extractGhsaIdFromUrl(url) {
|
|
|
168
170
|
return m ? m[0].toUpperCase() : null;
|
|
169
171
|
}
|
|
170
172
|
/**
|
|
171
|
-
* Pure parser for `dotnet list package --vulnerable --
|
|
172
|
-
* Extracted from the gather function so it can be
|
|
173
|
-
* a real .NET SDK on the dev machine (10h.5
|
|
174
|
-
* runs the full pipeline). Returns null when
|
|
175
|
-
* otherwise returns counts + findings ready
|
|
176
|
-
* enrichment.
|
|
173
|
+
* Pure parser for `dotnet list package --vulnerable --include-transitive
|
|
174
|
+
* --format json`. Extracted from the gather function so it can be
|
|
175
|
+
* unit-tested without a real .NET SDK on the dev machine (10h.5
|
|
176
|
+
* release-time validation runs the full pipeline). Returns null when
|
|
177
|
+
* the input is malformed; otherwise returns counts + findings ready
|
|
178
|
+
* for downstream alias enrichment + top-level attribution.
|
|
179
|
+
*
|
|
180
|
+
* Both top-level and transitive packages are iterated. Top-level
|
|
181
|
+
* findings carry `topLevelDep = [self]` (they ARE manifest deps);
|
|
182
|
+
* transitive findings emit with `topLevelDep` unset — the gather
|
|
183
|
+
* function then fills it from `project.assets.json` if available.
|
|
184
|
+
* Leaving attribution unset on transitives when assets.json is absent
|
|
185
|
+
* matches Python's venv-missing behavior: degrade gracefully rather
|
|
186
|
+
* than invent false parents.
|
|
177
187
|
*/
|
|
178
188
|
function parseDotnetVulnerableOutput(raw) {
|
|
179
189
|
let data;
|
|
@@ -188,44 +198,202 @@ function parseDotnetVulnerableOutput(raw) {
|
|
|
188
198
|
let medium = 0;
|
|
189
199
|
let low = 0;
|
|
190
200
|
const findings = [];
|
|
201
|
+
const emit = (pkgId, resolvedVersion, advisories, topLevelDep) => {
|
|
202
|
+
for (const adv of advisories) {
|
|
203
|
+
const severity = normalizeDotnetSeverity(adv.severity);
|
|
204
|
+
if (severity === 'critical')
|
|
205
|
+
critical++;
|
|
206
|
+
else if (severity === 'high')
|
|
207
|
+
high++;
|
|
208
|
+
else if (severity === 'medium')
|
|
209
|
+
medium++;
|
|
210
|
+
else
|
|
211
|
+
low++;
|
|
212
|
+
const ghsa = extractGhsaIdFromUrl(adv.advisoryUrl);
|
|
213
|
+
const id = ghsa ?? `nuget-${pkgId}@${resolvedVersion ?? 'unknown'}`;
|
|
214
|
+
const finding = {
|
|
215
|
+
id,
|
|
216
|
+
package: pkgId,
|
|
217
|
+
installedVersion: resolvedVersion,
|
|
218
|
+
tool: 'dotnet-vulnerable',
|
|
219
|
+
severity,
|
|
220
|
+
};
|
|
221
|
+
if (topLevelDep && topLevelDep.length > 0)
|
|
222
|
+
finding.topLevelDep = topLevelDep;
|
|
223
|
+
if (ghsa)
|
|
224
|
+
finding.aliases = [ghsa];
|
|
225
|
+
if (adv.advisoryUrl)
|
|
226
|
+
finding.references = [adv.advisoryUrl];
|
|
227
|
+
findings.push(finding);
|
|
228
|
+
}
|
|
229
|
+
};
|
|
191
230
|
for (const proj of data.projects ?? []) {
|
|
192
231
|
for (const fw of proj.frameworks ?? []) {
|
|
193
232
|
for (const pkg of fw.topLevelPackages ?? []) {
|
|
194
233
|
if (!pkg.id)
|
|
195
234
|
continue;
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
else
|
|
205
|
-
low++;
|
|
206
|
-
const ghsa = extractGhsaIdFromUrl(adv.advisoryUrl);
|
|
207
|
-
// No GHSA URL means we have nothing addressable — fall back
|
|
208
|
-
// to a synthetic id so the finding is still emitted (the
|
|
209
|
-
// counts already incremented, and bom render needs a row).
|
|
210
|
-
const id = ghsa ?? `nuget-${pkg.id}@${pkg.resolvedVersion ?? 'unknown'}`;
|
|
211
|
-
const finding = {
|
|
212
|
-
id,
|
|
213
|
-
package: pkg.id,
|
|
214
|
-
installedVersion: pkg.resolvedVersion,
|
|
215
|
-
tool: 'dotnet-vulnerable',
|
|
216
|
-
severity,
|
|
217
|
-
};
|
|
218
|
-
if (ghsa)
|
|
219
|
-
finding.aliases = [ghsa];
|
|
220
|
-
if (adv.advisoryUrl)
|
|
221
|
-
finding.references = [adv.advisoryUrl];
|
|
222
|
-
findings.push(finding);
|
|
223
|
-
}
|
|
235
|
+
emit(pkg.id, pkg.resolvedVersion, pkg.advisories ?? [], [pkg.id]);
|
|
236
|
+
}
|
|
237
|
+
for (const pkg of fw.transitivePackages ?? []) {
|
|
238
|
+
if (!pkg.id)
|
|
239
|
+
continue;
|
|
240
|
+
// topLevelDep stays unset; `attachCsharpTopLevelAttribution`
|
|
241
|
+
// downstream fills it from project.assets.json when available.
|
|
242
|
+
emit(pkg.id, pkg.resolvedVersion, pkg.advisories ?? [], undefined);
|
|
224
243
|
}
|
|
225
244
|
}
|
|
226
245
|
}
|
|
227
246
|
return { counts: { critical, high, medium, low }, findings };
|
|
228
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Pure parser for `obj/project.assets.json`. Extracts the forward
|
|
250
|
+
* dep graph keyed by package name (collapsing versions — same as
|
|
251
|
+
* TS/Go/Rust packs) plus the set of top-level (direct manifest)
|
|
252
|
+
* package names across every target framework declared in `project`.
|
|
253
|
+
*
|
|
254
|
+
* Multi-framework projects: graphs are merged across target
|
|
255
|
+
* frameworks into a single name-level edge map. Top-level set is
|
|
256
|
+
* the union of declared direct deps across frameworks. This
|
|
257
|
+
* over-attributes slightly if a package is direct in netstandard2.0
|
|
258
|
+
* but transitive in net8.0 — it gets listed as a top-level — but the
|
|
259
|
+
* simplification beats per-framework multi-reporting complexity.
|
|
260
|
+
*/
|
|
261
|
+
function parseProjectAssetsJson(raw) {
|
|
262
|
+
let data;
|
|
263
|
+
try {
|
|
264
|
+
data = JSON.parse(raw);
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
if (!data.targets && !data.project)
|
|
270
|
+
return null;
|
|
271
|
+
const nameOf = (key) => {
|
|
272
|
+
// Keys are `Pkg/Version` — split on '/' and take the package part.
|
|
273
|
+
const slash = key.indexOf('/');
|
|
274
|
+
return slash < 0 ? key : key.slice(0, slash);
|
|
275
|
+
};
|
|
276
|
+
const edges = new Map();
|
|
277
|
+
for (const target of Object.values(data.targets ?? {})) {
|
|
278
|
+
for (const [pkgVerKey, pkgEntry] of Object.entries(target)) {
|
|
279
|
+
const srcName = nameOf(pkgVerKey);
|
|
280
|
+
const deps = pkgEntry?.dependencies;
|
|
281
|
+
if (!deps)
|
|
282
|
+
continue;
|
|
283
|
+
const bucket = edges.get(srcName) ?? new Set();
|
|
284
|
+
for (const depName of Object.keys(deps)) {
|
|
285
|
+
bucket.add(depName);
|
|
286
|
+
}
|
|
287
|
+
edges.set(srcName, bucket);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
const topLevels = new Set();
|
|
291
|
+
for (const fw of Object.values(data.project?.frameworks ?? {})) {
|
|
292
|
+
for (const name of Object.keys(fw?.dependencies ?? {})) {
|
|
293
|
+
topLevels.add(name);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return { topLevels: [...topLevels].sort(), edges };
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* BFS the parsed asset graph to produce a per-package-name index of
|
|
300
|
+
* its top-level ancestors. Mirrors `buildTsTopLevelDepIndex` /
|
|
301
|
+
* `buildRustTopLevelDepIndex` in shape and semantics; attribution is
|
|
302
|
+
* coarse (name-level) and unions across multiple reachable parents.
|
|
303
|
+
*/
|
|
304
|
+
function buildCsharpTopLevelDepIndex(parsed) {
|
|
305
|
+
const result = new Map();
|
|
306
|
+
for (const top of parsed.topLevels) {
|
|
307
|
+
const visited = new Set();
|
|
308
|
+
const queue = [top];
|
|
309
|
+
while (queue.length > 0) {
|
|
310
|
+
const name = queue.shift();
|
|
311
|
+
if (visited.has(name))
|
|
312
|
+
continue;
|
|
313
|
+
visited.add(name);
|
|
314
|
+
const bucket = result.get(name) ?? new Set();
|
|
315
|
+
bucket.add(top);
|
|
316
|
+
result.set(name, bucket);
|
|
317
|
+
for (const child of parsed.edges.get(name) ?? []) {
|
|
318
|
+
if (!visited.has(child))
|
|
319
|
+
queue.push(child);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
const sorted = new Map();
|
|
324
|
+
for (const [name, parents] of result) {
|
|
325
|
+
sorted.set(name, [...parents].sort());
|
|
326
|
+
}
|
|
327
|
+
return sorted;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Locate the nearest `obj/project.assets.json` under cwd (NuGet's
|
|
331
|
+
* lockfile equivalent, created by `dotnet restore`). Unlike the
|
|
332
|
+
* shared `findMatchingRecursive`, we cannot skip `obj/` here —
|
|
333
|
+
* that's literally where the file lives. Walks up to 4 levels deep
|
|
334
|
+
* to handle solutions with nested projects. Returns the absolute
|
|
335
|
+
* path of the first match, or null.
|
|
336
|
+
*
|
|
337
|
+
* Multi-project solutions currently use the first-found file's
|
|
338
|
+
* graph — noted as a known limitation in the phase commit.
|
|
339
|
+
*/
|
|
340
|
+
function findProjectAssetsJson(cwd, maxDepth = 4) {
|
|
341
|
+
function search(dir, depth) {
|
|
342
|
+
if (depth > maxDepth)
|
|
343
|
+
return null;
|
|
344
|
+
let entries;
|
|
345
|
+
try {
|
|
346
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
347
|
+
}
|
|
348
|
+
catch {
|
|
349
|
+
return null;
|
|
350
|
+
}
|
|
351
|
+
// Direct-child shortcut: if this directory is `obj`, check for
|
|
352
|
+
// the file right here before recursing.
|
|
353
|
+
for (const e of entries) {
|
|
354
|
+
if (e.isFile() && e.name === 'project.assets.json') {
|
|
355
|
+
// Only accept if parent directory is `obj`.
|
|
356
|
+
if (path.basename(dir) === 'obj')
|
|
357
|
+
return path.join(dir, e.name);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
for (const e of entries) {
|
|
361
|
+
if (e.name.startsWith('.') ||
|
|
362
|
+
['node_modules', 'bin', 'TestResults', 'packages'].includes(e.name)) {
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
365
|
+
if (e.isDirectory()) {
|
|
366
|
+
const nested = search(path.join(dir, e.name), depth + 1);
|
|
367
|
+
if (nested)
|
|
368
|
+
return nested;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
return null;
|
|
372
|
+
}
|
|
373
|
+
return search(cwd, 0);
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Read + parse `obj/project.assets.json` and build the top-level
|
|
377
|
+
* attribution index. Returns an empty map on any failure — transitive
|
|
378
|
+
* findings simply ship without attribution rather than blocking the
|
|
379
|
+
* scan. Matches Python pack's missing-venv semantics.
|
|
380
|
+
*/
|
|
381
|
+
function loadCsharpTopLevelDepIndex(cwd) {
|
|
382
|
+
const assetsPath = findProjectAssetsJson(cwd);
|
|
383
|
+
if (!assetsPath)
|
|
384
|
+
return new Map();
|
|
385
|
+
let raw;
|
|
386
|
+
try {
|
|
387
|
+
raw = fs.readFileSync(assetsPath, 'utf-8');
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
return new Map();
|
|
391
|
+
}
|
|
392
|
+
const parsed = parseProjectAssetsJson(raw);
|
|
393
|
+
if (!parsed)
|
|
394
|
+
return new Map();
|
|
395
|
+
return buildCsharpTopLevelDepIndex(parsed);
|
|
396
|
+
}
|
|
229
397
|
/**
|
|
230
398
|
* Single source of truth for the csharp pack's dep-vuln gathering.
|
|
231
399
|
* Consumed by `csharpDepVulnsProvider` (capability dispatcher). Runs
|
|
@@ -240,13 +408,35 @@ function parseDotnetVulnerableOutput(raw) {
|
|
|
240
408
|
async function gatherCsharpDepVulnsResult(cwd) {
|
|
241
409
|
if (!hasCsharpProject(cwd))
|
|
242
410
|
return { kind: 'tool-missing' };
|
|
243
|
-
|
|
411
|
+
// `--include-transitive` (10h.4.4.c) extends the scan to indirect
|
|
412
|
+
// deps; without it NuGet would only report vulns where the
|
|
413
|
+
// vulnerable package is itself declared in .csproj. Transitive
|
|
414
|
+
// attribution lands via `project.assets.json` below.
|
|
415
|
+
const vulnRaw = (0, runner_1.run)('dotnet list package --vulnerable --include-transitive --format json 2>/dev/null', cwd, 120000);
|
|
244
416
|
if (!vulnRaw)
|
|
245
417
|
return { kind: 'no-output' };
|
|
246
418
|
const parsed = parseDotnetVulnerableOutput(vulnRaw);
|
|
247
419
|
if (!parsed)
|
|
248
420
|
return { kind: 'parse-error' };
|
|
249
421
|
const { counts, findings } = parsed;
|
|
422
|
+
// Attach top-level attribution to transitive findings (top-level
|
|
423
|
+
// findings already carry self-attribution from the parser). Skipped
|
|
424
|
+
// when project.assets.json is absent — user hasn't run
|
|
425
|
+
// `dotnet restore`, or the obj/ dir was cleaned. Findings ship with
|
|
426
|
+
// `topLevelDep` unset in that case, matching Python's no-venv path.
|
|
427
|
+
const transitiveNeedsAttribution = findings.some((f) => !f.topLevelDep || f.topLevelDep.length === 0);
|
|
428
|
+
if (transitiveNeedsAttribution) {
|
|
429
|
+
const topLevelIndex = loadCsharpTopLevelDepIndex(cwd);
|
|
430
|
+
if (topLevelIndex.size > 0) {
|
|
431
|
+
for (const f of findings) {
|
|
432
|
+
if (f.topLevelDep && f.topLevelDep.length > 0)
|
|
433
|
+
continue;
|
|
434
|
+
const parents = topLevelIndex.get(f.package);
|
|
435
|
+
if (parents && parents.length > 0)
|
|
436
|
+
f.topLevelDep = parents;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
250
440
|
// Alias-fallback CVSS pass: dotnet --vulnerable ships zero CVSS data
|
|
251
441
|
// per advisory; the GHSA id (extracted from advisoryUrl) is the only
|
|
252
442
|
// anchor. resolveCvssScores looks up via GHSA → CVE alias chain.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../src/languages/csharp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../src/languages/csharp.ts"],"names":[],"mappings":"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"}
|
package/dist/languages/go.d.ts
CHANGED
|
@@ -1,4 +1,39 @@
|
|
|
1
1
|
import type { LanguageSupport } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Pure parser for `go.mod`, extracting module paths declared in
|
|
4
|
+
* `require` blocks WITHOUT a `// indirect` marker. Those are the
|
|
5
|
+
* user's direct deps — the ones that show up as Snyk top-levels.
|
|
6
|
+
*
|
|
7
|
+
* Handles both syntaxes:
|
|
8
|
+
* require foo.com/bar v1.0 (single-line)
|
|
9
|
+
* require ( foo.com/bar v1.0 (block)
|
|
10
|
+
* baz.com/qux v2.0 // indirect ) (indirect-marked)
|
|
11
|
+
*
|
|
12
|
+
* Lines with `// indirect` (or `//indirect`) are skipped since those
|
|
13
|
+
* were added by `go mod tidy` to pin transitive versions, not because
|
|
14
|
+
* the user declared them. Go's direct/indirect distinction maps
|
|
15
|
+
* cleanly onto the top-level concept.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseGoModDirectDeps(raw: string): string[];
|
|
18
|
+
/**
|
|
19
|
+
* Pure parser for `go mod graph`, returning a per-module index of the
|
|
20
|
+
* top-level manifest deps (root's direct children, filtered against
|
|
21
|
+
* `go.mod`'s direct-dep list when supplied) that transitively pull
|
|
22
|
+
* each module.
|
|
23
|
+
*
|
|
24
|
+
* `go mod graph` output is line-oriented: `<src> <dst>` where each
|
|
25
|
+
* token is `module@version` except the root module which appears
|
|
26
|
+
* without `@version`. The root's direct deps are the BFS seeds;
|
|
27
|
+
* attribution collapses at the module-name level so the same package
|
|
28
|
+
* appearing at multiple versions maps to a single name.
|
|
29
|
+
*
|
|
30
|
+
* When `directDeps` is supplied, seeds are intersected with that set —
|
|
31
|
+
* excludes indirect-but-in-graph modules (every dependency of a
|
|
32
|
+
* direct dep is also a direct child of root in the graph). Without
|
|
33
|
+
* this filter, Go projects with 5 direct + 30 indirect deps would
|
|
34
|
+
* show 35 "top-levels," inflating attribution.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildGoTopLevelDepIndex(raw: string, directDeps?: ReadonlyArray<string>): Map<string, string[]>;
|
|
2
37
|
/**
|
|
3
38
|
* Capture Go module specifiers from source text. Handles both single-line
|
|
4
39
|
* `import "fmt"` and parenthesized multi-line blocks, including aliased
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../src/languages/go.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../src/languages/go.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AA+F7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA8B1D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GACjC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAyDvB;AAsQD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB9F;AA8KD,eAAO,MAAM,EAAE,EAAE,eAwBhB,CAAC"}
|
package/dist/languages/go.js
CHANGED
|
@@ -34,6 +34,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.go = void 0;
|
|
37
|
+
exports.parseGoModDirectDeps = parseGoModDirectDeps;
|
|
38
|
+
exports.buildGoTopLevelDepIndex = buildGoTopLevelDepIndex;
|
|
37
39
|
exports.extractGoImportsRaw = extractGoImportsRaw;
|
|
38
40
|
exports.resolveGoImportRaw = resolveGoImportRaw;
|
|
39
41
|
const fs = __importStar(require("fs"));
|
|
@@ -111,6 +113,156 @@ function tierGolangciIssue(issue) {
|
|
|
111
113
|
}
|
|
112
114
|
return byLinter;
|
|
113
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Pure parser for `go.mod`, extracting module paths declared in
|
|
118
|
+
* `require` blocks WITHOUT a `// indirect` marker. Those are the
|
|
119
|
+
* user's direct deps — the ones that show up as Snyk top-levels.
|
|
120
|
+
*
|
|
121
|
+
* Handles both syntaxes:
|
|
122
|
+
* require foo.com/bar v1.0 (single-line)
|
|
123
|
+
* require ( foo.com/bar v1.0 (block)
|
|
124
|
+
* baz.com/qux v2.0 // indirect ) (indirect-marked)
|
|
125
|
+
*
|
|
126
|
+
* Lines with `// indirect` (or `//indirect`) are skipped since those
|
|
127
|
+
* were added by `go mod tidy` to pin transitive versions, not because
|
|
128
|
+
* the user declared them. Go's direct/indirect distinction maps
|
|
129
|
+
* cleanly onto the top-level concept.
|
|
130
|
+
*/
|
|
131
|
+
function parseGoModDirectDeps(raw) {
|
|
132
|
+
const direct = [];
|
|
133
|
+
let inRequireBlock = false;
|
|
134
|
+
for (const rawLine of raw.split('\n')) {
|
|
135
|
+
// Strip line comments first so `// indirect` detection is accurate.
|
|
136
|
+
// Preserve the original for the indirect check — which looks at the
|
|
137
|
+
// comment we just stripped.
|
|
138
|
+
const indirect = /\/\/\s*indirect\b/.test(rawLine);
|
|
139
|
+
const line = rawLine.replace(/\/\/.*$/, '').trim();
|
|
140
|
+
if (!line)
|
|
141
|
+
continue;
|
|
142
|
+
if (line === 'require (') {
|
|
143
|
+
inRequireBlock = true;
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (inRequireBlock && line === ')') {
|
|
147
|
+
inRequireBlock = false;
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
if (inRequireBlock) {
|
|
151
|
+
if (indirect)
|
|
152
|
+
continue;
|
|
153
|
+
// Block-form entries are `<modpath> <version>`; we only want the path.
|
|
154
|
+
const parts = line.split(/\s+/);
|
|
155
|
+
if (parts.length >= 1 && parts[0])
|
|
156
|
+
direct.push(parts[0]);
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
// Single-line require outside a block: `require <modpath> <version>`.
|
|
160
|
+
const m = line.match(/^require\s+(\S+)\s+\S+/);
|
|
161
|
+
if (m && !indirect)
|
|
162
|
+
direct.push(m[1]);
|
|
163
|
+
}
|
|
164
|
+
return direct;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Pure parser for `go mod graph`, returning a per-module index of the
|
|
168
|
+
* top-level manifest deps (root's direct children, filtered against
|
|
169
|
+
* `go.mod`'s direct-dep list when supplied) that transitively pull
|
|
170
|
+
* each module.
|
|
171
|
+
*
|
|
172
|
+
* `go mod graph` output is line-oriented: `<src> <dst>` where each
|
|
173
|
+
* token is `module@version` except the root module which appears
|
|
174
|
+
* without `@version`. The root's direct deps are the BFS seeds;
|
|
175
|
+
* attribution collapses at the module-name level so the same package
|
|
176
|
+
* appearing at multiple versions maps to a single name.
|
|
177
|
+
*
|
|
178
|
+
* When `directDeps` is supplied, seeds are intersected with that set —
|
|
179
|
+
* excludes indirect-but-in-graph modules (every dependency of a
|
|
180
|
+
* direct dep is also a direct child of root in the graph). Without
|
|
181
|
+
* this filter, Go projects with 5 direct + 30 indirect deps would
|
|
182
|
+
* show 35 "top-levels," inflating attribution.
|
|
183
|
+
*/
|
|
184
|
+
function buildGoTopLevelDepIndex(raw, directDeps) {
|
|
185
|
+
const nameOf = (tok) => {
|
|
186
|
+
const at = tok.indexOf('@');
|
|
187
|
+
return at < 0 ? tok : tok.slice(0, at);
|
|
188
|
+
};
|
|
189
|
+
// Root is identified as the only source token without `@version`.
|
|
190
|
+
// All lines whose source lacks `@` share the same root name (barring
|
|
191
|
+
// workspace multi-module repos, which we approximate as a single
|
|
192
|
+
// root — accurate enough for Snyk-style grouping).
|
|
193
|
+
let root = null;
|
|
194
|
+
const edges = new Map();
|
|
195
|
+
for (const line of raw.split('\n')) {
|
|
196
|
+
const trimmed = line.trim();
|
|
197
|
+
if (!trimmed)
|
|
198
|
+
continue;
|
|
199
|
+
const parts = trimmed.split(/\s+/);
|
|
200
|
+
if (parts.length < 2)
|
|
201
|
+
continue;
|
|
202
|
+
const srcName = nameOf(parts[0]);
|
|
203
|
+
const dstName = nameOf(parts[1]);
|
|
204
|
+
if (!parts[0].includes('@')) {
|
|
205
|
+
// Source token lacks @version → this is the root module.
|
|
206
|
+
if (root === null)
|
|
207
|
+
root = srcName;
|
|
208
|
+
}
|
|
209
|
+
const bucket = edges.get(srcName) ?? new Set();
|
|
210
|
+
bucket.add(dstName);
|
|
211
|
+
edges.set(srcName, bucket);
|
|
212
|
+
}
|
|
213
|
+
if (!root)
|
|
214
|
+
return new Map();
|
|
215
|
+
let rootChildren = [...(edges.get(root) ?? new Set())];
|
|
216
|
+
if (directDeps && directDeps.length > 0) {
|
|
217
|
+
const directSet = new Set(directDeps);
|
|
218
|
+
rootChildren = rootChildren.filter((name) => directSet.has(name));
|
|
219
|
+
}
|
|
220
|
+
const result = new Map();
|
|
221
|
+
for (const top of rootChildren) {
|
|
222
|
+
const visited = new Set();
|
|
223
|
+
const queue = [top];
|
|
224
|
+
while (queue.length > 0) {
|
|
225
|
+
const name = queue.shift();
|
|
226
|
+
if (visited.has(name))
|
|
227
|
+
continue;
|
|
228
|
+
visited.add(name);
|
|
229
|
+
const bucket = result.get(name) ?? new Set();
|
|
230
|
+
bucket.add(top);
|
|
231
|
+
result.set(name, bucket);
|
|
232
|
+
for (const child of edges.get(name) ?? []) {
|
|
233
|
+
if (!visited.has(child))
|
|
234
|
+
queue.push(child);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
const sorted = new Map();
|
|
239
|
+
for (const [name, parents] of result) {
|
|
240
|
+
sorted.set(name, [...parents].sort());
|
|
241
|
+
}
|
|
242
|
+
return sorted;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Invoke `go mod graph` + read `go.mod` and build the top-level index.
|
|
246
|
+
* Returns an empty map when either is missing — attribution stays
|
|
247
|
+
* unset so dep-vuln gather still succeeds. Degrades safely on
|
|
248
|
+
* toolchain-less environments (e.g. containerized CI lacking go).
|
|
249
|
+
*/
|
|
250
|
+
function loadGoTopLevelDepIndex(cwd) {
|
|
251
|
+
const graphRaw = (0, runner_1.run)('go mod graph 2>/dev/null', cwd, 60000);
|
|
252
|
+
if (!graphRaw)
|
|
253
|
+
return new Map();
|
|
254
|
+
let directDeps = [];
|
|
255
|
+
try {
|
|
256
|
+
const modRaw = fs.readFileSync(path.join(cwd, 'go.mod'), 'utf-8');
|
|
257
|
+
directDeps = parseGoModDirectDeps(modRaw);
|
|
258
|
+
}
|
|
259
|
+
catch {
|
|
260
|
+
// go.mod missing/unreadable — fall back to pre-filter behavior
|
|
261
|
+
// (all root children become top-levels). Consistent with the
|
|
262
|
+
// pre-10h.4.4.a semantics rather than blocking attribution.
|
|
263
|
+
}
|
|
264
|
+
return buildGoTopLevelDepIndex(graphRaw, directDeps);
|
|
265
|
+
}
|
|
114
266
|
/**
|
|
115
267
|
* Single source of truth for the go pack's dep-vuln gathering.
|
|
116
268
|
* Consumed by `goDepVulnsProvider` (capability dispatcher).
|
|
@@ -206,6 +358,7 @@ async function gatherGoDepVulnsResult(cwd) {
|
|
|
206
358
|
else
|
|
207
359
|
low++;
|
|
208
360
|
}
|
|
361
|
+
const topLevelIndex = loadGoTopLevelDepIndex(cwd);
|
|
209
362
|
const findings = [];
|
|
210
363
|
for (const grouped of groupedFindings.values()) {
|
|
211
364
|
if (!grouped.osv)
|
|
@@ -247,6 +400,9 @@ async function gatherGoDepVulnsResult(cwd) {
|
|
|
247
400
|
if (!finding.references) {
|
|
248
401
|
finding.references = [`https://osv.dev/vulnerability/${grouped.osv}`];
|
|
249
402
|
}
|
|
403
|
+
const parents = topLevelIndex.get(pkgName);
|
|
404
|
+
if (parents && parents.length > 0)
|
|
405
|
+
finding.topLevelDep = parents;
|
|
250
406
|
findings.push(finding);
|
|
251
407
|
}
|
|
252
408
|
// Alias-fallback CVSS pass: stdlib advisories (GO-YYYY-NNNN) often
|