patchwork-os 1.2.0-beta.2.canary.781 → 1.2.0-beta.2.canary.783
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/activityLog.js +6 -1
- package/dist/activityLog.js.map +1 -1
- package/dist/approvalQueue.js +15 -0
- package/dist/approvalQueue.js.map +1 -1
- package/dist/bridge.js +32 -1
- package/dist/bridge.js.map +1 -1
- package/dist/claudeDriver.d.ts +10 -0
- package/dist/claudeDriver.js +27 -4
- package/dist/claudeDriver.js.map +1 -1
- package/dist/claudeOrchestrator.d.ts +5 -0
- package/dist/claudeOrchestrator.js +94 -6
- package/dist/claudeOrchestrator.js.map +1 -1
- package/dist/commands/patchworkInit.js +10 -0
- package/dist/commands/patchworkInit.js.map +1 -1
- package/dist/commands/policyExplain.d.ts +50 -0
- package/dist/commands/policyExplain.js +221 -0
- package/dist/commands/policyExplain.js.map +1 -0
- package/dist/commands/profile.d.ts +17 -0
- package/dist/commands/profile.js +85 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/recipe.d.ts +8 -0
- package/dist/commands/recipe.js +64 -0
- package/dist/commands/recipe.js.map +1 -1
- package/dist/commands/recipeInstall.js +19 -0
- package/dist/commands/recipeInstall.js.map +1 -1
- package/dist/connectors/baseConnector.js +5 -0
- package/dist/connectors/baseConnector.js.map +1 -1
- package/dist/connectors/secrets.js +10 -2
- package/dist/connectors/secrets.js.map +1 -1
- package/dist/connectors/tokenStorage.d.ts +9 -0
- package/dist/connectors/tokenStorage.js +27 -0
- package/dist/connectors/tokenStorage.js.map +1 -1
- package/dist/decisionTraceLog.js +4 -3
- package/dist/decisionTraceLog.js.map +1 -1
- package/dist/drivers/claude/envSanitizer.d.ts +39 -0
- package/dist/drivers/claude/envSanitizer.js +114 -0
- package/dist/drivers/claude/envSanitizer.js.map +1 -1
- package/dist/drivers/claude/subprocess.d.ts +12 -0
- package/dist/drivers/claude/subprocess.js +114 -25
- package/dist/drivers/claude/subprocess.js.map +1 -1
- package/dist/drivers/claude/subprocessSettings.d.ts +4 -1
- package/dist/drivers/claude/subprocessSettings.js +24 -7
- package/dist/drivers/claude/subprocessSettings.js.map +1 -1
- package/dist/drivers/codex/subprocess.d.ts +19 -0
- package/dist/drivers/codex/subprocess.js +40 -8
- package/dist/drivers/codex/subprocess.js.map +1 -1
- package/dist/drivers/gemini/index.d.ts +24 -0
- package/dist/drivers/gemini/index.js +76 -13
- package/dist/drivers/gemini/index.js.map +1 -1
- package/dist/drivers/types.d.ts +14 -0
- package/dist/drivers/types.js.map +1 -1
- package/dist/errors.d.ts +1 -0
- package/dist/errors.js +1 -0
- package/dist/errors.js.map +1 -1
- package/dist/governance/doctorReport.d.ts +45 -0
- package/dist/governance/doctorReport.js +251 -0
- package/dist/governance/doctorReport.js.map +1 -0
- package/dist/governance/effectivePolicy.d.ts +134 -0
- package/dist/governance/effectivePolicy.js +322 -0
- package/dist/governance/effectivePolicy.js.map +1 -0
- package/dist/governance/killSwitchPolicy.d.ts +30 -0
- package/dist/governance/killSwitchPolicy.js +52 -0
- package/dist/governance/killSwitchPolicy.js.map +1 -0
- package/dist/governance/pluginPolicy.d.ts +111 -0
- package/dist/governance/pluginPolicy.js +247 -0
- package/dist/governance/pluginPolicy.js.map +1 -0
- package/dist/governance/profile.d.ts +153 -0
- package/dist/governance/profile.js +181 -0
- package/dist/governance/profile.js.map +1 -0
- package/dist/governance/secretValues.d.ts +89 -0
- package/dist/governance/secretValues.js +286 -0
- package/dist/governance/secretValues.js.map +1 -0
- package/dist/governance/toolFacts.d.ts +11 -0
- package/dist/governance/toolFacts.js +46 -0
- package/dist/governance/toolFacts.js.map +1 -0
- package/dist/governance/untrustedContent.d.ts +43 -0
- package/dist/governance/untrustedContent.js +81 -0
- package/dist/governance/untrustedContent.js.map +1 -0
- package/dist/index.js +73 -5
- package/dist/index.js.map +1 -1
- package/dist/logger.js +7 -6
- package/dist/logger.js.map +1 -1
- package/dist/patchworkConfig.d.ts +22 -0
- package/dist/patchworkConfig.js.map +1 -1
- package/dist/pluginLoader.d.ts +10 -2
- package/dist/pluginLoader.js +12 -8
- package/dist/pluginLoader.js.map +1 -1
- package/dist/recipeOrchestration.d.ts +0 -6
- package/dist/recipeOrchestration.js +80 -23
- package/dist/recipeOrchestration.js.map +1 -1
- package/dist/recipeRoutes.js +52 -0
- package/dist/recipeRoutes.js.map +1 -1
- package/dist/recipes/agentExecutor.d.ts +43 -3
- package/dist/recipes/agentExecutor.js +55 -7
- package/dist/recipes/agentExecutor.js.map +1 -1
- package/dist/recipes/approvalRequest.d.ts +8 -0
- package/dist/recipes/approvalRequest.js.map +1 -1
- package/dist/recipes/chainedRunner.d.ts +18 -5
- package/dist/recipes/chainedRunner.js +107 -12
- package/dist/recipes/chainedRunner.js.map +1 -1
- package/dist/recipes/haltCategory.d.ts +4 -0
- package/dist/recipes/haltCategory.js +4 -0
- package/dist/recipes/haltCategory.js.map +1 -1
- package/dist/recipes/schema.d.ts +5 -1
- package/dist/recipes/schemaGenerator.js +12 -1
- package/dist/recipes/schemaGenerator.js.map +1 -1
- package/dist/recipes/stepObservation.d.ts +15 -0
- package/dist/recipes/stepObservation.js +27 -22
- package/dist/recipes/stepObservation.js.map +1 -1
- package/dist/recipes/templateEngine.d.ts +11 -1
- package/dist/recipes/templateEngine.js +12 -2
- package/dist/recipes/templateEngine.js.map +1 -1
- package/dist/recipes/toolRegistry.d.ts +3 -1
- package/dist/recipes/toolRegistry.js +9 -3
- package/dist/recipes/toolRegistry.js.map +1 -1
- package/dist/recipes/tools/http.d.ts +5 -2
- package/dist/recipes/tools/http.js +29 -10
- package/dist/recipes/tools/http.js.map +1 -1
- package/dist/recipes/validation.d.ts +10 -1
- package/dist/recipes/validation.js +51 -1
- package/dist/recipes/validation.js.map +1 -1
- package/dist/recipes/yamlRunner.d.ts +46 -5
- package/dist/recipes/yamlRunner.js +173 -21
- package/dist/recipes/yamlRunner.js.map +1 -1
- package/dist/schemas/recipe.v1.json +60 -3
- package/dist/server.js +15 -0
- package/dist/server.js.map +1 -1
- package/dist/ssrfGuard.d.ts +89 -5
- package/dist/ssrfGuard.js +250 -5
- package/dist/ssrfGuard.js.map +1 -1
- package/dist/tools/httpClient.js +23 -165
- package/dist/tools/httpClient.js.map +1 -1
- package/dist/transport.js +41 -0
- package/dist/transport.js.map +1 -1
- package/package.json +1 -1
package/dist/ssrfGuard.js
CHANGED
|
@@ -15,11 +15,23 @@
|
|
|
15
15
|
* `dns.lookup()` and re-validates the resolved IP. Returns either a
|
|
16
16
|
* normalized `{ ok: true, url, resolvedIp? }` or `{ ok: false, reason }`.
|
|
17
17
|
*
|
|
18
|
-
* `validateSafeUrl` does NOT pin the URL hostname to the resolved IP
|
|
19
|
-
* `
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
18
|
+
* `validateSafeUrl` does NOT pin the URL hostname to the resolved IP; the
|
|
19
|
+
* install routes call `fetch` once and accept the marginal TOCTOU window.
|
|
20
|
+
*
|
|
21
|
+
* Two further surfaces carry the full outbound-request discipline and are
|
|
22
|
+
* the ONE implementation behind both `sendHttpRequest` (bridge tool) and the
|
|
23
|
+
* recipe `http.post` tool (Phase 0 step 9 — previously the recipe tool did
|
|
24
|
+
* only the lexical check and handed the raw URL to fetch with default
|
|
25
|
+
* redirect following, so DNS-resolves-to-private and redirect-to-private
|
|
26
|
+
* both walked straight past it):
|
|
27
|
+
* - `validateOutboundUrl(url, opts)` — parse, protocol, userinfo strip,
|
|
28
|
+
* lexical check, DNS pre-resolution re-check, returns the address to pin.
|
|
29
|
+
* - `safeFetch(url, init, opts)` — validates, pins the connection to the
|
|
30
|
+
* resolved address (hostname rewritten to the IP, original name carried
|
|
31
|
+
* in the Host header so SNI / virtual hosting keep working), follows up
|
|
32
|
+
* to N redirects manually re-validating EVERY hop, downgrades method/body
|
|
33
|
+
* per RFC 7231 on 301/302/303, and drops credential headers on a
|
|
34
|
+
* cross-origin hop.
|
|
23
35
|
*/
|
|
24
36
|
import dns from "node:dns/promises";
|
|
25
37
|
/**
|
|
@@ -49,6 +61,53 @@ function hexIpv4ToDotted(s) {
|
|
|
49
61
|
const n = parseInt(s, 16);
|
|
50
62
|
return `${(n >>> 24) & 0xff}.${(n >>> 16) & 0xff}.${(n >>> 8) & 0xff}.${n & 0xff}`;
|
|
51
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* inet_aton-style loose IPv4 parse: 1-4 parts, each decimal, octal (leading
|
|
66
|
+
* 0) or hex (0x). Returns canonical dotted-quad or null when the string is
|
|
67
|
+
* not an all-numeric IPv4 form. `new URL()` already canonicalises these, but
|
|
68
|
+
* callers that hand `isPrivateHost` a raw string (a DNS answer, a Location
|
|
69
|
+
* header hostname) must not be bypassable by `0x7f000001`, `2130706433`,
|
|
70
|
+
* `0177.0.0.1` or `127.1`.
|
|
71
|
+
*/
|
|
72
|
+
function looseIpv4ToDotted(host) {
|
|
73
|
+
if (!/^[0-9a-fx.]+$/i.test(host) ||
|
|
74
|
+
host.startsWith(".") ||
|
|
75
|
+
host.endsWith("."))
|
|
76
|
+
return null;
|
|
77
|
+
const parts = host.split(".");
|
|
78
|
+
if (parts.length < 1 || parts.length > 4)
|
|
79
|
+
return null;
|
|
80
|
+
const nums = [];
|
|
81
|
+
for (const part of parts) {
|
|
82
|
+
let n;
|
|
83
|
+
if (/^0x[0-9a-f]+$/i.test(part))
|
|
84
|
+
n = parseInt(part.slice(2), 16);
|
|
85
|
+
else if (/^0[0-7]+$/.test(part))
|
|
86
|
+
n = parseInt(part, 8);
|
|
87
|
+
else if (/^\d+$/.test(part))
|
|
88
|
+
n = parseInt(part, 10);
|
|
89
|
+
else
|
|
90
|
+
return null;
|
|
91
|
+
if (!Number.isFinite(n))
|
|
92
|
+
return null;
|
|
93
|
+
nums.push(n);
|
|
94
|
+
}
|
|
95
|
+
// Last part fills the remaining bytes (inet_aton semantics).
|
|
96
|
+
const last = nums[nums.length - 1];
|
|
97
|
+
const remainingBytes = 4 - (nums.length - 1);
|
|
98
|
+
if (last >= 2 ** (8 * remainingBytes))
|
|
99
|
+
return null;
|
|
100
|
+
for (let i = 0; i < nums.length - 1; i++) {
|
|
101
|
+
if (nums[i] > 255)
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
let value = 0;
|
|
105
|
+
for (let i = 0; i < nums.length - 1; i++) {
|
|
106
|
+
value = value * 256 + nums[i];
|
|
107
|
+
}
|
|
108
|
+
value = value * 2 ** (8 * remainingBytes) + last;
|
|
109
|
+
return `${(value >>> 24) & 0xff}.${(value >>> 16) & 0xff}.${(value >>> 8) & 0xff}.${value & 0xff}`;
|
|
110
|
+
}
|
|
52
111
|
/**
|
|
53
112
|
* Block requests to private/loopback addresses. Lexical-only check.
|
|
54
113
|
*
|
|
@@ -68,6 +127,14 @@ export function isPrivateHost(hostname) {
|
|
|
68
127
|
// regex below. Node's URL parser may normalize them on some platforms.
|
|
69
128
|
if (/^0x[0-9a-f]+$/i.test(host) || /^0[0-7]{7,}$/.test(host))
|
|
70
129
|
return true;
|
|
130
|
+
// Unusual IPv4 notations (decimal integer, short-form "127.1", zero-padded
|
|
131
|
+
// octal, per-part hex): canonicalise and re-check the dotted form.
|
|
132
|
+
const canonicalIpv4 = /^\d{1,3}(\.\d{1,3}){3}$/.test(host);
|
|
133
|
+
if (!canonicalIpv4) {
|
|
134
|
+
const dotted = looseIpv4ToDotted(host);
|
|
135
|
+
if (dotted !== null)
|
|
136
|
+
return isPrivateHost(dotted);
|
|
137
|
+
}
|
|
71
138
|
// IPv4 range checks
|
|
72
139
|
const ipv4 = host.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
|
|
73
140
|
if (ipv4) {
|
|
@@ -202,4 +269,182 @@ export async function validateSafeUrl(urlString) {
|
|
|
202
269
|
return { ok: true, url: parsed };
|
|
203
270
|
}
|
|
204
271
|
}
|
|
272
|
+
const defaultResolveDns = async (hostname) => {
|
|
273
|
+
// Via the default-import object so `vi.spyOn(dns, "lookup")` in the
|
|
274
|
+
// existing suites still intercepts it (a named import would not).
|
|
275
|
+
const { address } = await dns.lookup(hostname);
|
|
276
|
+
return address;
|
|
277
|
+
};
|
|
278
|
+
/**
|
|
279
|
+
* Validate an outbound URL. Rules, in order:
|
|
280
|
+
* 1. must parse; 2. http(s) only; 3. userinfo is stripped, never sent;
|
|
281
|
+
* 4. hostname is refused by `isPrivateHost` (localhost / *.localhost,
|
|
282
|
+
* 0/8, 10/8, 100.64/10, 127/8, 169.254/16, 172.16/12, 192.168/16,
|
|
283
|
+
* ::1, fc00::/7, fe80::/10, 2002::/16, ::ffff: mapped forms, and the
|
|
284
|
+
* decimal / hex / octal / short IPv4 notations) unless `allowPrivate`;
|
|
285
|
+
* 5. the hostname is resolved ONCE and the answer re-checked the same way
|
|
286
|
+
* unless `allowPrivate`; the answer is returned as `pinnedAddress`.
|
|
287
|
+
*/
|
|
288
|
+
export async function validateOutboundUrl(input, opts = {}) {
|
|
289
|
+
let url;
|
|
290
|
+
try {
|
|
291
|
+
url = new URL(typeof input === "string" ? input : input.toString());
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
return {
|
|
295
|
+
ok: false,
|
|
296
|
+
reason: "invalid_url",
|
|
297
|
+
detail: typeof input === "string" ? input : String(input),
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") {
|
|
301
|
+
return { ok: false, reason: "unsupported_protocol", detail: url.protocol };
|
|
302
|
+
}
|
|
303
|
+
url.username = "";
|
|
304
|
+
url.password = "";
|
|
305
|
+
const allowPrivate = opts.allowPrivate === true;
|
|
306
|
+
if (!allowPrivate && isPrivateHost(url.hostname)) {
|
|
307
|
+
return { ok: false, reason: "private_host", detail: url.hostname, url };
|
|
308
|
+
}
|
|
309
|
+
let pinnedAddress;
|
|
310
|
+
try {
|
|
311
|
+
pinnedAddress = await (opts.resolveDns ?? defaultResolveDns)(url.hostname);
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
// Unresolvable — let the transport surface the real error.
|
|
315
|
+
return { ok: true, url };
|
|
316
|
+
}
|
|
317
|
+
if (!allowPrivate && isPrivateHost(pinnedAddress)) {
|
|
318
|
+
return {
|
|
319
|
+
ok: false,
|
|
320
|
+
reason: "private_host_after_dns",
|
|
321
|
+
detail: `${url.hostname} → ${pinnedAddress}`,
|
|
322
|
+
url,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
return { ok: true, url, pinnedAddress };
|
|
326
|
+
}
|
|
327
|
+
export class OutboundHttpError extends Error {
|
|
328
|
+
code;
|
|
329
|
+
constructor(code, message) {
|
|
330
|
+
super(message);
|
|
331
|
+
this.code = code;
|
|
332
|
+
this.name = "OutboundHttpError";
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
const CREDENTIAL_HEADERS = [
|
|
336
|
+
"authorization",
|
|
337
|
+
"cookie",
|
|
338
|
+
"x-api-key",
|
|
339
|
+
"proxy-authorization",
|
|
340
|
+
];
|
|
341
|
+
function refusalMessage(v, hop) {
|
|
342
|
+
const where = hop === "redirect" ? "Redirect " : "";
|
|
343
|
+
switch (v.reason) {
|
|
344
|
+
case "invalid_url":
|
|
345
|
+
return hop === "redirect"
|
|
346
|
+
? `Invalid redirect location: "${v.detail}"`
|
|
347
|
+
: `Invalid URL: "${v.detail}"`;
|
|
348
|
+
case "unsupported_protocol":
|
|
349
|
+
return `${where}URL must use http:// or https://, got "${v.detail}"`;
|
|
350
|
+
case "private_host":
|
|
351
|
+
return `${where}target is a private/loopback address ("${v.detail}") — blocked`;
|
|
352
|
+
case "private_host_after_dns":
|
|
353
|
+
return `${where}hostname resolves to a private/loopback address (${v.detail}) — blocked`;
|
|
354
|
+
default:
|
|
355
|
+
return `${where}request refused`;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
function pin(url, address) {
|
|
359
|
+
if (address === undefined)
|
|
360
|
+
return url.toString();
|
|
361
|
+
const pinned = new URL(url.toString());
|
|
362
|
+
pinned.hostname = address.includes(":") ? `[${address}]` : address;
|
|
363
|
+
return pinned.toString();
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Fetch with the full outbound discipline. Throws `OutboundHttpError` on any
|
|
367
|
+
* refusal (initial URL or any redirect hop); transport errors propagate from
|
|
368
|
+
* `fetchImpl` untouched so callers keep their own timeout/abort messages.
|
|
369
|
+
*
|
|
370
|
+
* `init.headers` must be a plain object; keys are lowercased. `host` is set
|
|
371
|
+
* by this function AFTER caller headers so a caller cannot un-pin a hop.
|
|
372
|
+
* Every other `init` field (signal, dispatcher, …) is passed through.
|
|
373
|
+
*/
|
|
374
|
+
export async function safeFetch(input, init = {}, opts = {}) {
|
|
375
|
+
const fetchImpl = opts.fetchImpl ?? ((u, i) => globalThis.fetch(u, i));
|
|
376
|
+
const followRedirects = opts.followRedirects ?? true;
|
|
377
|
+
const maxRedirects = opts.maxRedirects ?? 10;
|
|
378
|
+
const first = await validateOutboundUrl(input, opts);
|
|
379
|
+
if (!first.ok || first.url === undefined) {
|
|
380
|
+
throw new OutboundHttpError(first.reason ?? "invalid_url", refusalMessage(first, "request"));
|
|
381
|
+
}
|
|
382
|
+
const headers = {};
|
|
383
|
+
for (const [k, v] of Object.entries(init.headers ?? {})) {
|
|
384
|
+
headers[k.toLowerCase()] = v;
|
|
385
|
+
}
|
|
386
|
+
const { method: initMethod, headers: _h, body: initBody, ...rest } = init;
|
|
387
|
+
let currentMethod = (initMethod ?? "GET").toUpperCase();
|
|
388
|
+
let currentBody = initBody;
|
|
389
|
+
let displayUrl = first.url;
|
|
390
|
+
let currentUrl = pin(first.url, first.pinnedAddress);
|
|
391
|
+
if (first.pinnedAddress !== undefined)
|
|
392
|
+
headers.host = first.url.hostname;
|
|
393
|
+
const originalOrigin = first.url.origin;
|
|
394
|
+
let redirects = 0;
|
|
395
|
+
while (true) {
|
|
396
|
+
const response = await fetchImpl(currentUrl, {
|
|
397
|
+
...rest,
|
|
398
|
+
method: currentMethod,
|
|
399
|
+
headers,
|
|
400
|
+
body: currentBody,
|
|
401
|
+
redirect: "manual",
|
|
402
|
+
});
|
|
403
|
+
const isRedirect = response.status >= 300 && response.status < 400;
|
|
404
|
+
if (!followRedirects || !isRedirect) {
|
|
405
|
+
return { response, redirects, finalUrl: displayUrl.toString() };
|
|
406
|
+
}
|
|
407
|
+
const location = response.headers.get("location");
|
|
408
|
+
if (!location) {
|
|
409
|
+
return { response, redirects, finalUrl: displayUrl.toString() };
|
|
410
|
+
}
|
|
411
|
+
if (redirects >= maxRedirects) {
|
|
412
|
+
throw new OutboundHttpError("too_many_redirects", `Too many redirects (>${maxRedirects})`);
|
|
413
|
+
}
|
|
414
|
+
// Resolve against the UN-pinned URL so a relative Location lands on the
|
|
415
|
+
// real hostname rather than the previous hop's IP.
|
|
416
|
+
let nextRaw;
|
|
417
|
+
try {
|
|
418
|
+
nextRaw = new URL(location, displayUrl);
|
|
419
|
+
}
|
|
420
|
+
catch {
|
|
421
|
+
throw new OutboundHttpError("invalid_redirect", `Invalid redirect location: "${location}"`);
|
|
422
|
+
}
|
|
423
|
+
const next = await validateOutboundUrl(nextRaw, opts);
|
|
424
|
+
if (!next.ok || next.url === undefined) {
|
|
425
|
+
throw new OutboundHttpError(next.reason ?? "invalid_redirect", refusalMessage(next, "redirect"));
|
|
426
|
+
}
|
|
427
|
+
// Host always from the real name — even when this hop's DNS failed —
|
|
428
|
+
// so the previous hop's Host never leaks onto the new request.
|
|
429
|
+
headers.host = next.url.hostname;
|
|
430
|
+
// RFC 7231 + browser/fetch semantics: 301/302 of a non-GET/HEAD and any
|
|
431
|
+
// 303 become GET without a body; 307/308 preserve both.
|
|
432
|
+
if (response.status === 303 ||
|
|
433
|
+
((response.status === 301 || response.status === 302) &&
|
|
434
|
+
currentMethod !== "GET" &&
|
|
435
|
+
currentMethod !== "HEAD")) {
|
|
436
|
+
currentMethod = "GET";
|
|
437
|
+
currentBody = undefined;
|
|
438
|
+
delete headers["content-type"];
|
|
439
|
+
delete headers["content-length"];
|
|
440
|
+
}
|
|
441
|
+
if (next.url.origin !== originalOrigin) {
|
|
442
|
+
for (const h of CREDENTIAL_HEADERS)
|
|
443
|
+
delete headers[h];
|
|
444
|
+
}
|
|
445
|
+
displayUrl = next.url;
|
|
446
|
+
currentUrl = pin(next.url, next.pinnedAddress);
|
|
447
|
+
redirects++;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
205
450
|
//# sourceMappingURL=ssrfGuard.js.map
|
package/dist/ssrfGuard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssrfGuard.js","sourceRoot":"","sources":["../src/ssrfGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,GAAG,MAAM,mBAAmB,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,SAAS,eAAe,CAAC,CAAS;IAChC,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACrF,CAAC;AAkBD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,IAAI,GACR,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAChD,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QACrC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAE7B,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEpC,4EAA4E;IAC5E,uEAAuE;IACvE,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1E,oBAAoB;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACxE,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,uBAAuB;QACnD,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;QACzD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC,CAAC,iCAAiC;QACnF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,kCAAkC;QAC3E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,2CAA2C;QACpF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,iCAAiC;QACpF,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,YAAY;IACxC,CAAC;IAED,cAAc;IACd,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,CAAC,WAAW;IAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,aAAa;IACxD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,iBAAiB;IAClF,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,+CAA+C;IAC1F,mFAAmF;IACnF,6DAA6D;IAC7D,uFAAuF;IACvF,yFAAyF;IACzF,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,IAAI,GACR,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAChD,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QACrC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC7B,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACxE,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACjD,yEAAyE;IACzE,8EAA8E;IAC9E,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,IAAI,cAAc,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB;IAEjB,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,sBAAsB;YAC9B,MAAM,EAAE,MAAM,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,MAAM,OAAO,EAAE;aAC1C,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"ssrfGuard.js","sourceRoot":"","sources":["../src/ssrfGuard.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/httpClient.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import dns from "node:dns/promises";
|
|
2
1
|
import fs from "node:fs/promises";
|
|
3
|
-
import {
|
|
2
|
+
import { OutboundHttpError, safeFetch } from "../ssrfGuard.js";
|
|
4
3
|
import { error, optionalBool, optionalInt, optionalString, requireString, resolveFilePath, successStructured, truncateOutput, } from "./utils.js";
|
|
5
4
|
const ALLOWED_METHODS = new Set([
|
|
6
5
|
"GET",
|
|
@@ -90,47 +89,11 @@ export function createSendHttpRequestTool(options) {
|
|
|
90
89
|
if (!["http:", "https:"].includes(parsedUrl.protocol)) {
|
|
91
90
|
return error(`URL must use http:// or https://, got "${parsedUrl.protocol}"`);
|
|
92
91
|
}
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
// DNS pre-resolution SSRF guard: resolve the hostname and re-check the
|
|
100
|
-
// resulting IP against the private-range blocklist. This catches hostnames
|
|
101
|
-
// like "internal.corp.example.com" that resolve to RFC-1918 addresses and
|
|
102
|
-
// would bypass the purely-lexical isPrivateHost check above.
|
|
103
|
-
//
|
|
104
|
-
// After validation, we pin the connection to the resolved IP by rewriting
|
|
105
|
-
// the request URL's hostname. This closes the TOCTOU window between
|
|
106
|
-
// dns.lookup() and the actual fetch — without pinning, an attacker can
|
|
107
|
-
// serve a public IP on the first DNS response and a private IP on the
|
|
108
|
-
// second. We preserve the original hostname in a Host header so virtual
|
|
109
|
-
// hosting and SNI still work. DNS failures fall through to fetch naturally.
|
|
110
|
-
let resolvedIp = null;
|
|
111
|
-
try {
|
|
112
|
-
const { address } = await dns.lookup(parsedUrl.hostname);
|
|
113
|
-
if (!allowPrivateHttp && isPrivateHost(address)) {
|
|
114
|
-
return error(`Hostname "${parsedUrl.hostname}" resolves to a private address (${address}) — request blocked`);
|
|
115
|
-
}
|
|
116
|
-
resolvedIp = address;
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
// DNS lookup failed — let fetch report the error with its own message
|
|
120
|
-
}
|
|
121
|
-
// Build the initial URL: if we successfully resolved an IP, use it as the
|
|
122
|
-
// hostname so Node's fetch does not re-resolve (closes the TOCTOU window).
|
|
123
|
-
// IPv6 addresses require bracket wrapping in URLs.
|
|
124
|
-
// Use parsedUrl (credentials already stripped) not the raw urlStr.
|
|
125
|
-
const cleanUrlStr = parsedUrl.toString();
|
|
126
|
-
let initialUrl = cleanUrlStr;
|
|
127
|
-
if (resolvedIp !== null) {
|
|
128
|
-
const pinnedUrl = new URL(cleanUrlStr);
|
|
129
|
-
pinnedUrl.hostname = resolvedIp.includes(":")
|
|
130
|
-
? `[${resolvedIp}]`
|
|
131
|
-
: resolvedIp;
|
|
132
|
-
initialUrl = pinnedUrl.toString();
|
|
133
|
-
}
|
|
92
|
+
// Everything else about the URL — userinfo stripping, the private-range
|
|
93
|
+
// check, DNS pre-resolution + re-check, IP pinning with the real name in
|
|
94
|
+
// the Host header, and per-hop redirect re-validation — lives in the
|
|
95
|
+
// shared `safeFetch` (src/ssrfGuard.ts), the ONE implementation also
|
|
96
|
+
// behind the recipe `http.post` tool. Do not re-inline any of it here.
|
|
134
97
|
// Validate and collect headers
|
|
135
98
|
const rawHeaders = args.headers;
|
|
136
99
|
const headers = {};
|
|
@@ -147,17 +110,11 @@ export function createSendHttpRequestTool(options) {
|
|
|
147
110
|
return error(`Header "${k}" contains invalid characters (CR, LF, or null byte)`);
|
|
148
111
|
}
|
|
149
112
|
// Normalize header key to lowercase so user-supplied "Host" and "host"
|
|
150
|
-
// are treated as the same key
|
|
113
|
+
// are treated as the same key; `safeFetch` sets `host` AFTER these so
|
|
114
|
+
// a caller-supplied Host cannot un-pin the connection.
|
|
151
115
|
headers[k.toLowerCase()] = v;
|
|
152
116
|
}
|
|
153
117
|
}
|
|
154
|
-
// Override host AFTER user headers so a caller-supplied host cannot
|
|
155
|
-
// bypass IP-pinning SSRF protection. Virtual hosting / SNI still works
|
|
156
|
-
// because we use the original hostname (before IP substitution).
|
|
157
|
-
// Written as lowercase "host" to match the normalized user headers above.
|
|
158
|
-
if (resolvedIp !== null) {
|
|
159
|
-
headers.host = parsedUrl.hostname;
|
|
160
|
-
}
|
|
161
118
|
const MAX_BODY_BYTES = 1024 * 1024; // 1 MB, matches schema docs
|
|
162
119
|
// optionalString caps by UTF-16 .length; a string of 4-byte codepoints
|
|
163
120
|
// (emoji / CJK supplementary) can be ~4× larger in UTF-8 than its char
|
|
@@ -194,120 +151,16 @@ export function createSendHttpRequestTool(options) {
|
|
|
194
151
|
: undefined;
|
|
195
152
|
const start = Date.now();
|
|
196
153
|
try {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
// derivation uses the real name rather than the resolved IP address.
|
|
208
|
-
let currentDisplayUrl = cleanUrlStr;
|
|
209
|
-
// Origin of the original request. Credential headers (Authorization,
|
|
210
|
-
// Cookie, etc.) must NOT be forwarded to a redirect destination on a
|
|
211
|
-
// different origin — any redirecting intermediary could otherwise
|
|
212
|
-
// harvest them (audit 2026-06-09 tools-http-1, mirrors browser fetch).
|
|
213
|
-
const originalOrigin = new URL(cleanUrlStr).origin;
|
|
214
|
-
let redirectCount = 0;
|
|
215
|
-
let resp;
|
|
216
|
-
// Manual redirect loop so we can cap hops and re-validate each location
|
|
217
|
-
while (true) {
|
|
218
|
-
resp = await fetch(currentUrl, {
|
|
219
|
-
method: currentMethod,
|
|
220
|
-
headers,
|
|
221
|
-
body: currentBody,
|
|
222
|
-
signal: controller.signal,
|
|
223
|
-
redirect: "manual", // always manual — we control the loop
|
|
224
|
-
});
|
|
225
|
-
const isRedirect = resp.status >= 300 && resp.status < 400;
|
|
226
|
-
if (!followRedirects || !isRedirect)
|
|
227
|
-
break;
|
|
228
|
-
const location = resp.headers.get("location");
|
|
229
|
-
if (!location)
|
|
230
|
-
break;
|
|
231
|
-
if (redirectCount >= MAX_REDIRECTS) {
|
|
232
|
-
cleanup();
|
|
233
|
-
return error(`Too many redirects (>${MAX_REDIRECTS})`);
|
|
234
|
-
}
|
|
235
|
-
// Resolve relative redirect URL against the un-pinned display URL so
|
|
236
|
-
// the hostname is the real name, not a resolved IP from a prior hop.
|
|
237
|
-
let nextDisplayUrl;
|
|
238
|
-
try {
|
|
239
|
-
nextDisplayUrl = new URL(location, currentDisplayUrl);
|
|
240
|
-
}
|
|
241
|
-
catch {
|
|
242
|
-
cleanup();
|
|
243
|
-
return error(`Invalid redirect location: "${location}"`);
|
|
244
|
-
}
|
|
245
|
-
if (!["http:", "https:"].includes(nextDisplayUrl.protocol)) {
|
|
246
|
-
cleanup();
|
|
247
|
-
return error(`Redirect to non-http(s) protocol blocked: "${nextDisplayUrl.protocol}"`);
|
|
248
|
-
}
|
|
249
|
-
if (!allowPrivateHttp && isPrivateHost(nextDisplayUrl.hostname)) {
|
|
250
|
-
cleanup();
|
|
251
|
-
return error(`Redirect to private/loopback address blocked ("${nextDisplayUrl.hostname}")`);
|
|
252
|
-
}
|
|
253
|
-
// Always set Host from the un-pinned display URL so a DNS failure
|
|
254
|
-
// doesn't leave the previous hop's Host header on the new request.
|
|
255
|
-
headers.host = nextDisplayUrl.hostname;
|
|
256
|
-
// Downgrade method/body per RFC 7231 + browser/fetch behavior:
|
|
257
|
-
// 301/302 of POST/PUT/PATCH → GET, no body (treated as 303)
|
|
258
|
-
// 303 → GET, no body (any method)
|
|
259
|
-
// 307/308 → preserve method + body
|
|
260
|
-
// This prevents resending the original request body (incl. any
|
|
261
|
-
// credentials) to a redirect target, especially cross-origin.
|
|
262
|
-
if (resp.status === 303 ||
|
|
263
|
-
((resp.status === 301 || resp.status === 302) &&
|
|
264
|
-
currentMethod !== "GET" &&
|
|
265
|
-
currentMethod !== "HEAD")) {
|
|
266
|
-
currentMethod = "GET";
|
|
267
|
-
currentBody = undefined;
|
|
268
|
-
// Body-related request headers are now meaningless — drop them so
|
|
269
|
-
// the GET hop doesn't advertise a Content-Type/Length for no body.
|
|
270
|
-
delete headers["content-type"];
|
|
271
|
-
delete headers["content-length"];
|
|
272
|
-
}
|
|
273
|
-
// Cross-origin hop → strip caller-supplied credential headers so a
|
|
274
|
-
// redirecting intermediary can't harvest them (audit tools-http-1).
|
|
275
|
-
// Header keys were lowercased when collected above.
|
|
276
|
-
if (nextDisplayUrl.origin !== originalOrigin) {
|
|
277
|
-
for (const h of [
|
|
278
|
-
"authorization",
|
|
279
|
-
"cookie",
|
|
280
|
-
"x-api-key",
|
|
281
|
-
"proxy-authorization",
|
|
282
|
-
]) {
|
|
283
|
-
delete headers[h];
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
// Strip any userinfo (user:password@) from the URL sent to fetch —
|
|
287
|
-
// credentials must not be forwarded across redirect hops to new origins.
|
|
288
|
-
nextDisplayUrl.username = "";
|
|
289
|
-
nextDisplayUrl.password = "";
|
|
290
|
-
// Pin the redirect hop to its resolved IP to close the TOCTOU window.
|
|
291
|
-
// DNS failures fall through — fetch will report the error naturally.
|
|
292
|
-
const nextUrl = new URL(nextDisplayUrl.toString());
|
|
293
|
-
try {
|
|
294
|
-
const { address: redirectIp } = await dns.lookup(nextDisplayUrl.hostname);
|
|
295
|
-
if (!allowPrivateHttp && isPrivateHost(redirectIp)) {
|
|
296
|
-
cleanup();
|
|
297
|
-
return error(`Redirect hostname "${nextDisplayUrl.hostname}" resolves to a private address (${redirectIp}) — blocked`);
|
|
298
|
-
}
|
|
299
|
-
// Mutate nextUrl in-place to pin to the resolved IP
|
|
300
|
-
nextUrl.hostname = redirectIp.includes(":")
|
|
301
|
-
? `[${redirectIp}]`
|
|
302
|
-
: redirectIp;
|
|
303
|
-
}
|
|
304
|
-
catch {
|
|
305
|
-
// DNS failed — use un-pinned URL; fetch will fail naturally
|
|
306
|
-
}
|
|
307
|
-
currentDisplayUrl = nextDisplayUrl.toString();
|
|
308
|
-
currentUrl = nextUrl.toString();
|
|
309
|
-
redirectCount++;
|
|
310
|
-
}
|
|
154
|
+
const { response: resp, redirects: redirectCount } = await safeFetch(parsedUrl, {
|
|
155
|
+
method,
|
|
156
|
+
headers,
|
|
157
|
+
body: requestBody,
|
|
158
|
+
signal: controller.signal,
|
|
159
|
+
}, {
|
|
160
|
+
allowPrivate: allowPrivateHttp,
|
|
161
|
+
followRedirects,
|
|
162
|
+
maxRedirects: MAX_REDIRECTS,
|
|
163
|
+
});
|
|
311
164
|
cleanup();
|
|
312
165
|
// Collect response headers
|
|
313
166
|
const respHeaders = {};
|
|
@@ -373,6 +226,11 @@ export function createSendHttpRequestTool(options) {
|
|
|
373
226
|
}
|
|
374
227
|
catch (err) {
|
|
375
228
|
cleanup();
|
|
229
|
+
// A refusal by the outbound guard (private target, private after
|
|
230
|
+
// DNS, bad redirect, too many hops) is a tool error, not a transport
|
|
231
|
+
// failure — surface its message verbatim.
|
|
232
|
+
if (err instanceof OutboundHttpError)
|
|
233
|
+
return error(err.message);
|
|
376
234
|
if (err instanceof Error &&
|
|
377
235
|
(err.name === "AbortError" || err.name === "TimeoutError")) {
|
|
378
236
|
return error(`Request timed out after ${timeoutMs}ms`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../src/tools/httpClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../src/tools/httpClient.ts"],"names":[],"mappings":"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"}
|