@integsec/agentic-pentest-proxy 0.3.9 → 0.4.1
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 +2 -0
- package/cloudflare/src/worker.mjs +2 -2
- package/cloudflare/wrangler.jsonc +1 -1
- package/dist/bin/integsec-agentic-pentest-bridge.js +2 -2
- package/dist/bin/integsec-agentic-pentest-scanners-mcp.js +24 -7
- package/dist/bin/integsec-agentic-pentest-scanners-mcp.js.map +1 -1
- package/dist/src/config.js +1 -1
- package/dist/src/extractor.d.ts.map +1 -1
- package/dist/src/extractor.js +2 -0
- package/dist/src/extractor.js.map +1 -1
- package/dist/src/gateway/admin.js +2 -0
- package/dist/src/gateway/command.d.ts +1 -1
- package/dist/src/gateway/command.d.ts.map +1 -1
- package/dist/src/gateway/command.js +5 -4
- package/dist/src/gateway/command.js.map +1 -1
- package/dist/src/gateway/docs-home.html +1 -1
- package/dist/src/gateway/docs.d.ts.map +1 -1
- package/dist/src/gateway/docs.js +1 -0
- package/dist/src/gateway/docs.js.map +1 -1
- package/dist/src/gateway/jobs.d.ts +31 -0
- package/dist/src/gateway/jobs.d.ts.map +1 -0
- package/dist/src/gateway/jobs.js +108 -0
- package/dist/src/gateway/jobs.js.map +1 -0
- package/dist/src/gateway/runtime.d.ts +5 -0
- package/dist/src/gateway/runtime.d.ts.map +1 -1
- package/dist/src/gateway/runtime.js +218 -78
- package/dist/src/gateway/runtime.js.map +1 -1
- package/dist/src/gateway/server.d.ts.map +1 -1
- package/dist/src/gateway/server.js +56 -1
- package/dist/src/gateway/server.js.map +1 -1
- package/dist/src/gateway/workbench-client.js +180 -0
- package/dist/src/gateway/workbench.css +4 -0
- package/dist/src/gateway/workbench.d.ts +51 -0
- package/dist/src/gateway/workbench.d.ts.map +1 -0
- package/dist/src/gateway/workbench.html +41 -0
- package/dist/src/gateway/workbench.js +157 -0
- package/dist/src/gateway/workbench.js.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/proxy.d.ts +1 -0
- package/dist/src/proxy.d.ts.map +1 -1
- package/dist/src/proxy.js +13 -0
- package/dist/src/proxy.js.map +1 -1
- package/dist/src/scanners/jobs.d.ts +40 -0
- package/dist/src/scanners/jobs.d.ts.map +1 -0
- package/dist/src/scanners/jobs.js +126 -0
- package/dist/src/scanners/jobs.js.map +1 -0
- package/dist/src/scanners/runner.d.ts +7 -1
- package/dist/src/scanners/runner.d.ts.map +1 -1
- package/dist/src/scanners/runner.js +24 -13
- package/dist/src/scanners/runner.js.map +1 -1
- package/dist/src/technique-checker.js +1 -1
- package/dist/src/technique-checker.js.map +1 -1
- package/dist/src/types.d.ts +1 -1
- package/dist/src/types.d.ts.map +1 -1
- package/docs/managed-gateway.md +4 -2
- package/docs/workbench.md +28 -0
- package/package.json +1 -1
package/dist/src/index.js
CHANGED
|
@@ -3,5 +3,5 @@ export { ScopeValidator } from "./validator.js";
|
|
|
3
3
|
export { loadManifest } from "./manifest.js";
|
|
4
4
|
export { loadConfig } from "./config.js";
|
|
5
5
|
export { AuditLogger } from "./audit/index.js";
|
|
6
|
-
export const VERSION = "0.
|
|
6
|
+
export const VERSION = "0.4.1";
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/src/proxy.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export declare class ScopeEnforcementProxy {
|
|
|
20
20
|
constructor(manifest: ScopeManifest, config: ProxyConfig, requiredAuditSink?: ((entry: AuditEntry) => Promise<void>) | undefined, requireMappedTechnique?: boolean, executionProfile?: "isolated" | "restricted" | "connected", additionalTechniqueMappings?: TechniqueMappings);
|
|
21
21
|
getAuditLogger(): AuditLogger;
|
|
22
22
|
registerTrivyBatch(batchId: string, actor?: string): void;
|
|
23
|
+
recordOperatorDrop(toolName: string, params: Record<string, unknown>, reason: string, actor?: string): Promise<void>;
|
|
23
24
|
handleMessage(message: unknown, actor?: string): Promise<HandleResult>;
|
|
24
25
|
/**
|
|
25
26
|
* Build a JSON-RPC parse-error response for input the proxy could not parse.
|
package/dist/src/proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAA2C,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;IACjB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,qBAAa,qBAAqB;IAU0B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAT7F,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,UAAU,CAAqB;IAEvC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACjC,aAAa,IAAI,MAAM,GAAG,SAAS;gBAEvB,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAmB,iBAAiB,CAAC,GAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,aAAA,EAAE,sBAAsB,UAAQ,EAAE,gBAAgB,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,WAAW,EAAE,2BAA2B,CAAC,EAAE,iBAAiB;IAchR,cAAc,IAAI,WAAW;IAC7B,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAEnD,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB5E;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,IAAI,OAAO;YAYtB,WAAW;IA2BzB;;;OAGG;YACW,aAAa;CAmE5B"}
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAA2C,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;IACjB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,qBAAa,qBAAqB;IAU0B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAT7F,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,UAAU,CAAqB;IAEvC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACjC,aAAa,IAAI,MAAM,GAAG,SAAS;gBAEvB,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAmB,iBAAiB,CAAC,GAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,aAAA,EAAE,sBAAsB,UAAQ,EAAE,gBAAgB,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,WAAW,EAAE,2BAA2B,CAAC,EAAE,iBAAiB;IAchR,cAAc,IAAI,WAAW;IAC7B,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAEnD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAapH,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB5E;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,IAAI,OAAO;YAYtB,WAAW;IA2BzB;;;OAGG;YACW,aAAa;CAmE5B"}
|
package/dist/src/proxy.js
CHANGED
|
@@ -29,6 +29,19 @@ export class ScopeEnforcementProxy {
|
|
|
29
29
|
}
|
|
30
30
|
getAuditLogger() { return this.auditLogger; }
|
|
31
31
|
registerTrivyBatch(batchId, actor) { this.validator.registerTrivyBatch(batchId, actor); }
|
|
32
|
+
async recordOperatorDrop(toolName, params, reason, actor) {
|
|
33
|
+
const entry = {
|
|
34
|
+
timestamp: new Date().toISOString(), engagement_id: this.manifest.engagement_id,
|
|
35
|
+
client: this.manifest.client, operator: this.manifest.operator, tool_name: toolName,
|
|
36
|
+
tool_parameters: sanitizeParams(params), extracted_target: null, resolved_ips: [],
|
|
37
|
+
decision: "BLOCKED_BY_OPERATOR", decision_reason: reason, matched_scope_item: null,
|
|
38
|
+
duration_ms: 0, proxy_version: this.config.proxyVersion, server_name: this.serverName, actor,
|
|
39
|
+
};
|
|
40
|
+
if (this.requiredAuditSink)
|
|
41
|
+
await this.requiredAuditSink(entry);
|
|
42
|
+
await this.auditLogger.log(entry);
|
|
43
|
+
await this.auditLogger.flushLocal();
|
|
44
|
+
}
|
|
32
45
|
async handleMessage(message, actor) {
|
|
33
46
|
// JSON-RPC batch: every tools/call inside must pass. If any element is
|
|
34
47
|
// blocked the whole batch is rejected so that the agent gets exactly one
|
package/dist/src/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { runScanner } from "./runner.js";
|
|
2
|
+
export type ScanStatus = "running" | "completed" | "failed" | "canceled" | "timed_out";
|
|
3
|
+
export declare class NucleiJobs {
|
|
4
|
+
private readonly execute;
|
|
5
|
+
private jobs;
|
|
6
|
+
constructor(execute?: typeof runScanner);
|
|
7
|
+
start(url: unknown, deadline?: unknown, maxDurationMinutes?: unknown): {
|
|
8
|
+
scanId: string;
|
|
9
|
+
status: ScanStatus;
|
|
10
|
+
deadlineAt: string;
|
|
11
|
+
maxDurationMinutes: number;
|
|
12
|
+
message: string;
|
|
13
|
+
};
|
|
14
|
+
status(scanId: unknown, url: unknown): {
|
|
15
|
+
scanId: string;
|
|
16
|
+
status: ScanStatus;
|
|
17
|
+
startedAt: string;
|
|
18
|
+
finishedAt?: string;
|
|
19
|
+
deadlineAt: string;
|
|
20
|
+
maxDurationMinutes: number;
|
|
21
|
+
findingCount: number;
|
|
22
|
+
partialFindings: string;
|
|
23
|
+
diagnostics: string;
|
|
24
|
+
outputTruncated: boolean;
|
|
25
|
+
lastOutputAt?: string;
|
|
26
|
+
result?: string;
|
|
27
|
+
reason?: string;
|
|
28
|
+
};
|
|
29
|
+
cancel(scanId: unknown, url: unknown, reason?: string): {
|
|
30
|
+
scanId: string;
|
|
31
|
+
status: ScanStatus;
|
|
32
|
+
reason?: string;
|
|
33
|
+
};
|
|
34
|
+
close(): void;
|
|
35
|
+
private stop;
|
|
36
|
+
private capture;
|
|
37
|
+
private get;
|
|
38
|
+
private prune;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=jobs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../../src/scanners/jobs.ts"],"names":[],"mappings":"AACA,OAAO,EAAoE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3G,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AAsBvF,qBAAa,UAAU;IAET,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,OAAO,CAAC,IAAI,CAA8B;gBACb,OAAO,GAAE,OAAO,UAAuB;IAEpE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAE,OAAqC,GAC/F;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAoCzG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAClH,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QACnH,eAAe,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAQrF,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,SAAsB,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAM5H,KAAK,IAAI,IAAI;IAEb,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,OAAO;IAqBf,OAAO,CAAC,GAAG;IAMX,OAAO,CAAC,KAAK;CASd"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { DEFAULT_NUCLEI_SCAN_MINUTES, MAX_NUCLEI_SCAN_MINUTES, nucleiArgs, runScanner } from "./runner.js";
|
|
3
|
+
export class NucleiJobs {
|
|
4
|
+
execute;
|
|
5
|
+
jobs = new Map();
|
|
6
|
+
constructor(execute = runScanner) {
|
|
7
|
+
this.execute = execute;
|
|
8
|
+
}
|
|
9
|
+
start(url, deadline, maxDurationMinutes = DEFAULT_NUCLEI_SCAN_MINUTES) {
|
|
10
|
+
const args = nucleiArgs({ url });
|
|
11
|
+
if (typeof maxDurationMinutes !== "number" || !Number.isInteger(maxDurationMinutes) || maxDurationMinutes < 1 || maxDurationMinutes > MAX_NUCLEI_SCAN_MINUTES)
|
|
12
|
+
throw new Error(`maxDurationMinutes must be a whole number from 1 to ${MAX_NUCLEI_SCAN_MINUTES}.`);
|
|
13
|
+
if ([...this.jobs.values()].filter((job) => job.state === "running").length >= 2)
|
|
14
|
+
throw new Error("Two Nuclei scans are already running; wait for one to finish.");
|
|
15
|
+
const now = Date.now();
|
|
16
|
+
const scopeDeadline = typeof deadline === "number" && Number.isFinite(deadline) ? deadline : Infinity;
|
|
17
|
+
const selectedDeadline = now + maxDurationMinutes * 60_000;
|
|
18
|
+
const stopAt = Math.min(selectedDeadline, scopeDeadline);
|
|
19
|
+
const remaining = stopAt - now;
|
|
20
|
+
if (remaining < 1000)
|
|
21
|
+
throw new Error("The engagement window ends too soon to start a scan.");
|
|
22
|
+
const scanId = randomUUID();
|
|
23
|
+
const job = { id: scanId, url: url, state: "running", startedAt: new Date(now).toISOString(),
|
|
24
|
+
deadlineAt: new Date(stopAt).toISOString(), maxDurationMinutes, findingCount: 0, partialFindings: "", diagnostics: "",
|
|
25
|
+
outputTruncated: false, stdoutRemainder: "", controller: new AbortController() };
|
|
26
|
+
const limitReason = scopeDeadline <= selectedDeadline ? "Engagement window ended before the selected scan duration." :
|
|
27
|
+
`Selected ${maxDurationMinutes}-minute Nuclei scan limit reached.`;
|
|
28
|
+
job.timer = setTimeout(() => this.stop(job, "timed_out", limitReason), remaining);
|
|
29
|
+
this.jobs.set(scanId, job);
|
|
30
|
+
this.prune();
|
|
31
|
+
void Promise.resolve().then(() => {
|
|
32
|
+
if (job.controller.signal.aborted)
|
|
33
|
+
throw new Error("Scan canceled before launch.");
|
|
34
|
+
return this.execute("nuclei", args, job.controller.signal, { timeoutMs: remaining + 5000,
|
|
35
|
+
onOutput: (text, stream) => this.capture(job, text, stream) });
|
|
36
|
+
}).then((output) => {
|
|
37
|
+
if (job.state !== "running")
|
|
38
|
+
return;
|
|
39
|
+
job.state = "completed";
|
|
40
|
+
job.result = output;
|
|
41
|
+
job.finishedAt = new Date().toISOString();
|
|
42
|
+
}, (error) => {
|
|
43
|
+
if (job.state !== "running")
|
|
44
|
+
return;
|
|
45
|
+
job.state = job.controller.signal.aborted ? "canceled" : "failed";
|
|
46
|
+
job.reason = error instanceof Error ? error.message : String(error);
|
|
47
|
+
job.finishedAt = new Date().toISOString();
|
|
48
|
+
}).finally(() => { if (job.timer)
|
|
49
|
+
clearTimeout(job.timer); });
|
|
50
|
+
return { scanId, status: "running", deadlineAt: job.deadlineAt, maxDurationMinutes,
|
|
51
|
+
message: "Scan started. Call nuclei_scan_status with this scanId and the same URL to get progress and findings." };
|
|
52
|
+
}
|
|
53
|
+
status(scanId, url) {
|
|
54
|
+
const job = this.get(scanId, url);
|
|
55
|
+
return { scanId: job.id, status: job.state, startedAt: job.startedAt, finishedAt: job.finishedAt,
|
|
56
|
+
deadlineAt: job.deadlineAt, maxDurationMinutes: job.maxDurationMinutes, findingCount: job.findingCount,
|
|
57
|
+
partialFindings: job.partialFindings, diagnostics: job.diagnostics, outputTruncated: job.outputTruncated,
|
|
58
|
+
lastOutputAt: job.lastOutputAt, result: job.result, reason: job.reason };
|
|
59
|
+
}
|
|
60
|
+
cancel(scanId, url, reason = "Canceled by user.") {
|
|
61
|
+
const job = this.get(scanId, url);
|
|
62
|
+
this.stop(job, "canceled", reason);
|
|
63
|
+
return { scanId: job.id, status: job.state, reason: job.reason };
|
|
64
|
+
}
|
|
65
|
+
close() { for (const job of this.jobs.values())
|
|
66
|
+
this.stop(job, "canceled", "Nuclei adapter is shutting down."); }
|
|
67
|
+
stop(job, status, reason) {
|
|
68
|
+
if (job.state !== "running")
|
|
69
|
+
return;
|
|
70
|
+
job.state = status;
|
|
71
|
+
job.reason = reason;
|
|
72
|
+
job.finishedAt = new Date().toISOString();
|
|
73
|
+
if (job.timer)
|
|
74
|
+
clearTimeout(job.timer);
|
|
75
|
+
job.controller.abort();
|
|
76
|
+
}
|
|
77
|
+
capture(job, text, stream) {
|
|
78
|
+
if (job.state !== "running")
|
|
79
|
+
return;
|
|
80
|
+
job.lastOutputAt = new Date().toISOString();
|
|
81
|
+
if (stream === "stderr") {
|
|
82
|
+
job.diagnostics = `${job.diagnostics}${text}`.slice(-16 * 1024);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const combined = `${job.partialFindings}${text}`;
|
|
86
|
+
if (combined.length > 128 * 1024)
|
|
87
|
+
job.outputTruncated = true;
|
|
88
|
+
job.partialFindings = combined.slice(-128 * 1024);
|
|
89
|
+
job.stdoutRemainder += text;
|
|
90
|
+
if (job.stdoutRemainder.length > 256 * 1024) {
|
|
91
|
+
job.stdoutRemainder = job.stdoutRemainder.slice(-256 * 1024);
|
|
92
|
+
job.outputTruncated = true;
|
|
93
|
+
}
|
|
94
|
+
const lines = job.stdoutRemainder.split(/\r?\n/);
|
|
95
|
+
job.stdoutRemainder = lines.pop() ?? "";
|
|
96
|
+
for (const line of lines) {
|
|
97
|
+
if (!line.trim())
|
|
98
|
+
continue;
|
|
99
|
+
try {
|
|
100
|
+
const finding = JSON.parse(line);
|
|
101
|
+
if (finding && typeof finding === "object")
|
|
102
|
+
job.findingCount++;
|
|
103
|
+
}
|
|
104
|
+
catch { /* Scanner diagnostics may appear on stdout. */ }
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
get(scanId, url) {
|
|
108
|
+
const job = typeof scanId === "string" ? this.jobs.get(scanId) : undefined;
|
|
109
|
+
if (!job || job.url !== url)
|
|
110
|
+
throw new Error("Nuclei scan not found for that URL.");
|
|
111
|
+
return job;
|
|
112
|
+
}
|
|
113
|
+
prune() {
|
|
114
|
+
const now = Date.now();
|
|
115
|
+
for (const [id, job] of this.jobs)
|
|
116
|
+
if (job.finishedAt && now - Date.parse(job.finishedAt) > 60 * 60_000)
|
|
117
|
+
this.jobs.delete(id);
|
|
118
|
+
while (this.jobs.size > 40) {
|
|
119
|
+
const completed = [...this.jobs].find(([, job]) => job.state !== "running");
|
|
120
|
+
if (!completed)
|
|
121
|
+
break;
|
|
122
|
+
this.jobs.delete(completed[0]);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../src/scanners/jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
+
export declare const DEFAULT_NUCLEI_SCAN_MINUTES = 60;
|
|
2
|
+
export declare const MAX_NUCLEI_SCAN_MINUTES = 240;
|
|
3
|
+
export interface ScannerRunOptions {
|
|
4
|
+
timeoutMs?: number;
|
|
5
|
+
onOutput?: (text: string, stream: "stdout" | "stderr") => void;
|
|
6
|
+
}
|
|
1
7
|
export declare function nmapArgs(input: Record<string, unknown>): string[];
|
|
2
8
|
export declare function nucleiArgs(input: Record<string, unknown>): string[];
|
|
3
|
-
export declare function runScanner(binary: "nmap" | "nuclei", args: string[]): Promise<string>;
|
|
9
|
+
export declare function runScanner(binary: "nmap" | "nuclei", args: string[], signal?: AbortSignal, options?: ScannerRunOptions): Promise<string>;
|
|
4
10
|
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/scanners/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/scanners/runner.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;CAChE;AA4BD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAOjE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAYnE;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B9I"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { isIP } from "node:net";
|
|
3
|
-
const MAX_OUTPUT_BYTES =
|
|
4
|
-
const
|
|
3
|
+
const MAX_OUTPUT_BYTES = 256 * 1024;
|
|
4
|
+
const NMAP_SCAN_MS = 120_000;
|
|
5
|
+
export const DEFAULT_NUCLEI_SCAN_MINUTES = 60;
|
|
6
|
+
export const MAX_NUCLEI_SCAN_MINUTES = 240;
|
|
5
7
|
function singleHost(value) {
|
|
6
8
|
if (typeof value !== "string" || value.length > 253 || value !== value.trim() || !value) {
|
|
7
9
|
throw new Error("Enter one hostname or IP address.");
|
|
@@ -59,27 +61,36 @@ export function nucleiArgs(input) {
|
|
|
59
61
|
return ["-u", url.href, "-pt", "http", "-rl", "5", "-c", "1", "-timeout", "5", "-retries", "0", "-ni", "-duc",
|
|
60
62
|
"-etags", "dos,bruteforce,fuzz,headless,code", "-j"];
|
|
61
63
|
}
|
|
62
|
-
export async function runScanner(binary, args) {
|
|
64
|
+
export async function runScanner(binary, args, signal, options) {
|
|
63
65
|
return new Promise((resolve, reject) => {
|
|
64
|
-
const child = spawn(binary, args, { shell: false, windowsHide: true, stdio: ["ignore", "pipe", "pipe"] });
|
|
66
|
+
const child = spawn(binary, args, { shell: false, windowsHide: true, stdio: ["ignore", "pipe", "pipe"], signal });
|
|
65
67
|
let output = "";
|
|
66
68
|
let size = 0;
|
|
67
69
|
let finished = false;
|
|
70
|
+
let truncated = false;
|
|
68
71
|
const fail = (error) => { if (!finished) {
|
|
69
72
|
finished = true;
|
|
73
|
+
clearTimeout(timer);
|
|
70
74
|
child.kill();
|
|
71
75
|
reject(error);
|
|
72
76
|
} };
|
|
73
|
-
const
|
|
74
|
-
const
|
|
77
|
+
const limit = Math.max(1000, Math.min(options?.timeoutMs ?? (binary === "nuclei" ? DEFAULT_NUCLEI_SCAN_MINUTES * 60_000 : NMAP_SCAN_MS), binary === "nuclei" ? MAX_NUCLEI_SCAN_MINUTES * 60_000 + 5000 : NMAP_SCAN_MS));
|
|
78
|
+
const timer = setTimeout(() => fail(new Error(`${binary} exceeded the ${Math.round(limit / 60_000)}-minute scan limit.`)), limit);
|
|
79
|
+
const collect = (data, stream) => {
|
|
80
|
+
const text = data.toString("utf8");
|
|
81
|
+
options?.onOutput?.(text, stream);
|
|
75
82
|
size += data.length;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
const maxOutput = binary === "nuclei" ? 1024 * 1024 : MAX_OUTPUT_BYTES;
|
|
84
|
+
if (size > maxOutput && binary !== "nuclei")
|
|
85
|
+
return fail(new Error(`${binary} output exceeded 256 KiB; narrow the scan.`));
|
|
86
|
+
if (size > maxOutput)
|
|
87
|
+
truncated = true;
|
|
88
|
+
if (output.length < maxOutput)
|
|
89
|
+
output += text.slice(0, maxOutput - output.length);
|
|
79
90
|
};
|
|
80
|
-
child.stdout.on("data", collect);
|
|
81
|
-
child.stderr.on("data", collect);
|
|
82
|
-
child.on("error", (error) => fail(new Error(`${binary} could not start. Install it on this computer and check that it is on PATH. ${error.message}`)));
|
|
91
|
+
child.stdout.on("data", (data) => collect(data, "stdout"));
|
|
92
|
+
child.stderr.on("data", (data) => collect(data, "stderr"));
|
|
93
|
+
child.on("error", (error) => fail(new Error(signal?.aborted ? `${binary} scan was canceled.` : `${binary} could not start. Install it on this computer and check that it is on PATH. ${error.message}`)));
|
|
83
94
|
child.on("close", (code) => {
|
|
84
95
|
clearTimeout(timer);
|
|
85
96
|
if (finished)
|
|
@@ -88,7 +99,7 @@ export async function runScanner(binary, args) {
|
|
|
88
99
|
if (code !== 0)
|
|
89
100
|
reject(new Error(`${binary} exited with code ${code}. ${output.slice(0, 2000)}`));
|
|
90
101
|
else
|
|
91
|
-
resolve(output || `${binary} completed with no findings.`);
|
|
102
|
+
resolve(`${output || `${binary} completed with no findings.`}${truncated ? "\n[Output exceeded 1 MiB; the result is truncated.]" : ""}`);
|
|
92
103
|
});
|
|
93
104
|
});
|
|
94
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/scanners/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/scanners/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,7 +80,7 @@ const DEFAULT_MAPPINGS = {
|
|
|
80
80
|
"arjun", "smuggler", "wpscan", "nessus", "dalfox", "zap",
|
|
81
81
|
"burpsuite", "burp_scan", "burp_active_scan",
|
|
82
82
|
// Hex Strike AI MCP variants
|
|
83
|
-
"gobuster_scan", "nuclei_scan", "sqlmap_scan", "ffuf_scan", "feroxbuster_scan",
|
|
83
|
+
"gobuster_scan", "nuclei_scan", "nuclei_scan_status", "nuclei_scan_cancel", "sqlmap_scan", "ffuf_scan", "feroxbuster_scan",
|
|
84
84
|
// Kali Linux MCP
|
|
85
85
|
"vulnerability_scan", "web_enumeration",
|
|
86
86
|
// Burp Suite MCP (PortSwigger official)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"technique-checker.js","sourceRoot":"","sources":["../../src/technique-checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,MAAM,gBAAgB,GAAsB;IAC1C,GAAG,EAAE;QACH,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC;QACtD,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;KAC3B;IACD,WAAW,EAAE;QACX,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;KACvC;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC;QACxD,QAAQ,EAAE,EAAE;KACb;IACD,KAAK,EAAE;QACL,KAAK,EAAE;YACL,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO;YACjD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS;YACjD,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ;YAC7D,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY;YACpJ,QAAQ,EAAE,YAAY,EAAE,YAAY;YACpC,oBAAoB;YACpB,oBAAoB,EAAE,gBAAgB,EAAE,cAAc;YACtD,iBAAiB;YACjB,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB;YAC9D,aAAa,EAAE,cAAc;YAC7B,4BAA4B;YAC5B,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB;YAChE,UAAU;YACV,kBAAkB;YAClB,iBAAiB;YACjB,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,YAAY;YACpE,sBAAsB,EAAE,qBAAqB,EAAE,yBAAyB;YACxE,2CAA2C;YAC3C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY;YAC1D,cAAc;YACd,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,+BAA+B,EAAE,kBAAkB;YAChG,qBAAqB,EAAE,yBAAyB,EAAE,0BAA0B;YAC5E,eAAe;YACf,UAAU,EAAE,eAAe;YAC3B,aAAa;YACb,QAAQ,EAAE,oBAAoB;YAC9B,YAAY;YACZ,OAAO,EAAE,UAAU;YACnB,cAAc;YACd,SAAS;YACT,0BAA0B;YAC1B,cAAc,EAAE,oBAAoB;SACrC;QACD,QAAQ,EAAE;YACR,iEAAiE;YACjE,OAAO;YACP,iEAAiE;YACjE,SAAS;SACV;KACF;IACD,OAAO,EAAE;QACP,KAAK,EAAE;YACL,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;YACvD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK;YACxD,WAAW,EAAE,WAAW,EAAE,kBAAkB;YAC5C,6BAA6B;YAC7B,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"technique-checker.js","sourceRoot":"","sources":["../../src/technique-checker.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type Decision = "ALLOWED" | "BLOCKED_EXCLUDED_TARGET" | "BLOCKED_NOT_IN_SCOPE" | "BLOCKED_OUTSIDE_WINDOW" | "BLOCKED_TECHNIQUE" | "BLOCKED_DNS_FAILED" | "BLOCKED_RESTRICTED_IP" | "BLOCKED_INVALID_REQUEST" | "BLOCKED_UNINSPECTABLE_COMMAND" | "BLOCKED_INTERNAL_ERROR" | "ALLOWED_NO_TARGET";
|
|
1
|
+
export type Decision = "ALLOWED" | "BLOCKED_EXCLUDED_TARGET" | "BLOCKED_NOT_IN_SCOPE" | "BLOCKED_OUTSIDE_WINDOW" | "BLOCKED_TECHNIQUE" | "BLOCKED_DNS_FAILED" | "BLOCKED_RESTRICTED_IP" | "BLOCKED_INVALID_REQUEST" | "BLOCKED_UNINSPECTABLE_COMMAND" | "BLOCKED_BY_OPERATOR" | "BLOCKED_INTERNAL_ERROR" | "ALLOWED_NO_TARGET";
|
|
2
2
|
export interface ValidationResult {
|
|
3
3
|
decision: Decision;
|
|
4
4
|
reason: string;
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,yBAAyB,GACzB,sBAAsB,GACtB,wBAAwB,GACxB,mBAAmB,GACnB,oBAAoB,GACpB,uBAAuB,GACvB,yBAAyB,GACzB,+BAA+B,GAC/B,wBAAwB,GACxB,mBAAmB,CAAC;AAExB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,yBAAyB,GACzB,sBAAsB,GACtB,wBAAwB,GACxB,mBAAmB,GACnB,oBAAoB,GACpB,uBAAuB,GACvB,yBAAyB,GACzB,+BAA+B,GAC/B,qBAAqB,GACrB,wBAAwB,GACxB,mBAAmB,CAAC;AAExB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH"}
|
package/docs/managed-gateway.md
CHANGED
|
@@ -4,6 +4,8 @@ Start with the [architecture diagram and local-versus-hosted guide](https://agen
|
|
|
4
4
|
|
|
5
5
|
The gateway combines MCP servers behind one `/mcp` endpoint. Its browser page at `/admin` lets administrators manage users and servers, review and approve scopes, and assign engagements. Each tester chooses their own approved engagement. With no selection, the gateway exposes no tools. Every `tools/call` passes through the scope validator and audit log. Tool names are prefixed with the server name, such as `burp__scan`.
|
|
6
6
|
|
|
7
|
+
Open the [MCP workbench](workbench.md) to inspect live calls, pause and edit requests, drop calls, and manage long-running jobs.
|
|
8
|
+
|
|
7
9
|
This is a new mode. The original per-tool stdio, SSE, and HTTP proxy commands remain available.
|
|
8
10
|
|
|
9
11
|
## Start on a tester laptop
|
|
@@ -19,9 +21,9 @@ The gateway starts in the background and prints a temporary admin token in your
|
|
|
19
21
|
|
|
20
22
|
**Live server controls:** The dashboard's **Turn on** and **Turn off** buttons update the running gateway immediately; neither the gateway nor Burp needs to restart. **On** means the server is enabled. **Connected** means the gateway reached the upstream and listed its tools at the shown check time. **Connection failed** means the upstream is unavailable; install/start it and click **Check connection**. A local command tool shows **Runs on demand** because it has no persistent MCP connection. A connected MCP client can request its tool list again to see changes, but some clients cache the list and require a manual tool refresh. The gateway rejects new calls after a server is turned off and stops in-flight local command tools.
|
|
21
23
|
|
|
22
|
-
**Local command tools:** An administrator can add an installed CLI as a local MCP tool even when that CLI has no MCP server. Enter one executable, fixed arguments with `{target}` on exactly one argument line, a target type (host/IP or HTTP URL), and a technique category. The gateway exposes `<name>__run_local_command` with one `target` input, checks the current engagement scope, then launches the executable directly without a shell. The AI cannot choose flags.
|
|
24
|
+
**Local command tools:** An administrator can add an installed CLI as a local MCP tool even when that CLI has no MCP server. Enter one executable, fixed arguments with `{target}` on exactly one argument line, a target type (host/IP or HTTP URL), and a technique category. The gateway exposes `<name>__run_local_command` with one `target` input, checks the current engagement scope, then launches the executable directly without a shell. The AI cannot choose flags. Direct calls have a two-minute and 64 KiB output limit. A [background job](workbench.md) can run for 1 to 240 minutes or until the engagement window ends, with the same output limit. This is for administrator-reviewed single-target commands; a CLI's own configuration or fixed flags can still have effects beyond the supplied target. Review them before enabling the tool. Local command tools cannot run in the hosted gateway. The bundled Nmap and Nuclei presets remain the recommended adapters because they enforce additional rate and option limits.
|
|
23
25
|
|
|
24
|
-
**Nmap and Nuclei:** Install the [Nmap CLI](https://nmap.org/download.html) and [ProjectDiscovery Nuclei CLI](https://github.com/projectdiscovery/nuclei) on the tester's computer. Confirm `nmap --version` and `nuclei -version` work in the same terminal that starts the gateway. The npm package includes the MCP adapter; the CLI programs themselves are separate. Add each preset, turn it on, and refresh your MCP client's tool list. Nmap offers a single-host TCP scan of up to 100 ports with a two-minute limit. Nuclei offers a single HTTP URL with low concurrency and rate limits; OAST and automatic updates are disabled. Review the locally installed Nuclei templates and scanner configuration before team use. Target traffic leaves the tester's computer or VPN exit.
|
|
26
|
+
**Nmap and Nuclei:** Install the [Nmap CLI](https://nmap.org/download.html) and [ProjectDiscovery Nuclei CLI](https://github.com/projectdiscovery/nuclei) on the tester's computer. Confirm `nmap --version` and `nuclei -version` work in the same terminal that starts the gateway. The npm package includes the MCP adapter; the CLI programs themselves are separate. Add each preset, turn it on, and refresh your MCP client's tool list. Nmap offers a single-host TCP scan of up to 100 ports with a two-minute limit. Nuclei offers a single HTTP URL with low concurrency and rate limits; OAST and automatic updates are disabled. A Nuclei call returns a scan ID immediately. Its default scan limit is 60 minutes; `maxDurationMinutes` can be set from 1 to 240, and the engagement window always caps it. Status reports progress, partial findings, and the reason for a timeout or cancellation. Review the locally installed Nuclei templates and scanner configuration before team use. Target traffic leaves the tester's computer or VPN exit.
|
|
25
27
|
|
|
26
28
|
**Semgrep source files:** An administrator must list approved absolute code folders under **Approved local code folders** in the engagement draft, then save and approve it. Use `semgrep_scan` with absolute file paths inside those folders. A file outside them, an inaccessible file, or a scope without approved folders is blocked. `semgrep_findings` queries the Semgrep cloud account and remains blocked because its repository selection is not yet tied to an approved engagement. Unknown tools remain blocked; there is no blanket unclassified-tool bypass.
|
|
27
29
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# MCP workbench and background jobs
|
|
2
|
+
|
|
3
|
+
Open `/workbench` on the gateway you use for your tools. For a laptop gateway, open `http://127.0.0.1:9091/workbench` and enter the local administrator token printed by `integsec-gateway start`. For the team gateway, sign in at `https://agentic-proxy.pentestprepper.com/workbench` through Cloudflare Access. The workbench shows only your calls and jobs for your selected engagement.
|
|
4
|
+
|
|
5
|
+
## Inspect and intercept calls
|
|
6
|
+
|
|
7
|
+
The live feed shows recent upstream `tools/call` requests, extracted targets, scope decisions, and response previews. Search by tool, server, target, or engagement. Select a call to inspect its request and response. The feed is kept in memory for the current gateway process; the audit log remains the durable record. Completed previews redact common credential fields, but do not paste secrets into tool arguments unless the tool requires them.
|
|
8
|
+
|
|
9
|
+
**Intercept my calls** is off by default. Turn it on to pause your next upstream tool calls before they run. Select a waiting call and choose **Forward unchanged**, **Forward edited**, or **Drop call**. Edited JSON arguments pass through the full engagement scope check again. Dropped calls never reach the upstream server and are recorded in the audit log. Calls waiting more than 45 seconds are dropped. Turning intercept off drops all of your waiting calls. This switch is per user and resets when the gateway restarts. It does not pause MCP prompts, resources, or job status controls.
|
|
10
|
+
|
|
11
|
+
## Run a long tool call
|
|
12
|
+
|
|
13
|
+
Use `gateway__start_long_call` in your MCP client when a tool may take several minutes. Set `tool` to the full upstream tool name and `arguments` to that tool's normal argument object. For example:
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"tool": "nmap__nmap_scan",
|
|
18
|
+
"arguments": { "target": "scan.example.test", "ports": "80,443" }
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Replace the example target and tool arguments with the approved engagement values. The gateway returns a `jobId` immediately. Use `gateway__job_status` with that ID to read the final result, `gateway__job_list` to find recent jobs, or `gateway__job_cancel` to cancel one. The workbench also lists jobs and provides **View** and **Cancel** controls. Calls still pass through intercept, scope validation, and the audit log before dispatch. The job belongs to the user and engagement that started it; another user cannot read or cancel it.
|
|
23
|
+
|
|
24
|
+
At most four background jobs per user and 32 per gateway can run at once. Local jobs default to 60 minutes and accept `maxDurationMinutes` from 1 to 240; hosted jobs default to 30 minutes and accept 1 to 30. The engagement window always ends a job sooner. A duration or window stop reports `timed_out` with a reason. Changing engagement, removing access, disabling the upstream server, or stopping the gateway cancels active jobs. The gateway sends cancellation to an MCP upstream, but a third-party server may continue work if it does not honor MCP cancellation. Local command tools are stopped by the gateway. Results are held in memory for one hour and capped at 256 KiB; use a narrower tool request if the result is too large. Normal direct calls still have a five-minute upstream wait; use a background job for longer operations.
|
|
25
|
+
|
|
26
|
+
## Nuclei scans
|
|
27
|
+
|
|
28
|
+
The bundled Nuclei adapter starts a scan and immediately returns a `scanId` and deadline. It runs for up to 60 minutes by default. Set `maxDurationMinutes` from 1 to 240 when an approved scan needs more or less time; the engagement window always ends the scan sooner if necessary. Call `nuclei__nuclei_scan_status` with the same approved `url` and scan ID to see its deadline, finding count, partial findings, diagnostics, and final result. A configured limit or engagement-window stop reports `timed_out` with the exact reason; **Cancel** reports `canceled`. Earlier findings stay visible after either stop. Use `nuclei__nuclei_scan_cancel` to stop it yourself. Nuclei's concurrency, rate, template, OAST, and update restrictions still apply. Scan IDs are only accessible to the same gateway user and engagement. You do not need `gateway__start_long_call` around `nuclei__nuclei_scan`; the adapter already runs it as a job. Refresh your MCP client's tool list after upgrading to see the updated argument and status fields.
|
package/package.json
CHANGED