@vyuhlabs/dxkit 2.9.4 → 2.10.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 +138 -0
- package/dist/allowlist/annotate.d.ts +71 -0
- package/dist/allowlist/annotate.d.ts.map +1 -0
- package/dist/allowlist/annotate.js +105 -0
- package/dist/allowlist/annotate.js.map +1 -0
- package/dist/allowlist/cli.d.ts +6 -0
- package/dist/allowlist/cli.d.ts.map +1 -1
- package/dist/allowlist/cli.js +70 -37
- package/dist/allowlist/cli.js.map +1 -1
- package/dist/analyzers/dashboard/index.d.ts.map +1 -1
- package/dist/analyzers/dashboard/index.js +6 -1
- package/dist/analyzers/dashboard/index.js.map +1 -1
- package/dist/analyzers/health.d.ts.map +1 -1
- package/dist/analyzers/health.js +17 -2
- package/dist/analyzers/health.js.map +1 -1
- package/dist/analyzers/security/actions.d.ts.map +1 -1
- package/dist/analyzers/security/actions.js +13 -0
- package/dist/analyzers/security/actions.js.map +1 -1
- package/dist/analyzers/security/aggregator.d.ts +18 -0
- package/dist/analyzers/security/aggregator.d.ts.map +1 -1
- package/dist/analyzers/security/aggregator.js +28 -0
- package/dist/analyzers/security/aggregator.js.map +1 -1
- package/dist/analyzers/security/gather.d.ts.map +1 -1
- package/dist/analyzers/security/gather.js +6 -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 +81 -2
- package/dist/analyzers/security/index.js.map +1 -1
- package/dist/analyzers/security/scanner-drift.d.ts +21 -0
- package/dist/analyzers/security/scanner-drift.d.ts.map +1 -0
- package/dist/analyzers/security/scanner-drift.js +113 -0
- package/dist/analyzers/security/scanner-drift.js.map +1 -0
- package/dist/analyzers/security/shallow.d.ts.map +1 -1
- package/dist/analyzers/security/shallow.js +24 -2
- package/dist/analyzers/security/shallow.js.map +1 -1
- package/dist/analyzers/security/types.d.ts +38 -0
- package/dist/analyzers/security/types.d.ts.map +1 -1
- package/dist/analyzers/tools/graphify.d.ts +11 -0
- package/dist/analyzers/tools/graphify.d.ts.map +1 -1
- package/dist/analyzers/tools/graphify.js +429 -413
- package/dist/analyzers/tools/graphify.js.map +1 -1
- package/dist/analyzers/tools/grep-secrets.d.ts.map +1 -1
- package/dist/analyzers/tools/grep-secrets.js +9 -0
- package/dist/analyzers/tools/grep-secrets.js.map +1 -1
- package/dist/analyzers/tools/osv-scanner-fix.d.ts.map +1 -1
- package/dist/analyzers/tools/osv-scanner-fix.js +12 -1
- package/dist/analyzers/tools/osv-scanner-fix.js.map +1 -1
- package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
- package/dist/analyzers/tools/tool-registry.js +78 -43
- package/dist/analyzers/tools/tool-registry.js.map +1 -1
- package/dist/analyzers/tools/walk-source-files.d.ts +10 -0
- package/dist/analyzers/tools/walk-source-files.d.ts.map +1 -1
- package/dist/analyzers/tools/walk-source-files.js +14 -0
- package/dist/analyzers/tools/walk-source-files.js.map +1 -1
- package/dist/analyzers/types.d.ts +9 -0
- package/dist/analyzers/types.d.ts.map +1 -1
- package/dist/baseline/entry-to-located.d.ts +12 -5
- package/dist/baseline/entry-to-located.d.ts.map +1 -1
- package/dist/baseline/entry-to-located.js +21 -7
- package/dist/baseline/entry-to-located.js.map +1 -1
- package/dist/baseline/git-aware-match.d.ts +7 -5
- package/dist/baseline/git-aware-match.d.ts.map +1 -1
- package/dist/baseline/git-aware-match.js +78 -5
- package/dist/baseline/git-aware-match.js.map +1 -1
- package/dist/explore/context-hook.d.ts +49 -29
- package/dist/explore/context-hook.d.ts.map +1 -1
- package/dist/explore/context-hook.js +304 -29
- package/dist/explore/context-hook.js.map +1 -1
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +13 -7
- package/dist/generator.js.map +1 -1
- package/dist/ingest/snyk-policy.d.ts +22 -1
- package/dist/ingest/snyk-policy.d.ts.map +1 -1
- package/dist/ingest/snyk-policy.js +75 -18
- package/dist/ingest/snyk-policy.js.map +1 -1
- package/dist/languages/index.d.ts +28 -5
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +38 -7
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/typescript.d.ts.map +1 -1
- package/dist/languages/typescript.js +19 -0
- package/dist/languages/typescript.js.map +1 -1
- package/dist/scoring/dimensions/security.d.ts +17 -0
- package/dist/scoring/dimensions/security.d.ts.map +1 -1
- package/dist/scoring/dimensions/security.js +12 -0
- package/dist/scoring/dimensions/security.js.map +1 -1
- package/package.json +1 -1
- package/templates/.claude/skills/dxkit-action/SKILL.md +11 -2
- package/templates/.claude/skills/dxkit-allowlist/SKILL.md +9 -0
- package/templates/.claude/skills/dxkit-onboard/SKILL.md +2 -2
|
@@ -47,6 +47,8 @@ const cache_1 = require("../cache");
|
|
|
47
47
|
const health_1 = require("../health");
|
|
48
48
|
const languages_1 = require("../../languages");
|
|
49
49
|
const tools_unavailable_prose_1 = require("../tools/tools-unavailable-prose");
|
|
50
|
+
const walk_source_files_1 = require("../tools/walk-source-files");
|
|
51
|
+
const scanner_drift_1 = require("./scanner-drift");
|
|
50
52
|
/**
|
|
51
53
|
* G_v4_4 (2.4.7): build the "Remediation Commands" entry for one
|
|
52
54
|
* dep-vuln finding by dispatching through the producing pack's
|
|
@@ -158,6 +160,10 @@ async function analyzeSecurity(repoPath, options = {}) {
|
|
|
158
160
|
// Derived from the dedup'd aggregate, NOT from raw envelope arrays —
|
|
159
161
|
// that's the D086/D091 closure. Sum of unique findings across the
|
|
160
162
|
// code/secret/config categories.
|
|
163
|
+
// Already carry their allowlist annotation (`allowlisted` /
|
|
164
|
+
// `allowlistCategory`) — the aggregator stamps it at build time, so
|
|
165
|
+
// the renderer's "(N allowlisted)" counts and the score-lift share one
|
|
166
|
+
// source of truth instead of a second annotation pass here.
|
|
161
167
|
const codeFindings = [
|
|
162
168
|
...aggregate.findingsByCategory.secret,
|
|
163
169
|
...aggregate.findingsByCategory.code,
|
|
@@ -203,6 +209,13 @@ async function analyzeSecurity(repoPath, options = {}) {
|
|
|
203
209
|
total: aggregate.dependencyAdvisoryUniqueCount,
|
|
204
210
|
findings: [...aggregate.findingsByCategory.dependency],
|
|
205
211
|
};
|
|
212
|
+
// Did the scanner set grow since the last run? If so the report
|
|
213
|
+
// discloses that new findings are newly *visible*, not newly
|
|
214
|
+
// *introduced* — the root-cause explanation for a score that "got
|
|
215
|
+
// worse" on an unchanged commit after a dxkit upgrade enabled more
|
|
216
|
+
// scanners. Read-only + fail-open; compared against the most recent
|
|
217
|
+
// prior persisted report.
|
|
218
|
+
const scannerDrift = (0, scanner_drift_1.detectScannerCoverageDrift)(result.cwd, toolsUsed, result.builtAt.slice(0, 10));
|
|
206
219
|
return {
|
|
207
220
|
repo: stack.projectName || path.basename(result.cwd),
|
|
208
221
|
analyzedAt: result.builtAt,
|
|
@@ -213,12 +226,57 @@ async function analyzeSecurity(repoPath, options = {}) {
|
|
|
213
226
|
codeOnly: codeOnlySummary,
|
|
214
227
|
secretsOnly: secretsOnlySummary,
|
|
215
228
|
dependencies: depSummary,
|
|
229
|
+
// Scanner run-state for the score adapter's uncertainty
|
|
230
|
+
// caps — same canonical provenance the toolsUnavailable list
|
|
231
|
+
// above is derived from.
|
|
232
|
+
secretsAvailable: aggregate.provenance.secrets.ran,
|
|
233
|
+
codePatternsAvailable: aggregate.provenance.codePatterns.ran,
|
|
216
234
|
},
|
|
217
235
|
findings: codeFindings,
|
|
218
236
|
toolsUsed,
|
|
219
237
|
toolsUnavailable,
|
|
238
|
+
...(scannerDrift ? { scannerDrift } : {}),
|
|
220
239
|
};
|
|
221
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Inline " (N allowlisted)" suffix for a subtotal cell, or empty
|
|
243
|
+
* string when nothing in the axis is allowlisted. Keeps the raw count
|
|
244
|
+
* authoritative while disclosing how much of it is reviewed-and-accepted.
|
|
245
|
+
*/
|
|
246
|
+
function allowlistedSuffix(allowlisted) {
|
|
247
|
+
return allowlisted > 0 ? ` (${allowlisted} allowlisted)` : '';
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Explanatory note under a findings table when some of its
|
|
251
|
+
* findings are allowlisted. Clarifies that the raw count is unchanged
|
|
252
|
+
* and the suppressed items are reviewed-and-accepted, not hidden.
|
|
253
|
+
*/
|
|
254
|
+
function pushAllowlistedNote(L, allowlisted) {
|
|
255
|
+
if (allowlisted <= 0)
|
|
256
|
+
return;
|
|
257
|
+
L.push(`> ℹ ${allowlisted} of the above ${allowlisted === 1 ? 'finding is' : 'findings are'} ` +
|
|
258
|
+
`covered by an active allowlist entry (reviewed and accepted). Counts above are raw ` +
|
|
259
|
+
`totals; the guardrail does not block on allowlisted findings.`);
|
|
260
|
+
L.push('');
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Triage guidance for secret findings that sit in test files and aren't
|
|
264
|
+
* yet allowlisted. dxkit never lowers a secret's severity by location —
|
|
265
|
+
* a real credential leaked into a test is still a leak — so these surface
|
|
266
|
+
* at full severity and the reader decides: throwaway fixture (allowlist
|
|
267
|
+
* it) or real credential (rotate it). `count` is the un-allowlisted,
|
|
268
|
+
* test-located secret/config findings.
|
|
269
|
+
*/
|
|
270
|
+
function pushTestSecretGuidance(L, count) {
|
|
271
|
+
if (count <= 0)
|
|
272
|
+
return;
|
|
273
|
+
L.push(`> 🔍 ${count} of the above ${count === 1 ? 'finding is' : 'findings are'} in test files. ` +
|
|
274
|
+
`dxkit does not lower a secret's severity by location — a real credential leaked into a ` +
|
|
275
|
+
`test is still a leak. Review each: if it's a throwaway fixture, allowlist it with ` +
|
|
276
|
+
'`vyuh-dxkit allowlist add --category test-fixture` (which also lifts it from the Security ' +
|
|
277
|
+
`score); if it's a real credential, rotate it and remove it from git history.`);
|
|
278
|
+
L.push('');
|
|
279
|
+
}
|
|
222
280
|
function formatSecurityReport(report, elapsed) {
|
|
223
281
|
const L = [];
|
|
224
282
|
L.push('# Vulnerability Scan Report');
|
|
@@ -229,6 +287,18 @@ function formatSecurityReport(report, elapsed) {
|
|
|
229
287
|
L.push('');
|
|
230
288
|
L.push('---');
|
|
231
289
|
L.push('');
|
|
290
|
+
// Scanner-coverage-drift note. Surfaced at the very top so a
|
|
291
|
+
// reader who sees a worse score knows to attribute it to improved
|
|
292
|
+
// measurement, not regressed code, BEFORE reading the numbers.
|
|
293
|
+
if (report.scannerDrift) {
|
|
294
|
+
const { added, previousDate } = report.scannerDrift;
|
|
295
|
+
const toolList = added.map((t) => `\`${t}\``).join(', ');
|
|
296
|
+
L.push(`> ℹ **Scanner coverage expanded since ${previousDate}.** This run added ` +
|
|
297
|
+
`${toolList}. Findings these scanners surface are newly **visible**, not newly ` +
|
|
298
|
+
`**introduced** — if the score moved, it reflects improved measurement of code ` +
|
|
299
|
+
`that was already there, not new risk.`);
|
|
300
|
+
L.push('');
|
|
301
|
+
}
|
|
232
302
|
// C2.1 (perception D086 closure): three independent axes, each with
|
|
233
303
|
// its own labeled table. Pre-C2.1 the executive summary had a single
|
|
234
304
|
// "Code Findings" table that combined code+secret+config under one
|
|
@@ -253,6 +323,7 @@ function formatSecurityReport(report, elapsed) {
|
|
|
253
323
|
const codeSources = [
|
|
254
324
|
...new Set(report.findings.filter((f) => f.category === 'code').map((f) => f.tool)),
|
|
255
325
|
].sort();
|
|
326
|
+
const codeAllowlisted = report.findings.filter((f) => f.category === 'code' && f.allowlisted).length;
|
|
256
327
|
L.push('### Code Findings');
|
|
257
328
|
L.push('');
|
|
258
329
|
L.push(`_Sources: ${codeSources.join(', ') || '(none)'}_`);
|
|
@@ -263,8 +334,9 @@ function formatSecurityReport(report, elapsed) {
|
|
|
263
334
|
L.push(`| HIGH | ${c.high} |`);
|
|
264
335
|
L.push(`| MEDIUM | ${c.medium} |`);
|
|
265
336
|
L.push(`| LOW | ${c.low} |`);
|
|
266
|
-
L.push(`| **Subtotal** | **${c.total}
|
|
337
|
+
L.push(`| **Subtotal** | **${c.total}**${allowlistedSuffix(codeAllowlisted)} |`);
|
|
267
338
|
L.push('');
|
|
339
|
+
pushAllowlistedNote(L, codeAllowlisted);
|
|
268
340
|
// Secret + config severity table. Reads `summary.secretsOnly` from
|
|
269
341
|
// the aggregator's `secretsBySeverity` axis.
|
|
270
342
|
const secretSources = [
|
|
@@ -272,6 +344,11 @@ function formatSecurityReport(report, elapsed) {
|
|
|
272
344
|
.filter((f) => f.category === 'secret' || f.category === 'config')
|
|
273
345
|
.map((f) => f.tool)),
|
|
274
346
|
].sort();
|
|
347
|
+
const secretConfig = report.findings.filter((f) => f.category === 'secret' || f.category === 'config');
|
|
348
|
+
const secretAllowlisted = secretConfig.filter((f) => f.allowlisted).length;
|
|
349
|
+
// Un-allowlisted secrets that live in test files — surfaced for triage
|
|
350
|
+
// (fixture → allowlist, or real → rotate), never auto-suppressed.
|
|
351
|
+
const secretsInTests = secretConfig.filter((f) => !f.allowlisted && (0, walk_source_files_1.isTestSourceFile)(f.file)).length;
|
|
275
352
|
L.push('### Secret & Config Findings');
|
|
276
353
|
L.push('');
|
|
277
354
|
L.push(`_Sources: ${secretSources.join(', ') || '(none)'}_`);
|
|
@@ -282,8 +359,10 @@ function formatSecurityReport(report, elapsed) {
|
|
|
282
359
|
L.push(`| HIGH | ${k.high} |`);
|
|
283
360
|
L.push(`| MEDIUM | ${k.medium} |`);
|
|
284
361
|
L.push(`| LOW | ${k.low} |`);
|
|
285
|
-
L.push(`| **Subtotal** | **${k.total}
|
|
362
|
+
L.push(`| **Subtotal** | **${k.total}**${allowlistedSuffix(secretAllowlisted)} |`);
|
|
286
363
|
L.push('');
|
|
364
|
+
pushAllowlistedNote(L, secretAllowlisted);
|
|
365
|
+
pushTestSecretGuidance(L, secretsInTests);
|
|
287
366
|
L.push('### Dependency Vulnerabilities');
|
|
288
367
|
L.push('');
|
|
289
368
|
if (d.tool) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzers/security/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzers/security/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface ScannerCoverageDrift {
|
|
2
|
+
/** Scanners present this run but absent from the most recent prior
|
|
3
|
+
* report — the tools whose findings are newly visible. */
|
|
4
|
+
readonly added: string[];
|
|
5
|
+
/** Date (YYYY-MM-DD) of the prior report compared against. */
|
|
6
|
+
readonly previousDate: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Detect scanners added since the most recent prior vuln-scan report.
|
|
10
|
+
* Returns `null` when there is no prior report, none is readable, or the
|
|
11
|
+
* scanner set did not grow (a shrinking or identical set is not the
|
|
12
|
+
* confusing case this note addresses).
|
|
13
|
+
*
|
|
14
|
+
* `currentDate` is this run's report date (YYYY-MM-DD); prior reports on
|
|
15
|
+
* a strictly earlier date are eligible. Same-day files are skipped: a
|
|
16
|
+
* report dated today is either this run's own prior invocation (already
|
|
17
|
+
* the post-expansion set — comparing would hide the drift) or about to
|
|
18
|
+
* be overwritten, so an earlier day is the honest comparison point.
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectScannerCoverageDrift(repoPath: string, currentTools: readonly string[], currentDate: string): ScannerCoverageDrift | null;
|
|
21
|
+
//# sourceMappingURL=scanner-drift.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner-drift.d.ts","sourceRoot":"","sources":["../../../src/analyzers/security/scanner-drift.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,oBAAoB;IACnC;+DAC2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,WAAW,EAAE,MAAM,GAClB,oBAAoB,GAAG,IAAI,CAyB7B"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.detectScannerCoverageDrift = detectScannerCoverageDrift;
|
|
37
|
+
/**
|
|
38
|
+
* Scanner-coverage drift detection across runs.
|
|
39
|
+
*
|
|
40
|
+
* Closes the "my score got worse after fixing things" confusion: when
|
|
41
|
+
* the active scanner set grows between two runs (e.g. `gitleaks` →
|
|
42
|
+
* `gitleaks, grep-secrets` + `snyk-code`), the newly-added scanners
|
|
43
|
+
* surface pre-existing findings that older runs simply couldn't see. The
|
|
44
|
+
* Security score can drop on an UNCHANGED commit, with nothing in the
|
|
45
|
+
* report explaining that those findings are newly *visible*, not newly
|
|
46
|
+
* *introduced*.
|
|
47
|
+
*
|
|
48
|
+
* This module compares the current run's scanner set against the most
|
|
49
|
+
* recent prior vulnerability-scan report persisted under
|
|
50
|
+
* `.dxkit/reports/`. When the current run added scanners, the report
|
|
51
|
+
* renders an honest note so a reader attributes any movement to improved
|
|
52
|
+
* measurement rather than regressed code.
|
|
53
|
+
*
|
|
54
|
+
* Read-only + fail-open: an fs or parse problem yields `null` (no note),
|
|
55
|
+
* never an error — drift disclosure is a nicety, not a gate.
|
|
56
|
+
*/
|
|
57
|
+
const fs = __importStar(require("fs"));
|
|
58
|
+
const path = __importStar(require("path"));
|
|
59
|
+
const PREFIX = 'vulnerability-scan-';
|
|
60
|
+
const SUFFIX = '-detailed.json';
|
|
61
|
+
const DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
62
|
+
/**
|
|
63
|
+
* Detect scanners added since the most recent prior vuln-scan report.
|
|
64
|
+
* Returns `null` when there is no prior report, none is readable, or the
|
|
65
|
+
* scanner set did not grow (a shrinking or identical set is not the
|
|
66
|
+
* confusing case this note addresses).
|
|
67
|
+
*
|
|
68
|
+
* `currentDate` is this run's report date (YYYY-MM-DD); prior reports on
|
|
69
|
+
* a strictly earlier date are eligible. Same-day files are skipped: a
|
|
70
|
+
* report dated today is either this run's own prior invocation (already
|
|
71
|
+
* the post-expansion set — comparing would hide the drift) or about to
|
|
72
|
+
* be overwritten, so an earlier day is the honest comparison point.
|
|
73
|
+
*/
|
|
74
|
+
function detectScannerCoverageDrift(repoPath, currentTools, currentDate) {
|
|
75
|
+
const reportDir = path.join(repoPath, '.dxkit', 'reports');
|
|
76
|
+
let files;
|
|
77
|
+
try {
|
|
78
|
+
files = fs.readdirSync(reportDir);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return null; // no reports dir → first run, nothing to compare
|
|
82
|
+
}
|
|
83
|
+
const prior = files
|
|
84
|
+
.filter((f) => f.startsWith(PREFIX) && f.endsWith(SUFFIX))
|
|
85
|
+
.map((f) => ({ file: f, date: f.slice(PREFIX.length, f.length - SUFFIX.length) }))
|
|
86
|
+
.filter((e) => DATE_RE.test(e.date) && e.date < currentDate)
|
|
87
|
+
.sort((a, b) => (a.date < b.date ? 1 : -1)); // most recent first
|
|
88
|
+
const currentSet = [...new Set(currentTools)];
|
|
89
|
+
for (const entry of prior) {
|
|
90
|
+
const prevTools = readToolsUsed(path.join(reportDir, entry.file));
|
|
91
|
+
if (!prevTools)
|
|
92
|
+
continue; // unreadable → try the next-most-recent
|
|
93
|
+
const prevSet = new Set(prevTools);
|
|
94
|
+
const added = currentSet.filter((t) => !prevSet.has(t)).sort();
|
|
95
|
+
// First readable prior report is the comparison point, added-or-not.
|
|
96
|
+
return added.length > 0 ? { added, previousDate: entry.date } : null;
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
/** Parse `toolsUsed` from a persisted detailed report. Fail-open → null. */
|
|
101
|
+
function readToolsUsed(filePath) {
|
|
102
|
+
try {
|
|
103
|
+
const parsed = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
|
104
|
+
if (Array.isArray(parsed.toolsUsed)) {
|
|
105
|
+
return parsed.toolsUsed.filter((t) => typeof t === 'string');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// unreadable / malformed → skip
|
|
110
|
+
}
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=scanner-drift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner-drift.js","sourceRoot":"","sources":["../../../src/analyzers/security/scanner-drift.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shallow.d.ts","sourceRoot":"","sources":["../../../src/analyzers/security/shallow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"shallow.d.ts","sourceRoot":"","sources":["../../../src/analyzers/security/shallow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,kBAAkB,CAqF1E;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CA2CxE"}
|
|
@@ -19,6 +19,7 @@ exports.scoreSecurityDimension = scoreSecurityDimension;
|
|
|
19
19
|
* same number from the same partitioned inputs.
|
|
20
20
|
*/
|
|
21
21
|
const scoring_1 = require("../../scoring");
|
|
22
|
+
const annotate_1 = require("../../allowlist/annotate");
|
|
22
23
|
/**
|
|
23
24
|
* Build the canonical `SecurityScoreInput` from the health-side
|
|
24
25
|
* `ScoreInput`. Each field maps to its data source:
|
|
@@ -54,9 +55,13 @@ function toSecurityScoreInput(input) {
|
|
|
54
55
|
// `m.tlsDisabledCount` and `m.evalCount` as separate signals; the
|
|
55
56
|
// aggregate now carries the tls-bypass findings directly (with
|
|
56
57
|
// file/line and post-dedup), so those manual adds are gone.
|
|
58
|
+
// The score reads the allowlist-adjusted `scoreableCodeBySeverity`
|
|
59
|
+
// (excludes findings reviewed-and-accepted as false-positive /
|
|
60
|
+
// test-fixture); reports keep reading the raw `codeBySeverity`. Same
|
|
61
|
+
// source either way — the aggregator computes both.
|
|
57
62
|
let codeFindings;
|
|
58
63
|
if (c.securityAggregate) {
|
|
59
|
-
codeFindings = { ...c.securityAggregate.
|
|
64
|
+
codeFindings = { ...c.securityAggregate.scoreableCodeBySeverity };
|
|
60
65
|
}
|
|
61
66
|
else {
|
|
62
67
|
// Legacy fallback (test fixtures, pre-2.4.7 callers without
|
|
@@ -86,7 +91,17 @@ function toSecurityScoreInput(input) {
|
|
|
86
91
|
low: c.depVulns?.counts.low ?? 0,
|
|
87
92
|
};
|
|
88
93
|
return {
|
|
89
|
-
|
|
94
|
+
// Secret count for scoring EXCLUDES findings reviewed-and-accepted
|
|
95
|
+
// as false-positive / test-fixture, so a repo that has triaged its
|
|
96
|
+
// flagged secrets isn't held at the committed-credentials cap on
|
|
97
|
+
// noise it has already accepted. Read
|
|
98
|
+
// from the annotated aggregate when present (its secret category
|
|
99
|
+
// carries the allowlist status); fall back to the raw capability
|
|
100
|
+
// count for legacy ScoreInputs with no aggregate. accepted-risk /
|
|
101
|
+
// deferred are NOT lifted — those accept a real exposure.
|
|
102
|
+
secretFindings: c.securityAggregate
|
|
103
|
+
? c.securityAggregate.findingsByCategory.secret.filter((f) => !(f.allowlisted && (0, annotate_1.allowlistLiftsScore)(f.allowlistCategory))).length
|
|
104
|
+
: (c.secrets?.findings.length ?? 0),
|
|
90
105
|
privateKeyFiles: m.privateKeyFiles,
|
|
91
106
|
envFilesInGit: m.envFilesInGit,
|
|
92
107
|
codeFindings,
|
|
@@ -98,6 +113,13 @@ function toSecurityScoreInput(input) {
|
|
|
98
113
|
// is a downgrade; an explicit `false` from the gather is the only
|
|
99
114
|
// signal we trust to apply it.
|
|
100
115
|
depVulnsAvailable: c.depVulnsAvailability?.available ?? true,
|
|
116
|
+
// Same default-true contract as depVulnsAvailable — the
|
|
117
|
+
// explicit `false` from the gather is the only signal we trust to
|
|
118
|
+
// apply an uncertainty cap. Closes the asymmetry where a missing
|
|
119
|
+
// dep scan capped the score but missing secret/code scanners
|
|
120
|
+
// silently scored as clean.
|
|
121
|
+
secretsAvailable: c.secretsAvailability?.available ?? true,
|
|
122
|
+
codePatternsAvailable: c.codePatternsAvailability?.available ?? true,
|
|
101
123
|
};
|
|
102
124
|
}
|
|
103
125
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shallow.js","sourceRoot":"","sources":["../../../src/analyzers/security/shallow.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"shallow.js","sourceRoot":"","sources":["../../../src/analyzers/security/shallow.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Security analyzer types.
|
|
3
3
|
*/
|
|
4
4
|
import type { DepVulnFinding } from '../../languages/capabilities/types';
|
|
5
|
+
import type { AllowlistCategory } from '../../allowlist/categories';
|
|
6
|
+
import type { ScannerCoverageDrift } from './scanner-drift';
|
|
5
7
|
export type Severity = 'critical' | 'high' | 'medium' | 'low';
|
|
6
8
|
export type FindingCategory = 'secret' | 'code' | 'config' | 'dependency';
|
|
7
9
|
export interface SecurityFinding {
|
|
@@ -13,6 +15,23 @@ export interface SecurityFinding {
|
|
|
13
15
|
file: string;
|
|
14
16
|
line: number;
|
|
15
17
|
tool: string;
|
|
18
|
+
/**
|
|
19
|
+
* True when an ACTIVE (unexpired) allowlist entry matches this
|
|
20
|
+
* finding's fingerprint. The finding is still reported in full (raw
|
|
21
|
+
* counts are unchanged — dxkit's raw-truth model holds), but renderers
|
|
22
|
+
* surface "(N allowlisted)" alongside the subtotal so a reviewer isn't
|
|
23
|
+
* alarmed by, e.g., 8 CRITICAL secrets when 7 are accepted test
|
|
24
|
+
* fixtures. Absent (undefined) when no allowlist exists or no entry
|
|
25
|
+
* matches. Only code/secret/config findings (which carry a
|
|
26
|
+
* fingerprint) are annotated; dependency findings are keyed by tuple
|
|
27
|
+
* through a producer and are out of scope here.
|
|
28
|
+
*/
|
|
29
|
+
allowlisted?: boolean;
|
|
30
|
+
/** The matched allowlist entry's category (`test-fixture`,
|
|
31
|
+
* `false-positive`, `accepted-risk`, ...) so renderers can explain
|
|
32
|
+
* WHY the finding is suppressed, not just that it is. Present only
|
|
33
|
+
* when `allowlisted` is true. */
|
|
34
|
+
allowlistCategory?: AllowlistCategory;
|
|
16
35
|
}
|
|
17
36
|
export interface DepVulnSummary {
|
|
18
37
|
critical: number;
|
|
@@ -91,9 +110,28 @@ export interface SecurityReport {
|
|
|
91
110
|
total: number;
|
|
92
111
|
};
|
|
93
112
|
dependencies: DepVulnSummary;
|
|
113
|
+
/**
|
|
114
|
+
* Whether the secret / code-pattern scans actually ran,
|
|
115
|
+
* from `aggregate.provenance.{secrets,codePatterns}.ran`. The
|
|
116
|
+
* standalone-side score adapter (`countsFromReport`) plumbs these
|
|
117
|
+
* into the uncertainty caps, mirroring `dependencies.available` —
|
|
118
|
+
* a "0 secrets" subtotal printed next to "Sources: (none)" must
|
|
119
|
+
* not score as a confident clean. Optional: report JSONs saved
|
|
120
|
+
* before 2.10 lack them (adapter defaults to true).
|
|
121
|
+
*/
|
|
122
|
+
secretsAvailable?: boolean;
|
|
123
|
+
codePatternsAvailable?: boolean;
|
|
94
124
|
};
|
|
95
125
|
findings: SecurityFinding[];
|
|
96
126
|
toolsUsed: string[];
|
|
97
127
|
toolsUnavailable: string[];
|
|
128
|
+
/**
|
|
129
|
+
* Scanners added since the most recent prior vuln-scan report,
|
|
130
|
+
* when any. Present only when the active scanner set grew run-over-run
|
|
131
|
+
* — drives the "coverage expanded; findings newly visible, not newly
|
|
132
|
+
* introduced" note that explains an otherwise-baffling score change on
|
|
133
|
+
* an unchanged commit. Absent on a first run or a stable scanner set.
|
|
134
|
+
*/
|
|
135
|
+
scannerDrift?: ScannerCoverageDrift;
|
|
98
136
|
}
|
|
99
137
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/analyzers/security/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/analyzers/security/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE9D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;sCAGkC;IAClC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;oEAEgE;IAChE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B;;;;;;;;;;;OAWG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP;;4CAEoC;QACpC,QAAQ,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QACzF;;;;;;;WAOG;QACH,QAAQ,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QACzF;;;;;WAKG;QACH,WAAW,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5F,YAAY,EAAE,cAAc,CAAC;QAC7B;;;;;;;;WAQG;QACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;KACjC,CAAC;IACF,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC"}
|
|
@@ -15,6 +15,17 @@ interface GraphifyResult {
|
|
|
15
15
|
sourceFilesInGraph: number;
|
|
16
16
|
graph?: GraphJson;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Build the graphify Python script with cwd-specific exclusions baked in.
|
|
20
|
+
*
|
|
21
|
+
* Exported so the structural contract of the generated script — the
|
|
22
|
+
* `if __name__ == '__main__'` guard that keeps ProcessPoolExecutor workers
|
|
23
|
+
* from re-running extraction under spawn/forkserver (Python 3.14's Linux
|
|
24
|
+
* default), and the public `extract(cache_root=...)` cache redirect that
|
|
25
|
+
* replaced the fragile `cache_dir` monkeypatch — is unit-testable without a
|
|
26
|
+
* Python interpreter or graphify installed (mirrors `buildGraphifyEnvelope`).
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildGraphifyScript(cwd: string): string;
|
|
18
29
|
/**
|
|
19
30
|
* Outcome union mirrors the other global wrappers (gitleaks, semgrep,
|
|
20
31
|
* jscpd). The capability provider collapses this to `StructuralResult
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphify.d.ts","sourceRoot":"","sources":["../../../src/analyzers/tools/graphify.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAExE,UAAU,cAAc;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"graphify.d.ts","sourceRoot":"","sources":["../../../src/analyzers/tools/graphify.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAExE,UAAU,cAAc;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAkmBvD;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAwB5C;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAKxF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,kBAAkB,CAAC,CAQ7B;AAoLD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAiBzF;AAED;;;;GAIG;AAOH,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,GAAG;IACpE,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAU9D,CAAC"}
|