@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/csharp.js
CHANGED
|
@@ -35,10 +35,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.csharp = void 0;
|
|
37
37
|
exports.parseCoberturaXml = parseCoberturaXml;
|
|
38
|
+
exports.parseDotnetVulnerableOutput = parseDotnetVulnerableOutput;
|
|
39
|
+
exports.parseProjectAssetsJson = parseProjectAssetsJson;
|
|
40
|
+
exports.buildCsharpTopLevelDepIndex = buildCsharpTopLevelDepIndex;
|
|
38
41
|
exports.extractCsharpImportsRaw = extractCsharpImportsRaw;
|
|
39
42
|
const fs = __importStar(require("fs"));
|
|
40
43
|
const path = __importStar(require("path"));
|
|
41
44
|
const exclusions_1 = require("../analyzers/tools/exclusions");
|
|
45
|
+
const osv_1 = require("../analyzers/tools/osv");
|
|
42
46
|
const runner_1 = require("../analyzers/tools/runner");
|
|
43
47
|
const tool_registry_1 = require("../analyzers/tools/tool-registry");
|
|
44
48
|
function dirHasMatching(dir, regex) {
|
|
@@ -135,52 +139,354 @@ function parseCoberturaXml(raw, sourceFile, cwd) {
|
|
|
135
139
|
const rel = path.relative(cwd, path.resolve(cwd, sourceFile)).split(path.sep).join('/');
|
|
136
140
|
return { source: 'cobertura', sourceFile: rel || sourceFile, linePercent, files };
|
|
137
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Map dotnet's textual severity to the four-tier `SeverityCounts`
|
|
144
|
+
* domain. NuGet uses critical/high/moderate/low (moderate maps to
|
|
145
|
+
* medium, matching npm-audit).
|
|
146
|
+
*/
|
|
147
|
+
function normalizeDotnetSeverity(s) {
|
|
148
|
+
switch (s?.toLowerCase()) {
|
|
149
|
+
case 'critical':
|
|
150
|
+
return 'critical';
|
|
151
|
+
case 'high':
|
|
152
|
+
return 'high';
|
|
153
|
+
case 'moderate':
|
|
154
|
+
case 'medium':
|
|
155
|
+
return 'medium';
|
|
156
|
+
default:
|
|
157
|
+
return 'low';
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Extract the GHSA identifier from an advisory URL like
|
|
162
|
+
* `https://github.com/advisories/GHSA-...`. dotnet's --vulnerable
|
|
163
|
+
* output uses the GitHub advisory URL almost universally, so this
|
|
164
|
+
* is the primary id source for C# findings.
|
|
165
|
+
*/
|
|
166
|
+
function extractGhsaIdFromUrl(url) {
|
|
167
|
+
if (!url)
|
|
168
|
+
return null;
|
|
169
|
+
const m = url.match(/GHSA-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}/i);
|
|
170
|
+
return m ? m[0].toUpperCase() : null;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
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.
|
|
187
|
+
*/
|
|
188
|
+
function parseDotnetVulnerableOutput(raw) {
|
|
189
|
+
let data;
|
|
190
|
+
try {
|
|
191
|
+
data = JSON.parse(raw);
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
let critical = 0;
|
|
197
|
+
let high = 0;
|
|
198
|
+
let medium = 0;
|
|
199
|
+
let low = 0;
|
|
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
|
+
};
|
|
230
|
+
for (const proj of data.projects ?? []) {
|
|
231
|
+
for (const fw of proj.frameworks ?? []) {
|
|
232
|
+
for (const pkg of fw.topLevelPackages ?? []) {
|
|
233
|
+
if (!pkg.id)
|
|
234
|
+
continue;
|
|
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);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return { counts: { critical, high, medium, low }, findings };
|
|
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
|
+
}
|
|
138
397
|
/**
|
|
139
398
|
* Single source of truth for the csharp pack's dep-vuln gathering.
|
|
140
399
|
* Consumed by `csharpDepVulnsProvider` (capability dispatcher). Runs
|
|
141
400
|
* independently of `dotnet-format` availability — historical bug where
|
|
142
401
|
* projects with `dotnet` but no `dotnet-format` saw zero vuln data.
|
|
402
|
+
*
|
|
403
|
+
* Project-file gating: dotnet list requires a .csproj or .sln in cwd
|
|
404
|
+
* to identify what to scan. Without one it'd fail with a non-JSON
|
|
405
|
+
* error message. Mirrors the python pack manifest gating from 10h.3.3
|
|
406
|
+
* — return null cleanly rather than scan an unrelated scope.
|
|
143
407
|
*/
|
|
144
408
|
async function gatherCsharpDepVulnsResult(cwd) {
|
|
145
|
-
|
|
409
|
+
if (!hasCsharpProject(cwd))
|
|
410
|
+
return { kind: 'tool-missing' };
|
|
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);
|
|
146
416
|
if (!vulnRaw)
|
|
147
417
|
return { kind: 'no-output' };
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}
|
|
168
|
-
}
|
|
418
|
+
const parsed = parseDotnetVulnerableOutput(vulnRaw);
|
|
419
|
+
if (!parsed)
|
|
420
|
+
return { kind: 'parse-error' };
|
|
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;
|
|
169
437
|
}
|
|
170
438
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
439
|
+
}
|
|
440
|
+
// Alias-fallback CVSS pass: dotnet --vulnerable ships zero CVSS data
|
|
441
|
+
// per advisory; the GHSA id (extracted from advisoryUrl) is the only
|
|
442
|
+
// anchor. resolveCvssScores looks up via GHSA → CVE alias chain.
|
|
443
|
+
if (findings.length > 0) {
|
|
444
|
+
const cvssInputs = findings.map((f) => ({
|
|
445
|
+
primaryId: f.id,
|
|
446
|
+
embeddedCvss: f.cvssScore ?? null,
|
|
447
|
+
aliases: f.aliases ?? [],
|
|
448
|
+
}));
|
|
449
|
+
const resolved = await (0, osv_1.resolveCvssScores)(cvssInputs);
|
|
450
|
+
for (const f of findings) {
|
|
451
|
+
const score = resolved.get(f.id);
|
|
452
|
+
if (score !== null && score !== undefined)
|
|
453
|
+
f.cvssScore = score;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
const envelope = {
|
|
457
|
+
schemaVersion: 1,
|
|
458
|
+
tool: 'dotnet-vulnerable',
|
|
459
|
+
enrichment: null,
|
|
460
|
+
counts,
|
|
461
|
+
findings,
|
|
462
|
+
};
|
|
463
|
+
return { kind: 'success', envelope };
|
|
464
|
+
}
|
|
465
|
+
/** True if `cwd` has a .csproj or .sln file at depth 0 or 1 (workspace
|
|
466
|
+
* layouts often nest projects one level under the repo root). */
|
|
467
|
+
function hasCsharpProject(cwd) {
|
|
468
|
+
let entries;
|
|
469
|
+
try {
|
|
470
|
+
entries = fs.readdirSync(cwd, { withFileTypes: true });
|
|
180
471
|
}
|
|
181
472
|
catch {
|
|
182
|
-
return
|
|
473
|
+
return false;
|
|
474
|
+
}
|
|
475
|
+
for (const e of entries) {
|
|
476
|
+
if (e.isFile() && (e.name.endsWith('.csproj') || e.name.endsWith('.sln')))
|
|
477
|
+
return true;
|
|
478
|
+
if (e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules') {
|
|
479
|
+
try {
|
|
480
|
+
const sub = fs.readdirSync(path.join(cwd, e.name), { withFileTypes: true });
|
|
481
|
+
if (sub.some((s) => s.isFile() && (s.name.endsWith('.csproj') || s.name.endsWith('.sln'))))
|
|
482
|
+
return true;
|
|
483
|
+
}
|
|
484
|
+
catch {
|
|
485
|
+
/* unreadable subdir — ignore */
|
|
486
|
+
}
|
|
487
|
+
}
|
|
183
488
|
}
|
|
489
|
+
return false;
|
|
184
490
|
}
|
|
185
491
|
const csharpDepVulnsProvider = {
|
|
186
492
|
source: 'csharp',
|
|
@@ -330,6 +636,84 @@ const csharpTestFrameworkProvider = {
|
|
|
330
636
|
return gatherCsharpTestFrameworkResult(cwd);
|
|
331
637
|
},
|
|
332
638
|
};
|
|
639
|
+
/**
|
|
640
|
+
* Locate the best input for nuget-license. Prefers a `.sln` at repo
|
|
641
|
+
* root (covers every csproj in the solution in one pass), falls back
|
|
642
|
+
* to any `.csproj` found within three levels. Returns an absolute path
|
|
643
|
+
* or null — callers skip cleanly on null.
|
|
644
|
+
*/
|
|
645
|
+
function findCsharpLicenseInput(cwd) {
|
|
646
|
+
// .sln in root first — one pass over the whole solution.
|
|
647
|
+
let entries;
|
|
648
|
+
try {
|
|
649
|
+
entries = fs.readdirSync(cwd, { withFileTypes: true });
|
|
650
|
+
}
|
|
651
|
+
catch {
|
|
652
|
+
return null;
|
|
653
|
+
}
|
|
654
|
+
const sln = entries.find((e) => e.isFile() && e.name.endsWith('.sln'));
|
|
655
|
+
if (sln)
|
|
656
|
+
return path.join(cwd, sln.name);
|
|
657
|
+
// Fall back to first .csproj reachable within the standard depth.
|
|
658
|
+
return findMatchingRecursive(cwd, /\.csproj$/, 3);
|
|
659
|
+
}
|
|
660
|
+
/**
|
|
661
|
+
* Single source of truth for the csharp pack's license gathering.
|
|
662
|
+
* Consumed by `csharpLicensesProvider` (capability dispatcher).
|
|
663
|
+
*
|
|
664
|
+
* Delegates entirely to the `nuget-license` global .NET tool (OSS,
|
|
665
|
+
* MIT-licensed, established) — no custom .nuspec or project.assets.json
|
|
666
|
+
* parsing. Matches the pattern of the other four packs: one ecosystem
|
|
667
|
+
* tool, wrapped. Returns null cleanly when no .sln/.csproj is present
|
|
668
|
+
* or when the tool isn't installed.
|
|
669
|
+
*/
|
|
670
|
+
function gatherCsharpLicensesResult(cwd) {
|
|
671
|
+
const input = findCsharpLicenseInput(cwd);
|
|
672
|
+
if (!input)
|
|
673
|
+
return null;
|
|
674
|
+
const status = (0, tool_registry_1.findTool)(tool_registry_1.TOOL_DEFS['nuget-license'], cwd);
|
|
675
|
+
if (!status.available || !status.path)
|
|
676
|
+
return null;
|
|
677
|
+
const raw = (0, runner_1.run)(`${status.path} -i "${input}" -o JsonPretty 2>/dev/null`, cwd, 180000);
|
|
678
|
+
if (!raw)
|
|
679
|
+
return null;
|
|
680
|
+
let data;
|
|
681
|
+
try {
|
|
682
|
+
data = JSON.parse(raw);
|
|
683
|
+
}
|
|
684
|
+
catch {
|
|
685
|
+
return null;
|
|
686
|
+
}
|
|
687
|
+
if (!Array.isArray(data))
|
|
688
|
+
return null;
|
|
689
|
+
const findings = [];
|
|
690
|
+
for (const entry of data) {
|
|
691
|
+
if (!entry.PackageId || !entry.PackageVersion)
|
|
692
|
+
continue;
|
|
693
|
+
const license = entry.License && entry.License.length > 0 ? entry.License : 'UNKNOWN';
|
|
694
|
+
findings.push({
|
|
695
|
+
package: entry.PackageId,
|
|
696
|
+
version: entry.PackageVersion,
|
|
697
|
+
licenseType: license,
|
|
698
|
+
sourceUrl: (entry.PackageProjectUrl && entry.PackageProjectUrl.length > 0
|
|
699
|
+
? entry.PackageProjectUrl
|
|
700
|
+
: entry.LicenseUrl) || undefined,
|
|
701
|
+
description: entry.Description && entry.Description.length > 0 ? entry.Description : undefined,
|
|
702
|
+
supplier: entry.Authors && entry.Authors.length > 0 ? entry.Authors : undefined,
|
|
703
|
+
});
|
|
704
|
+
}
|
|
705
|
+
return {
|
|
706
|
+
schemaVersion: 1,
|
|
707
|
+
tool: 'nuget-license',
|
|
708
|
+
findings,
|
|
709
|
+
};
|
|
710
|
+
}
|
|
711
|
+
const csharpLicensesProvider = {
|
|
712
|
+
source: 'csharp',
|
|
713
|
+
async gather(cwd) {
|
|
714
|
+
return gatherCsharpLicensesResult(cwd);
|
|
715
|
+
},
|
|
716
|
+
};
|
|
333
717
|
exports.csharp = {
|
|
334
718
|
id: 'csharp',
|
|
335
719
|
displayName: 'C#',
|
|
@@ -341,7 +725,7 @@ exports.csharp = {
|
|
|
341
725
|
detect(cwd) {
|
|
342
726
|
return (dirHasMatching(cwd, /\.(sln|csproj)$/) || findMatchingRecursive(cwd, /\.csproj$/, 3) !== null);
|
|
343
727
|
},
|
|
344
|
-
tools: ['dotnet-format'],
|
|
728
|
+
tools: ['dotnet-format', 'nuget-license'],
|
|
345
729
|
// p/csharp semgrep ruleset is sparse — skip until it matures.
|
|
346
730
|
semgrepRulesets: [],
|
|
347
731
|
capabilities: {
|
|
@@ -350,6 +734,7 @@ exports.csharp = {
|
|
|
350
734
|
coverage: csharpCoverageProvider,
|
|
351
735
|
imports: csharpImportsProvider,
|
|
352
736
|
testFramework: csharpTestFrameworkProvider,
|
|
737
|
+
licenses: csharpLicensesProvider,
|
|
353
738
|
},
|
|
354
739
|
// mapLintSeverity intentionally omitted: dotnet-format is a formatter,
|
|
355
740
|
// not a tiered linter. It emits binary pass/fail per file and doesn't
|
|
@@ -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":"
|
|
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"}
|