@polpo-ai/tools 0.18.18 → 0.18.20
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/__tests__/http-hardening.test.d.ts +2 -0
- package/dist/__tests__/http-hardening.test.d.ts.map +1 -0
- package/dist/__tests__/http-hardening.test.js +188 -0
- package/dist/__tests__/http-hardening.test.js.map +1 -0
- package/dist/__tests__/image-tools.test.d.ts +2 -0
- package/dist/__tests__/image-tools.test.d.ts.map +1 -0
- package/dist/__tests__/image-tools.test.js +72 -0
- package/dist/__tests__/image-tools.test.js.map +1 -0
- package/dist/__tests__/path-sandbox.test.d.ts +2 -0
- package/dist/__tests__/path-sandbox.test.d.ts.map +1 -0
- package/dist/__tests__/path-sandbox.test.js +58 -0
- package/dist/__tests__/path-sandbox.test.js.map +1 -0
- package/dist/__tests__/system-tools.test.js +145 -1
- package/dist/__tests__/system-tools.test.js.map +1 -1
- package/dist/adapters/node-shell.d.ts +8 -2
- package/dist/adapters/node-shell.d.ts.map +1 -1
- package/dist/adapters/node-shell.js +46 -21
- package/dist/adapters/node-shell.js.map +1 -1
- package/dist/http-tools.d.ts.map +1 -1
- package/dist/http-tools.js +82 -29
- package/dist/http-tools.js.map +1 -1
- package/dist/image-tools.d.ts.map +1 -1
- package/dist/image-tools.js +12 -5
- package/dist/image-tools.js.map +1 -1
- package/dist/lib/provider-resolver.d.ts +3 -0
- package/dist/lib/provider-resolver.d.ts.map +1 -1
- package/dist/lib/provider-resolver.js +8 -0
- package/dist/lib/provider-resolver.js.map +1 -1
- package/dist/path-sandbox.d.ts.map +1 -1
- package/dist/path-sandbox.js +57 -9
- package/dist/path-sandbox.js.map +1 -1
- package/dist/safe-fetch.d.ts +52 -0
- package/dist/safe-fetch.d.ts.map +1 -0
- package/dist/safe-fetch.js +202 -0
- package/dist/safe-fetch.js.map +1 -0
- package/dist/shell-quote.d.ts +10 -0
- package/dist/shell-quote.d.ts.map +1 -0
- package/dist/shell-quote.js +12 -0
- package/dist/shell-quote.js.map +1 -0
- package/dist/ssrf-guard.d.ts +14 -0
- package/dist/ssrf-guard.d.ts.map +1 -1
- package/dist/ssrf-guard.js +80 -3
- package/dist/ssrf-guard.js.map +1 -1
- package/dist/system-tools.d.ts.map +1 -1
- package/dist/system-tools.js +166 -28
- package/dist/system-tools.js.map +1 -1
- package/package.json +3 -3
package/dist/image-tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-tools.js","sourceRoot":"","sources":["../src/image-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"image-tools.js","sourceRoot":"","sources":["../src/image-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,9 @@ export declare function resolveManagedImageProvider(): Promise<ImageProvider>;
|
|
|
46
46
|
/** Build a managed video provider routed through the Vercel AI Gateway,
|
|
47
47
|
* with an extended-timeout fetch so long renders aren't cut off. */
|
|
48
48
|
export declare function resolveManagedVideoProvider(timeoutMs?: number): Promise<VideoProvider>;
|
|
49
|
+
/** Build a managed vision provider routed through the Vercel AI Gateway, so
|
|
50
|
+
* image_analyze follows the same managed credential path as agent turns. */
|
|
51
|
+
export declare function resolveManagedVisionProvider(): Promise<VisionProvider>;
|
|
49
52
|
/** Build a speech-to-text (transcription) provider. */
|
|
50
53
|
export declare function resolveTranscribeProvider(name: TranscribeProviderName, apiKey: string): Promise<TranscribeProvider>;
|
|
51
54
|
/** Build a text-to-speech provider. The local `edge` provider needs a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/provider-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACtC,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,WAAW,CAAC;AACxD,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACtC,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CAClC;AAED,8IAA8I;AAC9I,MAAM,WAAW,cAAc;IAC7B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAID,qHAAqH;AACrH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAQxB;AAED,sDAAsD;AACtD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAWxB;AA8BD;6EAC6E;AAC7E,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,aAAa,CAAC,CAK1E;AAED;qEACqE;AACrE,wBAAsB,2BAA2B,CAC/C,SAAS,SAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED,uDAAuD;AACvD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CAc7B;AAED;wEACwE;AACxE,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,EAAE,CAAC,EAAE,UAAU,CAAA;CAAE,GAC1D,OAAO,CAAC,aAAa,CAAC,CA8BxB;AAED,0DAA0D;AAC1D,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAczB"}
|
|
1
|
+
{"version":3,"file":"provider-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/provider-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACtC,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,WAAW,CAAC;AACxD,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACtC,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CAClC;AAED,8IAA8I;AAC9I,MAAM,WAAW,cAAc;IAC7B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAID,qHAAqH;AACrH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAQxB;AAED,sDAAsD;AACtD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAWxB;AA8BD;6EAC6E;AAC7E,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,aAAa,CAAC,CAK1E;AAED;qEACqE;AACrE,wBAAsB,2BAA2B,CAC/C,SAAS,SAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED;6EAC6E;AAC7E,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,cAAc,CAAC,CAK5E;AAED,uDAAuD;AACvD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CAc7B;AAED;wEACwE;AACxE,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,EAAE,CAAC,EAAE,UAAU,CAAA;CAAE,GAC1D,OAAO,CAAC,aAAa,CAAC,CA8BxB;AAED,0DAA0D;AAC1D,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAczB"}
|
|
@@ -78,6 +78,14 @@ export async function resolveManagedVideoProvider(timeoutMs = 20 * 60 * 1000) {
|
|
|
78
78
|
const gw = mod.createGatewayProvider(fetchImpl ? { fetch: fetchImpl } : undefined);
|
|
79
79
|
return { video: (modelId) => gw.video(modelId) };
|
|
80
80
|
}
|
|
81
|
+
/** Build a managed vision provider routed through the Vercel AI Gateway, so
|
|
82
|
+
* image_analyze follows the same managed credential path as agent turns. */
|
|
83
|
+
export async function resolveManagedVisionProvider() {
|
|
84
|
+
const mod = await loadOptional("@ai-sdk/gateway", "managed image_analyze");
|
|
85
|
+
// @ts-ignore — mod typed as `any` from the dynamic import helper
|
|
86
|
+
const gw = mod.createGatewayProvider();
|
|
87
|
+
return (modelId) => gw.languageModel(modelId);
|
|
88
|
+
}
|
|
81
89
|
/** Build a speech-to-text (transcription) provider. */
|
|
82
90
|
export async function resolveTranscribeProvider(name, apiKey) {
|
|
83
91
|
if (name === "openai") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../src/lib/provider-resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../src/lib/provider-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-sandbox.d.ts","sourceRoot":"","sources":["../src/path-sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"path-sandbox.d.ts","sourceRoot":"","sources":["../src/path-sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA0CH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAKlF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAiB/E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOlG"}
|
package/dist/path-sandbox.js
CHANGED
|
@@ -9,8 +9,53 @@
|
|
|
9
9
|
* The bash tool cannot be fully sandboxed at this level (arbitrary shell commands),
|
|
10
10
|
* but its cwd is set to the agent's primary allowed path.
|
|
11
11
|
*/
|
|
12
|
-
import { resolve, sep } from "node:path";
|
|
13
|
-
import { realpathSync } from "node:fs";
|
|
12
|
+
import { basename, dirname, join, resolve, sep } from "node:path";
|
|
13
|
+
import { lstatSync, readlinkSync, realpathSync } from "node:fs";
|
|
14
|
+
/** Upper bound on symlink hops while canonicalizing a not-yet-existing path. */
|
|
15
|
+
const MAX_SYMLINK_HOPS = 40;
|
|
16
|
+
/**
|
|
17
|
+
* Canonicalize a path that may not exist yet.
|
|
18
|
+
*
|
|
19
|
+
* `realpathSync` only works for existing paths, so a new file under a
|
|
20
|
+
* symlinked directory (`sandbox/link -> /etc`, writing `sandbox/link/x`) used
|
|
21
|
+
* to fall back to the logical path and pass the prefix check. Instead, resolve
|
|
22
|
+
* the deepest existing ancestor, then re-append the missing segments. Dangling
|
|
23
|
+
* symlinks are followed to their target so a write cannot create a file
|
|
24
|
+
* outside the sandbox through them. Returns undefined when the path cannot be
|
|
25
|
+
* canonicalized safely (symlink loops / too many hops) — callers must deny.
|
|
26
|
+
*/
|
|
27
|
+
function canonicalizePath(filePath, hops = { count: 0 }) {
|
|
28
|
+
const absolute = resolve(filePath);
|
|
29
|
+
try {
|
|
30
|
+
return realpathSync(absolute);
|
|
31
|
+
}
|
|
32
|
+
catch { /* missing path, dangling symlink, or loop — walk up */ }
|
|
33
|
+
const parent = dirname(absolute);
|
|
34
|
+
if (parent === absolute)
|
|
35
|
+
return absolute;
|
|
36
|
+
const canonicalParent = canonicalizePath(parent, hops);
|
|
37
|
+
if (canonicalParent === undefined)
|
|
38
|
+
return undefined;
|
|
39
|
+
const candidate = join(canonicalParent, basename(absolute));
|
|
40
|
+
let isSymlink = false;
|
|
41
|
+
try {
|
|
42
|
+
isSymlink = lstatSync(candidate).isSymbolicLink();
|
|
43
|
+
}
|
|
44
|
+
catch { /* does not exist */ }
|
|
45
|
+
if (!isSymlink)
|
|
46
|
+
return candidate;
|
|
47
|
+
hops.count += 1;
|
|
48
|
+
if (hops.count > MAX_SYMLINK_HOPS)
|
|
49
|
+
return undefined;
|
|
50
|
+
let target;
|
|
51
|
+
try {
|
|
52
|
+
target = readlinkSync(candidate);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
return canonicalizePath(resolve(canonicalParent, target), hops);
|
|
58
|
+
}
|
|
14
59
|
/**
|
|
15
60
|
* Resolve allowedPaths to absolute paths, normalizing relative paths against cwd.
|
|
16
61
|
* If no allowedPaths are configured, defaults to [cwd] (the project workDir).
|
|
@@ -27,14 +72,17 @@ export function resolveAllowedPaths(cwd, allowedPaths) {
|
|
|
27
72
|
* (e.g. `/home/user/project-evil` should NOT match `/home/user/project`).
|
|
28
73
|
*/
|
|
29
74
|
export function isPathAllowed(filePath, allowedPaths) {
|
|
30
|
-
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
catch { /* file may not exist yet — use logical path */ }
|
|
75
|
+
// Resolve symlinks (including those on the ancestors of paths that do not
|
|
76
|
+
// exist yet) to prevent symlink-based sandbox escape.
|
|
77
|
+
const resolved = canonicalizePath(filePath);
|
|
78
|
+
if (resolved === undefined)
|
|
79
|
+
return false;
|
|
36
80
|
for (const allowed of allowedPaths) {
|
|
37
|
-
|
|
81
|
+
// Compare canonical with canonical: an allowed root reached through a
|
|
82
|
+
// symlink (e.g. macOS /tmp -> /private/tmp) must still match.
|
|
83
|
+
const normalizedAllowed = canonicalizePath(allowed);
|
|
84
|
+
if (normalizedAllowed === undefined)
|
|
85
|
+
continue;
|
|
38
86
|
// Exact match
|
|
39
87
|
if (resolved === normalizedAllowed)
|
|
40
88
|
return true;
|
package/dist/path-sandbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-sandbox.js","sourceRoot":"","sources":["../src/path-sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"path-sandbox.js","sourceRoot":"","sources":["../src/path-sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSRF-hardened fetch for agent HTTP tools.
|
|
3
|
+
*
|
|
4
|
+
* - Redirects are followed manually so the SSRF guard runs on every hop
|
|
5
|
+
* (`redirect: "follow"` let a public URL bounce to 169.254.169.254).
|
|
6
|
+
* - Hostnames are checked against the addresses DNS actually returns, inside
|
|
7
|
+
* the socket `lookup` of the dispatcher, so the address that is validated is
|
|
8
|
+
* the address that is connected to (no DNS-rebinding window). Same approach
|
|
9
|
+
* as the Connect public-network transport, but allowing http:// as well.
|
|
10
|
+
* - Response bodies are read through a byte cap, under the caller's signal.
|
|
11
|
+
*/
|
|
12
|
+
import { type LookupFunction } from "node:net";
|
|
13
|
+
export type ResolveHostname = (hostname: string) => Promise<readonly string[]>;
|
|
14
|
+
export declare const DEFAULT_MAX_REDIRECTS = 5;
|
|
15
|
+
export declare class SsrfBlockedError extends Error {
|
|
16
|
+
constructor(message: string);
|
|
17
|
+
}
|
|
18
|
+
/** Socket lookup that only hands public addresses to net/tls.connect. */
|
|
19
|
+
export declare function publicAddressLookup(resolveHostname: ResolveHostname): LookupFunction;
|
|
20
|
+
export interface SafeFetchOptions {
|
|
21
|
+
method?: string;
|
|
22
|
+
headers?: Record<string, string>;
|
|
23
|
+
body?: string;
|
|
24
|
+
signal: AbortSignal;
|
|
25
|
+
maxRedirects?: number;
|
|
26
|
+
/** Test hook — defaults to the system resolver. */
|
|
27
|
+
resolveHostname?: ResolveHostname;
|
|
28
|
+
}
|
|
29
|
+
export interface SafeFetchResult {
|
|
30
|
+
response: Response;
|
|
31
|
+
/** URL of the final (non-redirect) response. */
|
|
32
|
+
url: string;
|
|
33
|
+
redirects: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* fetch() with the SSRF guard applied to the initial URL and every redirect
|
|
37
|
+
* hop, and DNS answers validated at connect time. Throws SsrfBlockedError when
|
|
38
|
+
* a hop is not allowed and Error when the redirect limit is exceeded.
|
|
39
|
+
*/
|
|
40
|
+
export declare function safeFetch(rawUrl: string, options: SafeFetchOptions): Promise<SafeFetchResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Read at most `maxBytes` of a response body. Stops reading (and cancels the
|
|
43
|
+
* stream) as soon as the cap is exceeded instead of buffering the whole body.
|
|
44
|
+
*/
|
|
45
|
+
export declare function readBodyCapped(response: Response, maxBytes: number): Promise<{
|
|
46
|
+
bytes: Uint8Array;
|
|
47
|
+
truncated: boolean;
|
|
48
|
+
}>;
|
|
49
|
+
/** Unwrap undici's `TypeError: fetch failed` to the underlying cause. */
|
|
50
|
+
export declare function fetchErrorMessage(err: unknown): string;
|
|
51
|
+
export declare function isSsrfBlocked(err: unknown): boolean;
|
|
52
|
+
//# sourceMappingURL=safe-fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-fetch.d.ts","sourceRoot":"","sources":["../src/safe-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAGrD,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;AAK/E,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAKvC,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,eAAe,GAAG,cAAc,CAkBpF;AA4CD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAmDnG;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CA8BpD;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAOtD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAOnD"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSRF-hardened fetch for agent HTTP tools.
|
|
3
|
+
*
|
|
4
|
+
* - Redirects are followed manually so the SSRF guard runs on every hop
|
|
5
|
+
* (`redirect: "follow"` let a public URL bounce to 169.254.169.254).
|
|
6
|
+
* - Hostnames are checked against the addresses DNS actually returns, inside
|
|
7
|
+
* the socket `lookup` of the dispatcher, so the address that is validated is
|
|
8
|
+
* the address that is connected to (no DNS-rebinding window). Same approach
|
|
9
|
+
* as the Connect public-network transport, but allowing http:// as well.
|
|
10
|
+
* - Response bodies are read through a byte cap, under the caller's signal.
|
|
11
|
+
*/
|
|
12
|
+
import { lookup as dnsLookup } from "node:dns/promises";
|
|
13
|
+
import { isIP } from "node:net";
|
|
14
|
+
import { assertUrlAllowed, blockedAddressReason } from "./ssrf-guard.js";
|
|
15
|
+
const defaultResolveHostname = async (hostname) => (await dnsLookup(hostname, { all: true, verbatim: true })).map((answer) => answer.address);
|
|
16
|
+
export const DEFAULT_MAX_REDIRECTS = 5;
|
|
17
|
+
const REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308]);
|
|
18
|
+
const CREDENTIAL_HEADERS = new Set(["authorization", "cookie", "proxy-authorization"]);
|
|
19
|
+
const BODY_HEADERS = new Set(["content-type", "content-length", "content-encoding", "content-language", "content-location"]);
|
|
20
|
+
export class SsrfBlockedError extends Error {
|
|
21
|
+
constructor(message) {
|
|
22
|
+
super(message);
|
|
23
|
+
this.name = "SsrfBlockedError";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** Socket lookup that only hands public addresses to net/tls.connect. */
|
|
27
|
+
export function publicAddressLookup(resolveHostname) {
|
|
28
|
+
return (hostname, options, callback) => {
|
|
29
|
+
const deny = (reason) => callback(new SsrfBlockedError(`SSRF blocked: ${hostname} ${reason}`), "");
|
|
30
|
+
resolveHostname(hostname).then((addresses) => {
|
|
31
|
+
if (addresses.length === 0)
|
|
32
|
+
return deny("did not resolve to any address");
|
|
33
|
+
for (const address of addresses) {
|
|
34
|
+
if (!isIP(address))
|
|
35
|
+
return deny(`resolved to an invalid address (${address})`);
|
|
36
|
+
const reason = blockedAddressReason(address);
|
|
37
|
+
if (reason)
|
|
38
|
+
return deny(`resolves to ${address} (${reason}), which is not allowed`);
|
|
39
|
+
}
|
|
40
|
+
const answers = addresses.map((address) => ({ address, family: isIP(address) }));
|
|
41
|
+
if (options.all)
|
|
42
|
+
return callback(null, answers);
|
|
43
|
+
const selected = answers.find((answer) => !options.family || answer.family === options.family);
|
|
44
|
+
if (!selected)
|
|
45
|
+
return deny("has no address of the requested family");
|
|
46
|
+
callback(null, selected.address, selected.family);
|
|
47
|
+
}, (err) => callback(err instanceof Error ? err : new Error(String(err)), ""));
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const dispatchers = new Map();
|
|
51
|
+
/**
|
|
52
|
+
* One pinned undici Agent per resolver (process-wide for the default one).
|
|
53
|
+
* Returns undefined where undici is unavailable (non-Node runtimes); callers
|
|
54
|
+
* then fall back to a resolve-then-connect check.
|
|
55
|
+
*/
|
|
56
|
+
function pinnedDispatcher(resolveHostname) {
|
|
57
|
+
let pending = dispatchers.get(resolveHostname);
|
|
58
|
+
if (!pending) {
|
|
59
|
+
pending = import("undici").then(({ Agent }) => new Agent({ connect: { lookup: publicAddressLookup(resolveHostname) } }), () => undefined);
|
|
60
|
+
dispatchers.set(resolveHostname, pending);
|
|
61
|
+
}
|
|
62
|
+
return pending;
|
|
63
|
+
}
|
|
64
|
+
async function assertHostResolvesPublic(url, resolveHostname) {
|
|
65
|
+
const host = url.hostname.replace(/^\[|\]$/g, "");
|
|
66
|
+
if (isIP(host))
|
|
67
|
+
return; // literals were already checked by assertUrlAllowed
|
|
68
|
+
const addresses = await resolveHostname(host);
|
|
69
|
+
if (addresses.length === 0)
|
|
70
|
+
throw new SsrfBlockedError(`SSRF blocked: ${host} did not resolve to any address`);
|
|
71
|
+
for (const address of addresses) {
|
|
72
|
+
const reason = blockedAddressReason(address);
|
|
73
|
+
if (reason)
|
|
74
|
+
throw new SsrfBlockedError(`SSRF blocked: ${host} resolves to ${address} (${reason}), which is not allowed`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function assertHttpUrl(url) {
|
|
78
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") {
|
|
79
|
+
throw new SsrfBlockedError(`SSRF blocked: unsupported URL scheme ${url.protocol}`);
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
assertUrlAllowed(url.href);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
throw new SsrfBlockedError(err instanceof Error ? err.message : String(err));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* fetch() with the SSRF guard applied to the initial URL and every redirect
|
|
90
|
+
* hop, and DNS answers validated at connect time. Throws SsrfBlockedError when
|
|
91
|
+
* a hop is not allowed and Error when the redirect limit is exceeded.
|
|
92
|
+
*/
|
|
93
|
+
export async function safeFetch(rawUrl, options) {
|
|
94
|
+
const resolveHostname = options.resolveHostname ?? defaultResolveHostname;
|
|
95
|
+
const maxRedirects = options.maxRedirects ?? DEFAULT_MAX_REDIRECTS;
|
|
96
|
+
const dispatcher = await pinnedDispatcher(resolveHostname);
|
|
97
|
+
let url = new URL(rawUrl);
|
|
98
|
+
let method = (options.method ?? "GET").toUpperCase();
|
|
99
|
+
let body = options.body;
|
|
100
|
+
let headers = { ...(options.headers ?? {}) };
|
|
101
|
+
for (let redirects = 0;; redirects++) {
|
|
102
|
+
assertHttpUrl(url);
|
|
103
|
+
if (!dispatcher)
|
|
104
|
+
await assertHostResolvesPublic(url, resolveHostname);
|
|
105
|
+
const init = {
|
|
106
|
+
method,
|
|
107
|
+
headers,
|
|
108
|
+
body,
|
|
109
|
+
signal: options.signal,
|
|
110
|
+
redirect: "manual",
|
|
111
|
+
};
|
|
112
|
+
if (dispatcher)
|
|
113
|
+
init.dispatcher = dispatcher;
|
|
114
|
+
const response = await fetch(url.href, init);
|
|
115
|
+
const location = response.headers.get("location");
|
|
116
|
+
if (!REDIRECT_STATUSES.has(response.status) || !location) {
|
|
117
|
+
return { response, url: url.href, redirects };
|
|
118
|
+
}
|
|
119
|
+
await response.body?.cancel().catch(() => undefined);
|
|
120
|
+
if (redirects >= maxRedirects) {
|
|
121
|
+
throw new Error(`Too many redirects (limit ${maxRedirects})`);
|
|
122
|
+
}
|
|
123
|
+
let next;
|
|
124
|
+
try {
|
|
125
|
+
next = new URL(location, url);
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
throw new Error(`Invalid redirect location: ${location}`);
|
|
129
|
+
}
|
|
130
|
+
// Fetch-spec method rewriting: 303 → GET; 301/302 turn POST into GET.
|
|
131
|
+
if ((response.status === 303 && method !== "HEAD") || ((response.status === 301 || response.status === 302) && method === "POST")) {
|
|
132
|
+
method = "GET";
|
|
133
|
+
body = undefined;
|
|
134
|
+
headers = Object.fromEntries(Object.entries(headers).filter(([name]) => !BODY_HEADERS.has(name.toLowerCase())));
|
|
135
|
+
}
|
|
136
|
+
// Never forward credentials to a different origin.
|
|
137
|
+
if (next.origin !== url.origin) {
|
|
138
|
+
headers = Object.fromEntries(Object.entries(headers).filter(([name]) => !CREDENTIAL_HEADERS.has(name.toLowerCase())));
|
|
139
|
+
}
|
|
140
|
+
url = next;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Read at most `maxBytes` of a response body. Stops reading (and cancels the
|
|
145
|
+
* stream) as soon as the cap is exceeded instead of buffering the whole body.
|
|
146
|
+
*/
|
|
147
|
+
export async function readBodyCapped(response, maxBytes) {
|
|
148
|
+
if (!response.body)
|
|
149
|
+
return { bytes: new Uint8Array(0), truncated: false };
|
|
150
|
+
const reader = response.body.getReader();
|
|
151
|
+
const chunks = [];
|
|
152
|
+
let size = 0;
|
|
153
|
+
let truncated = false;
|
|
154
|
+
try {
|
|
155
|
+
for (;;) {
|
|
156
|
+
const { done, value } = await reader.read();
|
|
157
|
+
if (done)
|
|
158
|
+
break;
|
|
159
|
+
if (size + value.byteLength > maxBytes) {
|
|
160
|
+
chunks.push(value.subarray(0, maxBytes - size));
|
|
161
|
+
size = maxBytes;
|
|
162
|
+
truncated = true;
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
chunks.push(value);
|
|
166
|
+
size += value.byteLength;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
finally {
|
|
170
|
+
if (truncated)
|
|
171
|
+
await reader.cancel().catch(() => undefined);
|
|
172
|
+
else
|
|
173
|
+
reader.releaseLock();
|
|
174
|
+
}
|
|
175
|
+
const bytes = new Uint8Array(size);
|
|
176
|
+
let offset = 0;
|
|
177
|
+
for (const chunk of chunks) {
|
|
178
|
+
bytes.set(chunk, offset);
|
|
179
|
+
offset += chunk.byteLength;
|
|
180
|
+
}
|
|
181
|
+
return { bytes, truncated };
|
|
182
|
+
}
|
|
183
|
+
/** Unwrap undici's `TypeError: fetch failed` to the underlying cause. */
|
|
184
|
+
export function fetchErrorMessage(err) {
|
|
185
|
+
let current = err;
|
|
186
|
+
for (let depth = 0; depth < 4 && current instanceof Error; depth++) {
|
|
187
|
+
if (current instanceof SsrfBlockedError || !current.cause)
|
|
188
|
+
return current.message;
|
|
189
|
+
current = current.cause;
|
|
190
|
+
}
|
|
191
|
+
return current instanceof Error ? current.message : String(current);
|
|
192
|
+
}
|
|
193
|
+
export function isSsrfBlocked(err) {
|
|
194
|
+
let current = err;
|
|
195
|
+
for (let depth = 0; depth < 4 && current; depth++) {
|
|
196
|
+
if (current instanceof SsrfBlockedError)
|
|
197
|
+
return true;
|
|
198
|
+
current = current.cause;
|
|
199
|
+
}
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=safe-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-fetch.js","sourceRoot":"","sources":["../src/safe-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quote a single argument for a POSIX shell command line.
|
|
3
|
+
*
|
|
4
|
+
* `Shell.execute` takes a full command line (not an argv), so every
|
|
5
|
+
* model-controlled value interpolated into it must be single-quoted.
|
|
6
|
+
* `JSON.stringify` is NOT a shell quote: double quotes still expand
|
|
7
|
+
* `$(...)`, backticks and `$VAR`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function shellQuote(arg: string): string;
|
|
10
|
+
//# sourceMappingURL=shell-quote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-quote.d.ts","sourceRoot":"","sources":["../src/shell-quote.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quote a single argument for a POSIX shell command line.
|
|
3
|
+
*
|
|
4
|
+
* `Shell.execute` takes a full command line (not an argv), so every
|
|
5
|
+
* model-controlled value interpolated into it must be single-quoted.
|
|
6
|
+
* `JSON.stringify` is NOT a shell quote: double quotes still expand
|
|
7
|
+
* `$(...)`, backticks and `$VAR`.
|
|
8
|
+
*/
|
|
9
|
+
export function shellQuote(arg) {
|
|
10
|
+
return `'${arg.replace(/'/g, `'\\''`)}'`;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=shell-quote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-quote.js","sourceRoot":"","sources":["../src/shell-quote.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC3C,CAAC"}
|
package/dist/ssrf-guard.d.ts
CHANGED
|
@@ -5,7 +5,21 @@
|
|
|
5
5
|
* - localhost (127.0.0.0/8, ::1, 0.0.0.0, localhost)
|
|
6
6
|
* - RFC1918 private ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
|
|
7
7
|
* - Link-local / cloud metadata (169.254.0.0/16, metadata.google.internal)
|
|
8
|
+
* - Other non-public ranges (CGNAT, multicast, IPv6 ULA/link-local, IPv4-mapped IPv6)
|
|
9
|
+
*
|
|
10
|
+
* This only inspects the URL. Hostnames are additionally checked against the
|
|
11
|
+
* addresses they resolve to at connect time (safe-fetch.ts).
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Classify an IP address literal (IPv4 or IPv6, no brackets).
|
|
15
|
+
* Returns a human-readable reason when the address is not a public unicast
|
|
16
|
+
* destination, or undefined when it is allowed.
|
|
17
|
+
*
|
|
18
|
+
* Used both for URL host literals and for every address DNS returns before a
|
|
19
|
+
* socket is opened (see safe-fetch.ts), so hostnames that resolve to internal
|
|
20
|
+
* addresses are rejected too.
|
|
8
21
|
*/
|
|
22
|
+
export declare function blockedAddressReason(address: string): string | undefined;
|
|
9
23
|
/**
|
|
10
24
|
* Assert that a URL does not point to a private/internal network address.
|
|
11
25
|
* Throws an Error if the URL is blocked.
|
package/dist/ssrf-guard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssrf-guard.d.ts","sourceRoot":"","sources":["../src/ssrf-guard.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ssrf-guard.d.ts","sourceRoot":"","sources":["../src/ssrf-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiCH;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA2BxE;AAgBD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CA6DxD"}
|