@vyuhlabs/dxkit 2.0.1 → 2.2.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/CHANGELOG.md +223 -0
- package/README.md +21 -15
- package/dist/analyzers/bom/detailed.d.ts +26 -0
- package/dist/analyzers/bom/detailed.d.ts.map +1 -0
- package/dist/analyzers/bom/detailed.js +227 -0
- package/dist/analyzers/bom/detailed.js.map +1 -0
- package/dist/analyzers/bom/gather.d.ts +63 -0
- package/dist/analyzers/bom/gather.d.ts.map +1 -0
- package/dist/analyzers/bom/gather.js +229 -0
- package/dist/analyzers/bom/gather.js.map +1 -0
- package/dist/analyzers/bom/index.d.ts +23 -0
- package/dist/analyzers/bom/index.d.ts.map +1 -0
- package/dist/analyzers/bom/index.js +220 -0
- package/dist/analyzers/bom/index.js.map +1 -0
- package/dist/analyzers/bom/types.d.ts +91 -0
- package/dist/analyzers/bom/types.d.ts.map +1 -0
- package/dist/analyzers/bom/types.js +3 -0
- package/dist/analyzers/bom/types.js.map +1 -0
- package/dist/analyzers/licenses/detailed.d.ts +30 -0
- package/dist/analyzers/licenses/detailed.d.ts.map +1 -0
- package/dist/analyzers/licenses/detailed.js +194 -0
- package/dist/analyzers/licenses/detailed.js.map +1 -0
- package/dist/analyzers/licenses/gather.d.ts +15 -0
- package/dist/analyzers/licenses/gather.d.ts.map +1 -0
- package/dist/analyzers/licenses/gather.js +24 -0
- package/dist/analyzers/licenses/gather.js.map +1 -0
- package/dist/analyzers/licenses/index.d.ts +21 -0
- package/dist/analyzers/licenses/index.d.ts.map +1 -0
- package/dist/analyzers/licenses/index.js +146 -0
- package/dist/analyzers/licenses/index.js.map +1 -0
- package/dist/analyzers/licenses/types.d.ts +30 -0
- package/dist/analyzers/licenses/types.d.ts.map +1 -0
- package/dist/analyzers/licenses/types.js +13 -0
- package/dist/analyzers/licenses/types.js.map +1 -0
- package/dist/analyzers/security/detailed.d.ts +0 -3
- package/dist/analyzers/security/detailed.d.ts.map +1 -1
- package/dist/analyzers/security/detailed.js +37 -6
- package/dist/analyzers/security/detailed.js.map +1 -1
- package/dist/analyzers/security/gather.d.ts.map +1 -1
- package/dist/analyzers/security/gather.js +2 -0
- package/dist/analyzers/security/gather.js.map +1 -1
- package/dist/analyzers/security/index.d.ts.map +1 -1
- package/dist/analyzers/security/index.js +53 -14
- package/dist/analyzers/security/index.js.map +1 -1
- package/dist/analyzers/security/types.d.ts +5 -0
- package/dist/analyzers/security/types.d.ts.map +1 -1
- package/dist/analyzers/security/types.js +0 -3
- package/dist/analyzers/security/types.js.map +1 -1
- package/dist/analyzers/tools/osv.d.ts +49 -5
- package/dist/analyzers/tools/osv.d.ts.map +1 -1
- package/dist/analyzers/tools/osv.js +99 -17
- package/dist/analyzers/tools/osv.js.map +1 -1
- package/dist/analyzers/tools/runner.d.ts +11 -0
- package/dist/analyzers/tools/runner.d.ts.map +1 -1
- package/dist/analyzers/tools/runner.js +54 -0
- package/dist/analyzers/tools/runner.js.map +1 -1
- package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
- package/dist/analyzers/tools/tool-registry.js +77 -0
- package/dist/analyzers/tools/tool-registry.js.map +1 -1
- package/dist/analyzers/xlsx/bom.d.ts +27 -0
- package/dist/analyzers/xlsx/bom.d.ts.map +1 -0
- package/dist/analyzers/xlsx/bom.js +141 -0
- package/dist/analyzers/xlsx/bom.js.map +1 -0
- package/dist/analyzers/xlsx/index.d.ts +27 -0
- package/dist/analyzers/xlsx/index.d.ts.map +1 -0
- package/dist/analyzers/xlsx/index.js +92 -0
- package/dist/analyzers/xlsx/index.js.map +1 -0
- package/dist/analyzers/xlsx/licenses.d.ts +40 -0
- package/dist/analyzers/xlsx/licenses.d.ts.map +1 -0
- package/dist/analyzers/xlsx/licenses.js +140 -0
- package/dist/analyzers/xlsx/licenses.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +178 -1
- package/dist/cli.js.map +1 -1
- package/dist/languages/capabilities/descriptors.d.ts +4 -1
- package/dist/languages/capabilities/descriptors.d.ts.map +1 -1
- package/dist/languages/capabilities/descriptors.js +20 -1
- package/dist/languages/capabilities/descriptors.js.map +1 -1
- package/dist/languages/capabilities/types.d.ts +60 -3
- package/dist/languages/capabilities/types.d.ts.map +1 -1
- package/dist/languages/csharp.d.ts +48 -0
- package/dist/languages/csharp.d.ts.map +1 -1
- package/dist/languages/csharp.js +418 -33
- 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 +367 -26
- 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 +372 -11
- package/dist/languages/python.js.map +1 -1
- package/dist/languages/rust.d.ts +28 -0
- package/dist/languages/rust.d.ts.map +1 -1
- package/dist/languages/rust.js +287 -28
- package/dist/languages/rust.js.map +1 -1
- package/dist/languages/types.d.ts +2 -1
- package/dist/languages/types.d.ts.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 +358 -1
- package/dist/languages/typescript.js.map +1 -1
- package/package.json +7 -2
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,9 +113,172 @@ 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).
|
|
269
|
+
*
|
|
270
|
+
* govulncheck only emits `finding` records when call analysis confirms
|
|
271
|
+
* the vulnerable code is reachable from the project's main package, so
|
|
272
|
+
* every emitted DepVulnFinding sets `reachable: true` — Tier-1 output
|
|
273
|
+
* with Tier-4 reachability semantics by virtue of the upstream tool's
|
|
274
|
+
* design.
|
|
275
|
+
*
|
|
276
|
+
* Findings are grouped by (osvId, module, installedVersion). One
|
|
277
|
+
* advisory hitting multiple modules yields multiple findings; multiple
|
|
278
|
+
* call paths through the same (advisory, module, version) collapse to
|
|
279
|
+
* one. govulncheck's per-call-path output (102 raw findings on the
|
|
280
|
+
* Tickit smoke) is intentional internal detail; the bom/render layer
|
|
281
|
+
* wants one row per (vuln × installed package).
|
|
117
282
|
*/
|
|
118
283
|
async function gatherGoDepVulnsResult(cwd) {
|
|
119
284
|
const vuln = (0, tool_registry_1.findTool)(tool_registry_1.TOOL_DEFS.govulncheck, cwd);
|
|
@@ -123,61 +288,139 @@ async function gatherGoDepVulnsResult(cwd) {
|
|
|
123
288
|
if (!raw)
|
|
124
289
|
return { kind: 'no-output' };
|
|
125
290
|
try {
|
|
126
|
-
// govulncheck emits
|
|
291
|
+
// govulncheck -json emits a stream of *pretty-printed* JSON objects
|
|
292
|
+
// (each spanning many lines), not single-line ndjson — so we can't
|
|
293
|
+
// JSON.parse line-by-line. Accumulate lines into a buffer and try to
|
|
294
|
+
// parse after each newline; success resets the buffer for the next
|
|
295
|
+
// record. Three relevant top-level shapes:
|
|
127
296
|
// { "osv": { ...full OSV record... } } — the advisory detail
|
|
128
297
|
// { "finding": { "osv": "GO-YYYY-NNNN", "trace": [...] } } — a call-site hit
|
|
129
|
-
// { "config": ... } / { "progress": ... } — ignored
|
|
130
|
-
const
|
|
298
|
+
// { "config": ... } / { "progress": ... } / { "SBOM": ... } — ignored
|
|
299
|
+
const groupedFindings = new Map();
|
|
131
300
|
const embeddedOsv = new Map();
|
|
132
|
-
for (const
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
findingIds.add(obj.finding.osv);
|
|
139
|
-
if (obj.osv?.id)
|
|
140
|
-
embeddedOsv.set(obj.osv.id, obj.osv);
|
|
141
|
-
}
|
|
142
|
-
catch {
|
|
143
|
-
/* skip non-JSON lines */
|
|
301
|
+
for (const obj of (0, runner_1.parseJsonStream)(raw)) {
|
|
302
|
+
if (obj.finding?.osv) {
|
|
303
|
+
const trace0 = obj.finding.trace?.[0] ?? {};
|
|
304
|
+
const key = `${obj.finding.osv}|${trace0.module ?? ''}|${trace0.version ?? ''}`;
|
|
305
|
+
if (!groupedFindings.has(key))
|
|
306
|
+
groupedFindings.set(key, obj.finding);
|
|
144
307
|
}
|
|
308
|
+
if (obj.osv?.id)
|
|
309
|
+
embeddedOsv.set(obj.osv.id, obj.osv);
|
|
145
310
|
}
|
|
146
311
|
// Prefer severity from the embedded OSV record (already in the
|
|
147
312
|
// govulncheck output, no extra API call). Fall back to an OSV.dev
|
|
148
313
|
// lookup for IDs without embedded data. Fall back to 'high' (the
|
|
149
314
|
// legacy govulncheck default) for anything still unknown.
|
|
150
|
-
const
|
|
151
|
-
|
|
315
|
+
const uniqueIds = [
|
|
316
|
+
...new Set([...groupedFindings.values()].map((f) => f.osv).filter(Boolean)),
|
|
317
|
+
];
|
|
318
|
+
const needsLookup = uniqueIds.filter((id) => {
|
|
152
319
|
const rec = embeddedOsv.get(id);
|
|
153
320
|
if (!rec)
|
|
154
321
|
return true;
|
|
155
322
|
return (0, osv_1.classifyOsvSeverity)(rec) === 'unknown';
|
|
156
323
|
});
|
|
157
|
-
const lookedUp = needsLookup.length > 0 ? await (0, osv_1.
|
|
324
|
+
const lookedUp = needsLookup.length > 0 ? await (0, osv_1.enrichOsv)(needsLookup) : new Map();
|
|
158
325
|
let critical = 0;
|
|
159
326
|
let high = 0;
|
|
160
327
|
let medium = 0;
|
|
161
328
|
let low = 0;
|
|
162
329
|
let enrichedCount = 0;
|
|
163
|
-
|
|
330
|
+
const severityById = new Map();
|
|
331
|
+
for (const id of uniqueIds) {
|
|
164
332
|
const rec = embeddedOsv.get(id);
|
|
165
333
|
let sev = rec ? (0, osv_1.classifyOsvSeverity)(rec) : 'unknown';
|
|
166
334
|
if (sev === 'unknown')
|
|
167
|
-
sev = lookedUp.get(id) ?? 'unknown';
|
|
335
|
+
sev = lookedUp.get(id)?.severity ?? 'unknown';
|
|
336
|
+
let bucket;
|
|
168
337
|
if (sev !== 'unknown') {
|
|
169
338
|
enrichedCount++;
|
|
170
339
|
if (sev === 'critical')
|
|
171
|
-
critical
|
|
340
|
+
bucket = 'critical';
|
|
172
341
|
else if (sev === 'high')
|
|
173
|
-
high
|
|
342
|
+
bucket = 'high';
|
|
174
343
|
else if (sev === 'medium')
|
|
175
|
-
medium
|
|
344
|
+
bucket = 'medium';
|
|
176
345
|
else
|
|
177
|
-
low
|
|
346
|
+
bucket = 'low';
|
|
178
347
|
}
|
|
179
348
|
else {
|
|
180
|
-
high
|
|
349
|
+
bucket = 'high'; // govulncheck legacy default
|
|
350
|
+
}
|
|
351
|
+
severityById.set(id, bucket);
|
|
352
|
+
if (bucket === 'critical')
|
|
353
|
+
critical++;
|
|
354
|
+
else if (bucket === 'high')
|
|
355
|
+
high++;
|
|
356
|
+
else if (bucket === 'medium')
|
|
357
|
+
medium++;
|
|
358
|
+
else
|
|
359
|
+
low++;
|
|
360
|
+
}
|
|
361
|
+
const topLevelIndex = loadGoTopLevelDepIndex(cwd);
|
|
362
|
+
const findings = [];
|
|
363
|
+
for (const grouped of groupedFindings.values()) {
|
|
364
|
+
if (!grouped.osv)
|
|
365
|
+
continue;
|
|
366
|
+
const trace0 = grouped.trace?.[0] ?? {};
|
|
367
|
+
const osvRec = embeddedOsv.get(grouped.osv);
|
|
368
|
+
// Prefer the trace module (project-specific), fall back to the OSV
|
|
369
|
+
// record's affected package name, then 'unknown' if neither shipped.
|
|
370
|
+
const pkgName = trace0.module ?? osvRec?.affected?.[0]?.package?.name ?? 'unknown';
|
|
371
|
+
const finding = {
|
|
372
|
+
id: grouped.osv,
|
|
373
|
+
package: pkgName,
|
|
374
|
+
installedVersion: trace0.version,
|
|
375
|
+
tool: 'govulncheck',
|
|
376
|
+
severity: severityById.get(grouped.osv) ?? 'high',
|
|
377
|
+
reachable: true,
|
|
378
|
+
};
|
|
379
|
+
if (grouped.fixed_version)
|
|
380
|
+
finding.fixedVersion = grouped.fixed_version;
|
|
381
|
+
// Capture the embedded CVSS (govulncheck bundles severity vectors
|
|
382
|
+
// for many third-party deps but rarely for stdlib). Alias-fallback
|
|
383
|
+
// happens in the batched resolveCvssScores pass after this loop.
|
|
384
|
+
const embeddedScore = osvRec ? (0, osv_1.extractOsvCvssScore)(osvRec) : null;
|
|
385
|
+
if (embeddedScore !== null)
|
|
386
|
+
finding.cvssScore = embeddedScore;
|
|
387
|
+
if (osvRec) {
|
|
388
|
+
const aliases = (osvRec.aliases ?? []).filter((a) => a && a.length > 0);
|
|
389
|
+
if (aliases.length > 0)
|
|
390
|
+
finding.aliases = aliases;
|
|
391
|
+
if (osvRec.summary)
|
|
392
|
+
finding.summary = osvRec.summary;
|
|
393
|
+
else if (osvRec.details)
|
|
394
|
+
finding.summary = osvRec.details;
|
|
395
|
+
const refs = (osvRec.references ?? []).map((r) => r.url).filter(Boolean);
|
|
396
|
+
if (refs.length > 0)
|
|
397
|
+
finding.references = refs;
|
|
398
|
+
}
|
|
399
|
+
// Synthesize an OSV.dev URL when the embedded record lacked references.
|
|
400
|
+
if (!finding.references) {
|
|
401
|
+
finding.references = [`https://osv.dev/vulnerability/${grouped.osv}`];
|
|
402
|
+
}
|
|
403
|
+
const parents = topLevelIndex.get(pkgName);
|
|
404
|
+
if (parents && parents.length > 0)
|
|
405
|
+
finding.topLevelDep = parents;
|
|
406
|
+
findings.push(finding);
|
|
407
|
+
}
|
|
408
|
+
// Alias-fallback CVSS pass: stdlib advisories (GO-YYYY-NNNN) often
|
|
409
|
+
// carry no CVSS in either govulncheck's embedded data or OSV.dev's
|
|
410
|
+
// GO-* record, while the corresponding CVE alias does (e.g.
|
|
411
|
+
// GO-2025-3750 → CVE-2025-0913). resolveCvssScores re-queries each
|
|
412
|
+
// alias for findings still missing a score, batched.
|
|
413
|
+
if (findings.length > 0) {
|
|
414
|
+
const cvssInputs = findings.map((f) => ({
|
|
415
|
+
primaryId: f.id,
|
|
416
|
+
embeddedCvss: f.cvssScore ?? null,
|
|
417
|
+
aliases: f.aliases ?? [],
|
|
418
|
+
}));
|
|
419
|
+
const resolved = await (0, osv_1.resolveCvssScores)(cvssInputs);
|
|
420
|
+
for (const f of findings) {
|
|
421
|
+
const score = resolved.get(f.id);
|
|
422
|
+
if (score !== null && score !== undefined)
|
|
423
|
+
f.cvssScore = score;
|
|
181
424
|
}
|
|
182
425
|
}
|
|
183
426
|
const envelope = {
|
|
@@ -187,6 +430,7 @@ async function gatherGoDepVulnsResult(cwd) {
|
|
|
187
430
|
// produced enrichment. Embedded-only severity isn't an OSV call.
|
|
188
431
|
enrichment: enrichedCount > 0 && needsLookup.length > 0 ? 'osv.dev' : null,
|
|
189
432
|
counts: { critical, high, medium, low },
|
|
433
|
+
findings,
|
|
190
434
|
};
|
|
191
435
|
return { kind: 'success', envelope };
|
|
192
436
|
}
|
|
@@ -392,6 +636,102 @@ const goTestFrameworkProvider = {
|
|
|
392
636
|
return gatherGoTestFrameworkResult(cwd);
|
|
393
637
|
},
|
|
394
638
|
};
|
|
639
|
+
/**
|
|
640
|
+
* Parse the NDJSON-ish stream emitted by `go list -m -json all`. The tool
|
|
641
|
+
* outputs concatenated `{...}` objects separated by no delimiter; each
|
|
642
|
+
* object starts with '{' and ends with '}' at column 0. Match each with
|
|
643
|
+
* a multiline regex and JSON.parse individually.
|
|
644
|
+
*/
|
|
645
|
+
function parseGoListModuleStream(raw) {
|
|
646
|
+
const out = [];
|
|
647
|
+
const re = /^\{[\s\S]*?^\}/gm;
|
|
648
|
+
let m;
|
|
649
|
+
while ((m = re.exec(raw)) !== null) {
|
|
650
|
+
try {
|
|
651
|
+
out.push(JSON.parse(m[0]));
|
|
652
|
+
}
|
|
653
|
+
catch {
|
|
654
|
+
/* skip malformed block */
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
return out;
|
|
658
|
+
}
|
|
659
|
+
/**
|
|
660
|
+
* Find the module whose path is the longest prefix of a Go package path,
|
|
661
|
+
* returning its version. go-licenses reports at the package level
|
|
662
|
+
* (`github.com/x/y/subpkg`) while `go list -m all` reports at the module
|
|
663
|
+
* level (`github.com/x/y`); longest-prefix match bridges the two.
|
|
664
|
+
*/
|
|
665
|
+
function goVersionForPackage(pkgPath, modules) {
|
|
666
|
+
let best = '';
|
|
667
|
+
for (const mod of modules.keys()) {
|
|
668
|
+
if ((pkgPath === mod || pkgPath.startsWith(mod + '/')) && mod.length > best.length) {
|
|
669
|
+
best = mod;
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
return modules.get(best) ?? '';
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* Single source of truth for the go pack's license gathering. Consumed
|
|
676
|
+
* by `goLicensesProvider` (capability dispatcher).
|
|
677
|
+
*
|
|
678
|
+
* Two-step merge: `go-licenses report .` emits per-package CSV
|
|
679
|
+
* (path,url,license) and `go list -m -json all` emits per-module
|
|
680
|
+
* versions. Modules and packages have different granularity in the
|
|
681
|
+
* Go module system, so we longest-prefix-match the package path
|
|
682
|
+
* against the module list. Returns null cleanly on any Go module
|
|
683
|
+
* without go-licenses installed, without go.mod, or when the tool
|
|
684
|
+
* fails (commonly because `go mod download` hasn't been run).
|
|
685
|
+
*/
|
|
686
|
+
function gatherGoLicensesResult(cwd) {
|
|
687
|
+
if (!(0, runner_1.fileExists)(cwd, 'go.mod'))
|
|
688
|
+
return null;
|
|
689
|
+
const status = (0, tool_registry_1.findTool)(tool_registry_1.TOOL_DEFS['go-licenses'], cwd);
|
|
690
|
+
if (!status.available || !status.path)
|
|
691
|
+
return null;
|
|
692
|
+
const csvRaw = (0, runner_1.run)(`${status.path} report . 2>/dev/null`, cwd, 180000);
|
|
693
|
+
if (!csvRaw)
|
|
694
|
+
return null;
|
|
695
|
+
const listRaw = (0, runner_1.run)('go list -m -json all 2>/dev/null', cwd, 60000);
|
|
696
|
+
const versions = new Map();
|
|
697
|
+
if (listRaw) {
|
|
698
|
+
for (const mod of parseGoListModuleStream(listRaw)) {
|
|
699
|
+
if (mod.Main)
|
|
700
|
+
continue;
|
|
701
|
+
if (mod.Path && mod.Version)
|
|
702
|
+
versions.set(mod.Path, mod.Version);
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
const findings = [];
|
|
706
|
+
for (const line of csvRaw.split('\n')) {
|
|
707
|
+
const trimmed = line.trim();
|
|
708
|
+
if (!trimmed)
|
|
709
|
+
continue;
|
|
710
|
+
const parts = trimmed.split(',');
|
|
711
|
+
if (parts.length < 3)
|
|
712
|
+
continue;
|
|
713
|
+
const pkg = parts[0].trim();
|
|
714
|
+
const url = parts[1].trim();
|
|
715
|
+
const license = parts[2].trim();
|
|
716
|
+
findings.push({
|
|
717
|
+
package: pkg,
|
|
718
|
+
version: goVersionForPackage(pkg, versions),
|
|
719
|
+
licenseType: license || 'UNKNOWN',
|
|
720
|
+
sourceUrl: url || undefined,
|
|
721
|
+
});
|
|
722
|
+
}
|
|
723
|
+
return {
|
|
724
|
+
schemaVersion: 1,
|
|
725
|
+
tool: 'go-licenses',
|
|
726
|
+
findings,
|
|
727
|
+
};
|
|
728
|
+
}
|
|
729
|
+
const goLicensesProvider = {
|
|
730
|
+
source: 'go',
|
|
731
|
+
async gather(cwd) {
|
|
732
|
+
return gatherGoLicensesResult(cwd);
|
|
733
|
+
},
|
|
734
|
+
};
|
|
395
735
|
exports.go = {
|
|
396
736
|
id: 'go',
|
|
397
737
|
displayName: 'Go',
|
|
@@ -401,7 +741,7 @@ exports.go = {
|
|
|
401
741
|
detect(cwd) {
|
|
402
742
|
return (0, runner_1.fileExists)(cwd, 'go.mod');
|
|
403
743
|
},
|
|
404
|
-
tools: ['golangci-lint', 'govulncheck'],
|
|
744
|
+
tools: ['golangci-lint', 'govulncheck', 'go-licenses'],
|
|
405
745
|
semgrepRulesets: ['p/gosec'],
|
|
406
746
|
capabilities: {
|
|
407
747
|
depVulns: goDepVulnsProvider,
|
|
@@ -409,6 +749,7 @@ exports.go = {
|
|
|
409
749
|
coverage: goCoverageProvider,
|
|
410
750
|
imports: goImportsProvider,
|
|
411
751
|
testFramework: goTestFrameworkProvider,
|
|
752
|
+
licenses: goLicensesProvider,
|
|
412
753
|
},
|
|
413
754
|
mapLintSeverity: mapGolangciLinterSeverity,
|
|
414
755
|
};
|
package/dist/languages/go.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../src/languages/go.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../src/languages/go.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,34 @@
|
|
|
1
1
|
import type { LanguageSupport } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Pure parser for `pip show pkg1 pkg2 ...` output. pip-show returns
|
|
4
|
+
* RFC-822-ish blocks separated by `---` with `Key: Value` lines. The
|
|
5
|
+
* fields we need:
|
|
6
|
+
*
|
|
7
|
+
* Name: foo
|
|
8
|
+
* Requires: a, b, c
|
|
9
|
+
* Required-by: x, y
|
|
10
|
+
*
|
|
11
|
+
* Empty `Required-by` identifies a package that nothing else in the
|
|
12
|
+
* env depends on — conventionally a directly-installed (top-level)
|
|
13
|
+
* package. Extracted so the builder below can be unit-tested without
|
|
14
|
+
* a live pip invocation.
|
|
15
|
+
*/
|
|
16
|
+
export declare function parsePipShowOutput(raw: string): Map<string, {
|
|
17
|
+
requires: string[];
|
|
18
|
+
requiredBy: string[];
|
|
19
|
+
}>;
|
|
20
|
+
/**
|
|
21
|
+
* BFS the parsed pip-show graph to produce a per-package-name index of
|
|
22
|
+
* its top-level ancestors. Top-levels are packages with empty
|
|
23
|
+
* `Required-by` — nothing else in the environment depends on them, so
|
|
24
|
+
* they were installed as direct deps.
|
|
25
|
+
*
|
|
26
|
+
* Pure function; testable with fabricated graphs.
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildPyTopLevelDepIndex(graph: Map<string, {
|
|
29
|
+
requires: string[];
|
|
30
|
+
requiredBy: string[];
|
|
31
|
+
}>): Map<string, string[]>;
|
|
2
32
|
/**
|
|
3
33
|
* Capture Python module specifiers from source text. Handles both
|
|
4
34
|
* `from X import Y` and bare `import X, Y as Z` forms. Exported so
|
|
@@ -13,5 +43,24 @@ export declare function extractPyImportsRaw(content: string): string[];
|
|
|
13
43
|
* Exported for unit testing.
|
|
14
44
|
*/
|
|
15
45
|
export declare function resolvePyImportRaw(fromFile: string, spec: string, cwd: string): string | null;
|
|
46
|
+
/**
|
|
47
|
+
* Locate the project's own Python interpreter.
|
|
48
|
+
*
|
|
49
|
+
* Detection order (fail-cheap first, subprocess last):
|
|
50
|
+
* 1. `./.venv` or `./venv` under cwd — uv default, in-project
|
|
51
|
+
* poetry (`virtualenvs.in-project = true`), hand-rolled venvs.
|
|
52
|
+
* Zero-cost stat() checks.
|
|
53
|
+
* 2. `$VIRTUAL_ENV` env var — set by `source .venv/bin/activate`
|
|
54
|
+
* and poetry shell. Catches externally-activated envs.
|
|
55
|
+
* 3. `poetry env info --path` — external poetry venvs
|
|
56
|
+
* (default `virtualenvs.in-project = false` on most installs;
|
|
57
|
+
* env lives in `~/.cache/pypoetry/virtualenvs/<hash>`).
|
|
58
|
+
* 4. `pipenv --venv` — pipenv default stores elsewhere too.
|
|
59
|
+
*
|
|
60
|
+
* Returns null if no venv is resolvable — the provider then skips
|
|
61
|
+
* cleanly rather than falling through to pip-licenses's install env
|
|
62
|
+
* (which would report dxkit's own packages, not the project's).
|
|
63
|
+
*/
|
|
64
|
+
export declare function findPyProjectVenvPython(cwd: string): string | null;
|
|
16
65
|
export declare const python: LanguageSupport;
|
|
17
66
|
//# sourceMappingURL=python.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/languages/python.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/languages/python.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAyF7D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA6B3D;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAC/D,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA0BvB;AAoPD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB7F;AAuHD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8BlE;AAyED,eAAO,MAAM,MAAM,EAAE,eA8BpB,CAAC"}
|