autoremediator 0.19.0 → 0.20.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/dist/api/change-request/index.d.ts.map +1 -1
- package/dist/api/options-schema.d.ts.map +1 -1
- package/dist/api/patches/reconcile.d.ts.map +1 -1
- package/dist/api/scan-execution.d.ts.map +1 -1
- package/dist/api/vex/index.d.ts +6 -2
- package/dist/api/vex/index.d.ts.map +1 -1
- package/dist/{chunk-7BORIBPY.js → chunk-ZGLGT4XQ.js} +2589 -885
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/runners.d.ts.map +1 -1
- package/dist/cli/triage.d.ts +9 -1
- package/dist/cli/triage.d.ts.map +1 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli.js +74 -33
- package/dist/index.js +2464 -882
- package/dist/index.js.map +1 -1
- package/dist/intelligence/snapshot.d.ts +2 -0
- package/dist/intelligence/snapshot.d.ts.map +1 -0
- package/dist/intelligence/sources/registry.d.ts +1 -0
- package/dist/intelligence/sources/registry.d.ts.map +1 -1
- package/dist/intelligence/sources/snapshot.d.ts +1 -1
- package/dist/intelligence/sources/snapshot.d.ts.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/openapi/handlers/routes.d.ts.map +1 -1
- package/dist/openapi/handlers/validators.d.ts.map +1 -1
- package/dist/openapi/http-utils.d.ts.map +1 -1
- package/dist/openapi/server.js +20 -7
- package/dist/platform/jobs.d.ts +39 -1
- package/dist/platform/jobs.d.ts.map +1 -1
- package/dist/platform/policy.d.ts +10 -0
- package/dist/platform/policy.d.ts.map +1 -1
- package/dist/platform/rollback.d.ts +11 -0
- package/dist/platform/rollback.d.ts.map +1 -1
- package/dist/platform/types.d.ts +5 -0
- package/dist/platform/types.d.ts.map +1 -1
- package/dist/remediation/local/disposition.d.ts +5 -2
- package/dist/remediation/local/disposition.d.ts.map +1 -1
- package/dist/remediation/local/fallback.d.ts.map +1 -1
- package/dist/remediation/local/options.d.ts.map +1 -1
- package/dist/remediation/local/primary-strategy.d.ts +4 -0
- package/dist/remediation/local/primary-strategy.d.ts.map +1 -1
- package/dist/remediation/local/run.d.ts.map +1 -1
- package/dist/remediation/pipeline-runtime/tool-wrappers.d.ts.map +1 -1
- package/dist/remediation/proof-of-fix/runner.d.ts +52 -0
- package/dist/remediation/proof-of-fix/runner.d.ts.map +1 -1
- package/dist/remediation/refactor/call-site-finder.d.ts +21 -0
- package/dist/remediation/refactor/call-site-finder.d.ts.map +1 -1
- package/dist/remediation/refactor/refactor-agent.d.ts +18 -0
- package/dist/remediation/refactor/refactor-agent.d.ts.map +1 -1
- package/dist/remediation/tools/apply-package-override/index.d.ts +4 -0
- package/dist/remediation/tools/apply-package-override/index.d.ts.map +1 -1
- package/dist/remediation/tools/apply-patch-file/index.d.ts +2 -1
- package/dist/remediation/tools/apply-patch-file/index.d.ts.map +1 -1
- package/dist/remediation/tools/apply-version-bump.d.ts +4 -0
- package/dist/remediation/tools/apply-version-bump.d.ts.map +1 -1
- package/dist/remediation/tools/check-inventory.d.ts +1 -0
- package/dist/remediation/tools/check-inventory.d.ts.map +1 -1
- package/dist/remediation/tools/fetch-package-source.d.ts.map +1 -1
- package/dist/remediation/tools/find-fixed-version.d.ts.map +1 -1
- package/dist/remediation/tools/generate-patch/helpers.d.ts +3 -3
- package/dist/remediation/tools/generate-patch/helpers.d.ts.map +1 -1
- package/package.json +6 -4
- package/dist/api/change-request/index.test.d.ts +0 -2
- package/dist/api/change-request/index.test.d.ts.map +0 -1
- package/dist/api/delta-scan/delta-scan.test.d.ts +0 -2
- package/dist/api/delta-scan/delta-scan.test.d.ts.map +0 -1
- package/dist/api/evaluate/evaluate.test.d.ts +0 -2
- package/dist/api/evaluate/evaluate.test.d.ts.map +0 -1
- package/dist/api/index.test.d.ts +0 -2
- package/dist/api/index.test.d.ts.map +0 -1
- package/dist/api/jobs/index.test.d.ts +0 -2
- package/dist/api/jobs/index.test.d.ts.map +0 -1
- package/dist/api/patches/reconcile.test.d.ts +0 -2
- package/dist/api/patches/reconcile.test.d.ts.map +0 -1
- package/dist/api/patches.test.d.ts +0 -2
- package/dist/api/patches.test.d.ts.map +0 -1
- package/dist/api/portfolio/portfolio.test.d.ts +0 -2
- package/dist/api/portfolio/portfolio.test.d.ts.map +0 -1
- package/dist/api/portfolio/risk-score.test.d.ts +0 -2
- package/dist/api/portfolio/risk-score.test.d.ts.map +0 -1
- package/dist/api/reachability/reachability.test.d.ts +0 -2
- package/dist/api/reachability/reachability.test.d.ts.map +0 -1
- package/dist/api/update-outdated/index.test.d.ts +0 -2
- package/dist/api/update-outdated/index.test.d.ts.map +0 -1
- package/dist/api/vex/index.test.d.ts +0 -2
- package/dist/api/vex/index.test.d.ts.map +0 -1
- package/dist/cli/index.test.d.ts +0 -2
- package/dist/cli/index.test.d.ts.map +0 -1
- package/dist/intelligence/sources/certcc.test.d.ts +0 -2
- package/dist/intelligence/sources/certcc.test.d.ts.map +0 -1
- package/dist/intelligence/sources/cisa-kev.test.d.ts +0 -2
- package/dist/intelligence/sources/cisa-kev.test.d.ts.map +0 -1
- package/dist/intelligence/sources/cve-services.test.d.ts +0 -2
- package/dist/intelligence/sources/cve-services.test.d.ts.map +0 -1
- package/dist/intelligence/sources/deps-dev.test.d.ts +0 -2
- package/dist/intelligence/sources/deps-dev.test.d.ts.map +0 -1
- package/dist/intelligence/sources/epss.test.d.ts +0 -2
- package/dist/intelligence/sources/epss.test.d.ts.map +0 -1
- package/dist/intelligence/sources/external-feeds.test.d.ts +0 -2
- package/dist/intelligence/sources/external-feeds.test.d.ts.map +0 -1
- package/dist/intelligence/sources/gitlab-advisory.test.d.ts +0 -2
- package/dist/intelligence/sources/gitlab-advisory.test.d.ts.map +0 -1
- package/dist/intelligence/sources/nvd.test.d.ts +0 -2
- package/dist/intelligence/sources/nvd.test.d.ts.map +0 -1
- package/dist/intelligence/sources/ossf-scorecard.test.d.ts +0 -2
- package/dist/intelligence/sources/ossf-scorecard.test.d.ts.map +0 -1
- package/dist/intelligence/sources/osv.test.d.ts +0 -2
- package/dist/intelligence/sources/osv.test.d.ts.map +0 -1
- package/dist/intelligence/sources/registry.test.d.ts +0 -2
- package/dist/intelligence/sources/registry.test.d.ts.map +0 -1
- package/dist/intelligence/sources/snapshot.test.d.ts +0 -2
- package/dist/intelligence/sources/snapshot.test.d.ts.map +0 -1
- package/dist/mcp/server.test.d.ts +0 -2
- package/dist/mcp/server.test.d.ts.map +0 -1
- package/dist/openapi/server.test.d.ts +0 -2
- package/dist/openapi/server.test.d.ts.map +0 -1
- package/dist/platform/architecture-guardrails.test.d.ts +0 -2
- package/dist/platform/architecture-guardrails.test.d.ts.map +0 -1
- package/dist/platform/audit-logger.test.d.ts +0 -2
- package/dist/platform/audit-logger.test.d.ts.map +0 -1
- package/dist/platform/escalation.test.d.ts +0 -2
- package/dist/platform/escalation.test.d.ts.map +0 -1
- package/dist/platform/evidence.test.d.ts +0 -2
- package/dist/platform/evidence.test.d.ts.map +0 -1
- package/dist/platform/package-manager/index.test.d.ts +0 -2
- package/dist/platform/package-manager/index.test.d.ts.map +0 -1
- package/dist/platform/package-manager/list-parser.test.d.ts +0 -2
- package/dist/platform/package-manager/list-parser.test.d.ts.map +0 -1
- package/dist/platform/package-manager.test.d.ts +0 -2
- package/dist/platform/package-manager.test.d.ts.map +0 -1
- package/dist/platform/policy.test.d.ts +0 -2
- package/dist/platform/policy.test.d.ts.map +0 -1
- package/dist/platform/repo-lock.test.d.ts +0 -2
- package/dist/platform/repo-lock.test.d.ts.map +0 -1
- package/dist/platform/rollback.test.d.ts +0 -2
- package/dist/platform/rollback.test.d.ts.map +0 -1
- package/dist/platform/safe-exec.test.d.ts +0 -2
- package/dist/platform/safe-exec.test.d.ts.map +0 -1
- package/dist/platform/sla.test.d.ts +0 -2
- package/dist/platform/sla.test.d.ts.map +0 -1
- package/dist/platform/supply-chain.test.d.ts +0 -2
- package/dist/platform/supply-chain.test.d.ts.map +0 -1
- package/dist/platform/workspace.test.d.ts +0 -2
- package/dist/platform/workspace.test.d.ts.map +0 -1
- package/dist/remediation/local/consensus-gate.test.d.ts +0 -2
- package/dist/remediation/local/consensus-gate.test.d.ts.map +0 -1
- package/dist/remediation/local/disposition.test.d.ts +0 -2
- package/dist/remediation/local/disposition.test.d.ts.map +0 -1
- package/dist/remediation/local/run.secops.test.d.ts +0 -2
- package/dist/remediation/local/run.secops.test.d.ts.map +0 -1
- package/dist/remediation/local/sbom.test.d.ts +0 -2
- package/dist/remediation/local/sbom.test.d.ts.map +0 -1
- package/dist/remediation/local/vulnerability-match.test.d.ts +0 -2
- package/dist/remediation/local/vulnerability-match.test.d.ts.map +0 -1
- package/dist/remediation/pipeline.test.d.ts +0 -2
- package/dist/remediation/pipeline.test.d.ts.map +0 -1
- package/dist/remediation/proof-of-fix/runner.test.d.ts +0 -2
- package/dist/remediation/proof-of-fix/runner.test.d.ts.map +0 -1
- package/dist/remediation/refactor/refactor.test.d.ts +0 -2
- package/dist/remediation/refactor/refactor.test.d.ts.map +0 -1
- package/dist/remediation/tools/apply-package-override.test.d.ts +0 -2
- package/dist/remediation/tools/apply-package-override.test.d.ts.map +0 -1
- package/dist/remediation/tools/apply-patch-file.test.d.ts +0 -2
- package/dist/remediation/tools/apply-patch-file.test.d.ts.map +0 -1
- package/dist/remediation/tools/apply-version-bump.test.d.ts +0 -2
- package/dist/remediation/tools/apply-version-bump.test.d.ts.map +0 -1
- package/dist/remediation/tools/check-exploit-signal.test.d.ts +0 -2
- package/dist/remediation/tools/check-exploit-signal.test.d.ts.map +0 -1
- package/dist/remediation/tools/check-reachability.test.d.ts +0 -2
- package/dist/remediation/tools/check-reachability.test.d.ts.map +0 -1
- package/dist/remediation/tools/check-suppression.test.d.ts +0 -2
- package/dist/remediation/tools/check-suppression.test.d.ts.map +0 -1
- package/dist/remediation/tools/generate-patch/helpers.test.d.ts +0 -2
- package/dist/remediation/tools/generate-patch/helpers.test.d.ts.map +0 -1
- package/dist/remediation/tools/lookup-cve.test.d.ts +0 -2
- package/dist/remediation/tools/lookup-cve.test.d.ts.map +0 -1
- package/dist/scanner/adapters/npm-audit.test.d.ts +0 -2
- package/dist/scanner/adapters/npm-audit.test.d.ts.map +0 -1
- package/dist/scanner/adapters/sarif.test.d.ts +0 -2
- package/dist/scanner/adapters/sarif.test.d.ts.map +0 -1
- package/dist/scanner/adapters/yarn-audit.test.d.ts +0 -2
- package/dist/scanner/adapters/yarn-audit.test.d.ts.map +0 -1
- package/dist/scanner/lockfile-diff.test.d.ts +0 -2
- package/dist/scanner/lockfile-diff.test.d.ts.map +0 -1
- package/dist/scanner/parse-input.test.d.ts +0 -2
- package/dist/scanner/parse-input.test.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkJpC,wBAAgB,aAAa,IAAI,OAAO,CA+TvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../../src/cli/runners.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAGhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkFjD,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../../src/cli/runners.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAGhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkFjD,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiJrF;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA8KzF;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,YAAY,GAAG,cAAc,CAAC,GAChE,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,YAAY,GAAG,cAAc,CAAC,GAChE,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,YAAY,GAAG,gBAAgB,GAAG,cAAc,CAAC,GACnF,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C3E;AAED,wBAAsB,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6F/F;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhB;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;IACJ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,OAAO,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,CACR,cAAc,EACd,KAAK,GAAG,YAAY,GAAG,gBAAgB,GAAG,UAAU,GAAG,cAAc,CACtE,GAAG;IACF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GACA,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
|
package/dist/cli/triage.d.ts
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
import * as readline from "node:readline/promises";
|
|
1
2
|
import type { CommandOptions } from "./types.js";
|
|
3
|
+
export interface InteractiveTriageOptions extends Omit<Partial<CommandOptions>, "input"> {
|
|
4
|
+
input?: string | NodeJS.ReadableStream;
|
|
5
|
+
output?: NodeJS.WritableStream;
|
|
6
|
+
rl?: readline.Interface;
|
|
7
|
+
vexOut?: string;
|
|
8
|
+
}
|
|
2
9
|
/**
|
|
3
10
|
* Interactive developer CLI triage workflow.
|
|
4
11
|
* Prompts developer through security findings with actions to apply, skip, suppress, or quit.
|
|
12
|
+
* Persists suppression actions to .github/autoremediator.yml, suppressions file, or CycloneDX VEX document.
|
|
5
13
|
*/
|
|
6
|
-
export declare function runInteractiveTriage(inputPathOrOpts: string | Partial<
|
|
14
|
+
export declare function runInteractiveTriage(inputPathOrOpts: string | Partial<InteractiveTriageOptions>, maybeOpts?: Partial<InteractiveTriageOptions>): Promise<void>;
|
|
7
15
|
//# sourceMappingURL=triage.d.ts.map
|
package/dist/cli/triage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../src/cli/triage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../src/cli/triage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AAQnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IACtF,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,EAC3D,SAAS,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,CAgMf"}
|
package/dist/cli/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -16,6 +16,9 @@ import {
|
|
|
16
16
|
remediate,
|
|
17
17
|
remediateFromScan,
|
|
18
18
|
remediatePortfolio,
|
|
19
|
+
saveSuppressionToFile,
|
|
20
|
+
saveSuppressionToPolicy,
|
|
21
|
+
saveSuppressionToVexDocument,
|
|
19
22
|
scanDelta,
|
|
20
23
|
toCiSummary,
|
|
21
24
|
toCycloneDxVex,
|
|
@@ -23,7 +26,7 @@ import {
|
|
|
23
26
|
uniqueCveIds,
|
|
24
27
|
updateOutdated,
|
|
25
28
|
validatePatchArtifact
|
|
26
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-ZGLGT4XQ.js";
|
|
27
30
|
|
|
28
31
|
// src/cli/index.ts
|
|
29
32
|
import { fileURLToPath } from "url";
|
|
@@ -34,15 +37,17 @@ import { existsSync } from "fs";
|
|
|
34
37
|
|
|
35
38
|
// src/cli/triage.ts
|
|
36
39
|
import * as readline from "readline/promises";
|
|
37
|
-
import { stdin as
|
|
40
|
+
import { stdin as defaultInput, stdout as defaultOutput } from "process";
|
|
38
41
|
async function runInteractiveTriage(inputPathOrOpts, maybeOpts) {
|
|
39
|
-
const inputPath = typeof inputPathOrOpts === "string" ? inputPathOrOpts : inputPathOrOpts.input;
|
|
42
|
+
const inputPath = typeof inputPathOrOpts === "string" ? inputPathOrOpts : typeof inputPathOrOpts.input === "string" ? inputPathOrOpts.input : void 0;
|
|
40
43
|
const opts = (typeof inputPathOrOpts === "object" ? inputPathOrOpts : maybeOpts) ?? {};
|
|
41
44
|
const cwd = opts.cwd ?? process.cwd();
|
|
42
|
-
|
|
45
|
+
const outStream = opts.output ?? defaultOutput;
|
|
46
|
+
const inStream = opts.input && typeof opts.input !== "string" ? opts.input : defaultInput;
|
|
47
|
+
outStream.write("\n\u{1F50D} Scanning for security findings to triage...\n");
|
|
43
48
|
let findings = [];
|
|
44
49
|
try {
|
|
45
|
-
if (inputPath) {
|
|
50
|
+
if (inputPath && typeof inputPath === "string") {
|
|
46
51
|
findings = parseScanInput(inputPath, opts.format ?? "auto");
|
|
47
52
|
} else {
|
|
48
53
|
findings = await parseScanInputFromAudit({
|
|
@@ -53,7 +58,7 @@ async function runInteractiveTriage(inputPathOrOpts, maybeOpts) {
|
|
|
53
58
|
});
|
|
54
59
|
}
|
|
55
60
|
} catch (err) {
|
|
56
|
-
|
|
61
|
+
outStream.write(
|
|
57
62
|
`Failed to load scan findings: ${err instanceof Error ? err.message : String(err)}
|
|
58
63
|
`
|
|
59
64
|
);
|
|
@@ -61,12 +66,15 @@ async function runInteractiveTriage(inputPathOrOpts, maybeOpts) {
|
|
|
61
66
|
}
|
|
62
67
|
const cveIds = uniqueCveIds(findings);
|
|
63
68
|
if (cveIds.length === 0) {
|
|
64
|
-
|
|
69
|
+
outStream.write("\u2728 No vulnerabilities found to triage!\n\n");
|
|
65
70
|
return;
|
|
66
71
|
}
|
|
67
|
-
|
|
72
|
+
outStream.write(`Found ${cveIds.length} unique vulnerability(ies) to triage.
|
|
68
73
|
`);
|
|
69
|
-
const rl = readline.createInterface({
|
|
74
|
+
const rl = opts.rl ?? readline.createInterface({
|
|
75
|
+
input: inStream,
|
|
76
|
+
output: outStream
|
|
77
|
+
});
|
|
70
78
|
let remediatedCount = 0;
|
|
71
79
|
let skippedCount = 0;
|
|
72
80
|
let suppressedCount = 0;
|
|
@@ -90,18 +98,18 @@ async function runInteractiveTriage(inputPathOrOpts, maybeOpts) {
|
|
|
90
98
|
} catch {
|
|
91
99
|
}
|
|
92
100
|
}
|
|
93
|
-
|
|
94
|
-
|
|
101
|
+
outStream.write("\n" + "=".repeat(60) + "\n");
|
|
102
|
+
outStream.write(`[${i + 1}/${cveIds.length}] Vulnerability: ${cveId}
|
|
95
103
|
`);
|
|
96
|
-
|
|
104
|
+
outStream.write(` Package: ${pkgName}
|
|
97
105
|
`);
|
|
98
|
-
|
|
106
|
+
outStream.write(` Severity: ${severity}
|
|
99
107
|
`);
|
|
100
108
|
if (safeVersion) {
|
|
101
|
-
|
|
109
|
+
outStream.write(` Safe Upstream Version: ${safeVersion}
|
|
102
110
|
`);
|
|
103
111
|
}
|
|
104
|
-
|
|
112
|
+
outStream.write("=".repeat(60) + "\n");
|
|
105
113
|
let answered = false;
|
|
106
114
|
while (!answered) {
|
|
107
115
|
const answer = await rl.question(
|
|
@@ -109,7 +117,7 @@ async function runInteractiveTriage(inputPathOrOpts, maybeOpts) {
|
|
|
109
117
|
);
|
|
110
118
|
const choice = answer.trim().toLowerCase();
|
|
111
119
|
if (choice === "a" || choice === "apply") {
|
|
112
|
-
|
|
120
|
+
outStream.write(`Applying remediation for ${cveId}...
|
|
113
121
|
`);
|
|
114
122
|
try {
|
|
115
123
|
const report = await remediate(cveId, {
|
|
@@ -126,17 +134,17 @@ async function runInteractiveTriage(inputPathOrOpts, maybeOpts) {
|
|
|
126
134
|
});
|
|
127
135
|
const applied = report.results.some((r) => r.applied);
|
|
128
136
|
if (applied) {
|
|
129
|
-
|
|
137
|
+
outStream.write(`\u2705 Successfully applied remediation for ${cveId}!
|
|
130
138
|
`);
|
|
131
139
|
remediatedCount++;
|
|
132
140
|
} else {
|
|
133
141
|
const reason = report.results[0]?.unresolvedReason ?? "unresolved";
|
|
134
|
-
|
|
142
|
+
outStream.write(`\u26A0\uFE0F Remediation could not be applied automatically (${reason}).
|
|
135
143
|
`);
|
|
136
144
|
skippedCount++;
|
|
137
145
|
}
|
|
138
146
|
} catch (err) {
|
|
139
|
-
|
|
147
|
+
outStream.write(
|
|
140
148
|
`\u274C Error remediating ${cveId}: ${err instanceof Error ? err.message : String(err)}
|
|
141
149
|
`
|
|
142
150
|
);
|
|
@@ -144,33 +152,70 @@ async function runInteractiveTriage(inputPathOrOpts, maybeOpts) {
|
|
|
144
152
|
}
|
|
145
153
|
answered = true;
|
|
146
154
|
} else if (choice === "s" || choice === "skip" || choice === "") {
|
|
147
|
-
|
|
155
|
+
outStream.write(`Skipped ${cveId}.
|
|
148
156
|
`);
|
|
149
157
|
skippedCount++;
|
|
150
158
|
answered = true;
|
|
151
159
|
} else if (choice === "x" || choice === "suppress") {
|
|
152
|
-
|
|
160
|
+
outStream.write(`Configuring suppression / VEX record for ${cveId}...
|
|
161
|
+
`);
|
|
162
|
+
const justAnswer = await rl.question(
|
|
163
|
+
"Justification: [1] not_affected (default), [2] mitigated, [3] under_investigation, [4] fixed: "
|
|
164
|
+
);
|
|
165
|
+
const justChoice = justAnswer.trim().toLowerCase();
|
|
166
|
+
let justification = "not_affected";
|
|
167
|
+
if (justChoice === "2" || justChoice === "mitigated") {
|
|
168
|
+
justification = "mitigated";
|
|
169
|
+
} else if (justChoice === "3" || justChoice === "under_investigation") {
|
|
170
|
+
justification = "under_investigation";
|
|
171
|
+
} else if (justChoice === "4" || justChoice === "fixed") {
|
|
172
|
+
justification = "fixed";
|
|
173
|
+
} else {
|
|
174
|
+
justification = "not_affected";
|
|
175
|
+
}
|
|
176
|
+
const notesAnswer = await rl.question(
|
|
177
|
+
"Notes/rationale for suppression (optional, press Enter to skip): "
|
|
178
|
+
);
|
|
179
|
+
const notes = notesAnswer.trim() || void 0;
|
|
180
|
+
const suppression = {
|
|
181
|
+
cveId,
|
|
182
|
+
justification,
|
|
183
|
+
notes
|
|
184
|
+
};
|
|
185
|
+
let persistedTarget = "";
|
|
186
|
+
if (opts.suppressionsFile) {
|
|
187
|
+
saveSuppressionToFile(opts.suppressionsFile, suppression);
|
|
188
|
+
persistedTarget = opts.suppressionsFile;
|
|
189
|
+
} else {
|
|
190
|
+
persistedTarget = saveSuppressionToPolicy(cwd, suppression, opts.policy);
|
|
191
|
+
}
|
|
192
|
+
if (opts.vexOut) {
|
|
193
|
+
saveSuppressionToVexDocument(opts.vexOut, suppression);
|
|
194
|
+
outStream.write(` \u{1F4C4} Saved VEX statement to: ${opts.vexOut}
|
|
195
|
+
`);
|
|
196
|
+
}
|
|
197
|
+
outStream.write(`\u2705 Persisted suppression for ${cveId} to ${persistedTarget}
|
|
153
198
|
`);
|
|
154
199
|
suppressedCount++;
|
|
155
200
|
answered = true;
|
|
156
201
|
} else if (choice === "q" || choice === "quit") {
|
|
157
|
-
|
|
202
|
+
outStream.write("Exiting triage session.\n");
|
|
158
203
|
return;
|
|
159
204
|
} else {
|
|
160
|
-
|
|
205
|
+
outStream.write("Invalid option. Please choose 'a', 's', 'x', or 'q'.\n");
|
|
161
206
|
}
|
|
162
207
|
}
|
|
163
208
|
}
|
|
164
209
|
} finally {
|
|
165
210
|
rl.close();
|
|
166
|
-
|
|
167
|
-
|
|
211
|
+
outStream.write("\n=== Triage Summary ===\n");
|
|
212
|
+
outStream.write(`Total evaluated: ${cveIds.length}
|
|
168
213
|
`);
|
|
169
|
-
|
|
214
|
+
outStream.write(`Remediated: ${remediatedCount}
|
|
170
215
|
`);
|
|
171
|
-
|
|
216
|
+
outStream.write(`Suppressed: ${suppressedCount}
|
|
172
217
|
`);
|
|
173
|
-
|
|
218
|
+
outStream.write(`Skipped: ${skippedCount}
|
|
174
219
|
|
|
175
220
|
`);
|
|
176
221
|
}
|
|
@@ -984,11 +1029,7 @@ function addSharedOptions(program, includeInput = false, includeSimulationMode =
|
|
|
984
1029
|
).option("--hold-for-transitive", OPTION_DESCRIPTIONS.dispositionPolicyHoldForTransitive, false).option("--escalate-on-kev", OPTION_DESCRIPTIONS.dispositionPolicyEscalateOnKev, false).option("--containment-mode", OPTION_DESCRIPTIONS.containmentMode, false).option("--campaign-mode", OPTION_DESCRIPTIONS.campaignMode, false).option("--offline", OPTION_DESCRIPTIONS.offlineIntelligence, false).option("--intelligence-snapshot <path>", OPTION_DESCRIPTIONS.intelligenceSnapshotPath).option("--create-change-request", OPTION_DESCRIPTIONS.createChangeRequest, false).option("--change-request-provider <provider>", OPTION_DESCRIPTIONS.changeRequestProvider).option("--change-request-grouping <grouping>", OPTION_DESCRIPTIONS.changeRequestGrouping).option("--change-request-repository <repository>", OPTION_DESCRIPTIONS.changeRequestRepository).option("--change-request-base-branch <branch>", OPTION_DESCRIPTIONS.changeRequestBaseBranch).option(
|
|
985
1030
|
"--change-request-branch-prefix <prefix>",
|
|
986
1031
|
OPTION_DESCRIPTIONS.changeRequestBranchPrefix
|
|
987
|
-
).option("--change-request-title-prefix <prefix>", OPTION_DESCRIPTIONS.changeRequestTitlePrefix).option("--proof-of-fix", OPTION_DESCRIPTIONS.proofOfFix, false).option("--require-proof-of-fix", OPTION_DESCRIPTIONS.requireProofOfFix, false).option(
|
|
988
|
-
"--breaking-change-refactor",
|
|
989
|
-
OPTION_DESCRIPTIONS.breakingChangeRefactor,
|
|
990
|
-
false
|
|
991
|
-
);
|
|
1032
|
+
).option("--change-request-title-prefix <prefix>", OPTION_DESCRIPTIONS.changeRequestTitlePrefix).option("--proof-of-fix", OPTION_DESCRIPTIONS.proofOfFix, false).option("--require-proof-of-fix", OPTION_DESCRIPTIONS.requireProofOfFix, false).option("--breaking-change-refactor", OPTION_DESCRIPTIONS.breakingChangeRefactor, false);
|
|
992
1033
|
if (includeSimulationMode) {
|
|
993
1034
|
program.option("--simulation-mode", OPTION_DESCRIPTIONS.simulationMode, false);
|
|
994
1035
|
}
|