@ic402/mcp 2.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +326 -0
- package/dist/guards.d.ts +79 -0
- package/dist/guards.js +233 -0
- package/dist/guards.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1216 -0
- package/dist/index.js.map +1 -0
- package/dist/security.d.ts +71 -0
- package/dist/security.js +190 -0
- package/dist/security.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSRF guard + redirect-safe outbound fetch for the ic402 MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from index.ts so the (pure) URL/IP validation and the redirect-safe
|
|
5
|
+
* fetch wrapper can be unit-tested without standing up the MCP server. The server
|
|
6
|
+
* is driven by an LLM whose inputs may include untrusted web content while it
|
|
7
|
+
* holds a controller identity, so every outbound fetch must refuse internal
|
|
8
|
+
* targets AND re-validate each redirect hop — a validated origin that responds
|
|
9
|
+
* 30x to http://169.254.169.254/ would otherwise reach cloud metadata (the SSRF
|
|
10
|
+
* redirect-bypass, audit finding S2 / prior C2-H11).
|
|
11
|
+
*/
|
|
12
|
+
export interface SsrfOptions {
|
|
13
|
+
/** Allow http://localhost / 127.0.0.1 targets (local development only). */
|
|
14
|
+
localDev: boolean;
|
|
15
|
+
}
|
|
16
|
+
export type FetchLike = (url: string, init?: RequestInit) => Promise<Response>;
|
|
17
|
+
/** Resolve a hostname to its IP addresses. Injectable for tests; defaults to node:dns. */
|
|
18
|
+
export type LookupLike = (hostname: string) => Promise<Array<{
|
|
19
|
+
address: string;
|
|
20
|
+
family: number;
|
|
21
|
+
}>>;
|
|
22
|
+
export interface SafeFetchOptions extends SsrfOptions {
|
|
23
|
+
/** Max redirect hops to follow, each re-validated. Default 5. */
|
|
24
|
+
maxRedirects?: number;
|
|
25
|
+
/** Injectable fetch (defaults to globalThis.fetch); used for testing. */
|
|
26
|
+
fetchImpl?: FetchLike;
|
|
27
|
+
/** Injectable DNS lookup (defaults to node:dns); used for testing. SEC-0 rebinding guard. */
|
|
28
|
+
lookupImpl?: LookupLike;
|
|
29
|
+
}
|
|
30
|
+
/** Parse a dotted-quad IPv4 string to a 32-bit unsigned int, or null. */
|
|
31
|
+
export declare function ipv4ToInt(host: string): number | null;
|
|
32
|
+
/** True if a literal IPv4 falls in a private/loopback/link-local/metadata range. */
|
|
33
|
+
export declare function isPrivateIpv4(host: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Extract the embedded IPv4 from an IPv4-mapped IPv6 address (::ffff:…), in BOTH
|
|
36
|
+
* the dotted form (::ffff:169.254.169.254) and the hex-compressed form
|
|
37
|
+
* (::ffff:a9fe:a9fe) that `new URL()` normalizes it to. Without the hex case an
|
|
38
|
+
* attacker reaches e.g. the cloud-metadata endpoint via http://[::ffff:169.254.169.254]/.
|
|
39
|
+
*/
|
|
40
|
+
export declare function extractMappedIpv4(h: string): string | null;
|
|
41
|
+
/** True if a host string is a loopback/link-local/ULA/metadata IPv6 literal. */
|
|
42
|
+
export declare function isPrivateIpv6(host: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Validate an outbound fetch URL against SSRF. Requires https: (or
|
|
45
|
+
* http://localhost|127.0.0.1 when opts.localDev is set) and rejects hosts that
|
|
46
|
+
* are literal/internal private, loopback, link-local, or metadata addresses,
|
|
47
|
+
* plus obvious internal TLDs. Returns the parsed URL or throws.
|
|
48
|
+
*
|
|
49
|
+
* NOTE: this validates the LITERAL host only. DNS-rebinding (a public name that
|
|
50
|
+
* resolves to a private IP) is handled by assertResolvedHostIsPublic(), which
|
|
51
|
+
* safeFetch() calls for every hop before connecting.
|
|
52
|
+
*/
|
|
53
|
+
export declare function validateFetchUrl(raw: string, opts: SsrfOptions): URL;
|
|
54
|
+
/**
|
|
55
|
+
* SEC-0: resolve a hostname and reject if ANY resolved address is private/loopback/link-local/
|
|
56
|
+
* metadata — closes DNS-rebinding (a public name that resolves to an internal IP), which the
|
|
57
|
+
* literal-host check in validateFetchUrl cannot catch. Literal IPs are already covered by
|
|
58
|
+
* validateFetchUrl, so they short-circuit here. A narrow check-vs-connect rebind window remains
|
|
59
|
+
* (the OS re-resolves at fetch time); fully closing it requires pinning the validated IP at the
|
|
60
|
+
* connection layer (a custom undici dispatcher).
|
|
61
|
+
*/
|
|
62
|
+
export declare function assertResolvedHostIsPublic(hostname: string, opts: SafeFetchOptions): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* SSRF-safe fetch: validate the initial URL, then follow redirects MANUALLY,
|
|
65
|
+
* re-validating every hop's Location before fetching it. This closes the
|
|
66
|
+
* redirect-bypass where an allowlisted origin 30x's to an internal target.
|
|
67
|
+
* SEC-0: each hop's host is also DNS-resolved and the resolved IPs re-checked
|
|
68
|
+
* (assertResolvedHostIsPublic) so a public name can't rebind to an internal IP.
|
|
69
|
+
* `fetchImpl` / `lookupImpl` are injectable for testing.
|
|
70
|
+
*/
|
|
71
|
+
export declare function safeFetch(raw: string, init: RequestInit | undefined, opts: SafeFetchOptions): Promise<Response>;
|
package/dist/security.js
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSRF guard + redirect-safe outbound fetch for the ic402 MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from index.ts so the (pure) URL/IP validation and the redirect-safe
|
|
5
|
+
* fetch wrapper can be unit-tested without standing up the MCP server. The server
|
|
6
|
+
* is driven by an LLM whose inputs may include untrusted web content while it
|
|
7
|
+
* holds a controller identity, so every outbound fetch must refuse internal
|
|
8
|
+
* targets AND re-validate each redirect hop — a validated origin that responds
|
|
9
|
+
* 30x to http://169.254.169.254/ would otherwise reach cloud metadata (the SSRF
|
|
10
|
+
* redirect-bypass, audit finding S2 / prior C2-H11).
|
|
11
|
+
*/
|
|
12
|
+
import { lookup as dnsLookup } from 'node:dns/promises';
|
|
13
|
+
/** Parse a dotted-quad IPv4 string to a 32-bit unsigned int, or null. */
|
|
14
|
+
export function ipv4ToInt(host) {
|
|
15
|
+
const m = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(host);
|
|
16
|
+
if (!m)
|
|
17
|
+
return null;
|
|
18
|
+
const parts = m.slice(1, 5).map((p) => Number(p));
|
|
19
|
+
if (parts.some((p) => p > 255))
|
|
20
|
+
return null;
|
|
21
|
+
return ((parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8) | parts[3]) >>> 0;
|
|
22
|
+
}
|
|
23
|
+
/** True if a literal IPv4 falls in a private/loopback/link-local/metadata range. */
|
|
24
|
+
export function isPrivateIpv4(host) {
|
|
25
|
+
const ip = ipv4ToInt(host);
|
|
26
|
+
if (ip === null)
|
|
27
|
+
return false;
|
|
28
|
+
const inRange = (cidrBase, bits) => {
|
|
29
|
+
const base = ipv4ToInt(cidrBase);
|
|
30
|
+
if (base === null)
|
|
31
|
+
return false;
|
|
32
|
+
const mask = bits === 0 ? 0 : (0xffffffff << (32 - bits)) >>> 0;
|
|
33
|
+
return (ip & mask) === (base & mask);
|
|
34
|
+
};
|
|
35
|
+
return (inRange('10.0.0.0', 8) ||
|
|
36
|
+
inRange('172.16.0.0', 12) ||
|
|
37
|
+
inRange('192.168.0.0', 16) ||
|
|
38
|
+
inRange('127.0.0.0', 8) ||
|
|
39
|
+
inRange('169.254.0.0', 16) || // link-local incl. 169.254.169.254 metadata
|
|
40
|
+
inRange('100.64.0.0', 10) || // CGNAT (S23)
|
|
41
|
+
inRange('0.0.0.0', 8));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Extract the embedded IPv4 from an IPv4-mapped IPv6 address (::ffff:…), in BOTH
|
|
45
|
+
* the dotted form (::ffff:169.254.169.254) and the hex-compressed form
|
|
46
|
+
* (::ffff:a9fe:a9fe) that `new URL()` normalizes it to. Without the hex case an
|
|
47
|
+
* attacker reaches e.g. the cloud-metadata endpoint via http://[::ffff:169.254.169.254]/.
|
|
48
|
+
*/
|
|
49
|
+
export function extractMappedIpv4(h) {
|
|
50
|
+
const dotted = /^::ffff:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/.exec(h);
|
|
51
|
+
if (dotted)
|
|
52
|
+
return dotted[1];
|
|
53
|
+
const hex = /^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(h);
|
|
54
|
+
if (hex) {
|
|
55
|
+
const hi = parseInt(hex[1], 16);
|
|
56
|
+
const lo = parseInt(hex[2], 16);
|
|
57
|
+
return `${(hi >> 8) & 0xff}.${hi & 0xff}.${(lo >> 8) & 0xff}.${lo & 0xff}`;
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
/** True if a host string is a loopback/link-local/ULA/metadata IPv6 literal. */
|
|
62
|
+
export function isPrivateIpv6(host) {
|
|
63
|
+
// URL hostnames keep IPv6 in brackets; strip them.
|
|
64
|
+
let h = host;
|
|
65
|
+
if (h.startsWith('[') && h.endsWith(']'))
|
|
66
|
+
h = h.slice(1, -1);
|
|
67
|
+
h = h.toLowerCase();
|
|
68
|
+
if (h === '::1' || h === '::')
|
|
69
|
+
return true;
|
|
70
|
+
// Unique-local fc00::/7 → first byte 0xfc or 0xfd.
|
|
71
|
+
if (h.startsWith('fc') || h.startsWith('fd'))
|
|
72
|
+
return true;
|
|
73
|
+
// Link-local fe80::/10.
|
|
74
|
+
if (h.startsWith('fe8') || h.startsWith('fe9') || h.startsWith('fea') || h.startsWith('feb'))
|
|
75
|
+
return true;
|
|
76
|
+
// IPv4-mapped (::ffff:...) — extract the embedded IPv4 and re-check it.
|
|
77
|
+
const embedded = extractMappedIpv4(h);
|
|
78
|
+
if (embedded !== null && isPrivateIpv4(embedded))
|
|
79
|
+
return true;
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validate an outbound fetch URL against SSRF. Requires https: (or
|
|
84
|
+
* http://localhost|127.0.0.1 when opts.localDev is set) and rejects hosts that
|
|
85
|
+
* are literal/internal private, loopback, link-local, or metadata addresses,
|
|
86
|
+
* plus obvious internal TLDs. Returns the parsed URL or throws.
|
|
87
|
+
*
|
|
88
|
+
* NOTE: this validates the LITERAL host only. DNS-rebinding (a public name that
|
|
89
|
+
* resolves to a private IP) is handled by assertResolvedHostIsPublic(), which
|
|
90
|
+
* safeFetch() calls for every hop before connecting.
|
|
91
|
+
*/
|
|
92
|
+
export function validateFetchUrl(raw, opts) {
|
|
93
|
+
let parsed;
|
|
94
|
+
try {
|
|
95
|
+
parsed = new URL(raw);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
throw new Error(`Invalid URL: ${raw}`);
|
|
99
|
+
}
|
|
100
|
+
const host = parsed.hostname.toLowerCase();
|
|
101
|
+
const isLocalHost = host === 'localhost' || host === '127.0.0.1' || host === '::1' || host === '[::1]';
|
|
102
|
+
if (parsed.protocol === 'http:') {
|
|
103
|
+
if (!(opts.localDev && isLocalHost)) {
|
|
104
|
+
throw new Error(`Refusing http:// URL (${raw}). Only https:// is allowed; ` +
|
|
105
|
+
`http://localhost is permitted only when localDev is enabled via "configure".`);
|
|
106
|
+
}
|
|
107
|
+
return parsed;
|
|
108
|
+
}
|
|
109
|
+
if (parsed.protocol !== 'https:') {
|
|
110
|
+
throw new Error(`Refusing non-http(s) URL scheme "${parsed.protocol}" (${raw}).`);
|
|
111
|
+
}
|
|
112
|
+
// https path — still block internal targets unless explicitly local-dev'd.
|
|
113
|
+
if (isLocalHost && !opts.localDev) {
|
|
114
|
+
throw new Error(`Refusing localhost/loopback target (${raw}). Enable localDev to allow it.`);
|
|
115
|
+
}
|
|
116
|
+
if (isPrivateIpv4(host) && !opts.localDev) {
|
|
117
|
+
throw new Error(`Refusing private/loopback/link-local/metadata IPv4 target (${raw}).`);
|
|
118
|
+
}
|
|
119
|
+
if (host === '169.254.169.254') {
|
|
120
|
+
throw new Error(`Refusing cloud metadata endpoint (${raw}).`);
|
|
121
|
+
}
|
|
122
|
+
if (isPrivateIpv6(host) && !opts.localDev) {
|
|
123
|
+
throw new Error(`Refusing private/loopback/link-local IPv6 target (${raw}).`);
|
|
124
|
+
}
|
|
125
|
+
if (host.endsWith('.local') || host.endsWith('.internal')) {
|
|
126
|
+
throw new Error(`Refusing internal TLD host (${raw}).`);
|
|
127
|
+
}
|
|
128
|
+
return parsed;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* SEC-0: resolve a hostname and reject if ANY resolved address is private/loopback/link-local/
|
|
132
|
+
* metadata — closes DNS-rebinding (a public name that resolves to an internal IP), which the
|
|
133
|
+
* literal-host check in validateFetchUrl cannot catch. Literal IPs are already covered by
|
|
134
|
+
* validateFetchUrl, so they short-circuit here. A narrow check-vs-connect rebind window remains
|
|
135
|
+
* (the OS re-resolves at fetch time); fully closing it requires pinning the validated IP at the
|
|
136
|
+
* connection layer (a custom undici dispatcher).
|
|
137
|
+
*/
|
|
138
|
+
export async function assertResolvedHostIsPublic(hostname, opts) {
|
|
139
|
+
let h = hostname.toLowerCase();
|
|
140
|
+
if (h.startsWith('[') && h.endsWith(']'))
|
|
141
|
+
h = h.slice(1, -1);
|
|
142
|
+
// Literal IPs were already validated by validateFetchUrl; resolving them adds nothing.
|
|
143
|
+
if (ipv4ToInt(h) !== null || h.includes(':'))
|
|
144
|
+
return;
|
|
145
|
+
if (opts.localDev && (h === 'localhost' || h === '127.0.0.1' || h === '::1'))
|
|
146
|
+
return;
|
|
147
|
+
const doLookup = opts.lookupImpl ?? ((host) => dnsLookup(host, { all: true, verbatim: true }));
|
|
148
|
+
let results;
|
|
149
|
+
try {
|
|
150
|
+
results = await doLookup(h);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
throw new Error(`Refusing fetch: cannot resolve host "${hostname}".`);
|
|
154
|
+
}
|
|
155
|
+
for (const { address } of results) {
|
|
156
|
+
if ((isPrivateIpv4(address) || isPrivateIpv6(address)) && !opts.localDev) {
|
|
157
|
+
throw new Error(`Refusing fetch: host "${hostname}" resolves to a private/internal address (${address}) — DNS-rebinding blocked.`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* SSRF-safe fetch: validate the initial URL, then follow redirects MANUALLY,
|
|
163
|
+
* re-validating every hop's Location before fetching it. This closes the
|
|
164
|
+
* redirect-bypass where an allowlisted origin 30x's to an internal target.
|
|
165
|
+
* SEC-0: each hop's host is also DNS-resolved and the resolved IPs re-checked
|
|
166
|
+
* (assertResolvedHostIsPublic) so a public name can't rebind to an internal IP.
|
|
167
|
+
* `fetchImpl` / `lookupImpl` are injectable for testing.
|
|
168
|
+
*/
|
|
169
|
+
export async function safeFetch(raw, init, opts) {
|
|
170
|
+
const fetchImpl = opts.fetchImpl ?? globalThis.fetch;
|
|
171
|
+
const maxRedirects = opts.maxRedirects ?? 5;
|
|
172
|
+
let currentUrl = validateFetchUrl(raw, opts).toString();
|
|
173
|
+
await assertResolvedHostIsPublic(new URL(currentUrl).hostname, opts);
|
|
174
|
+
for (let hop = 0; hop <= maxRedirects; hop++) {
|
|
175
|
+
const resp = await fetchImpl(currentUrl, { ...init, redirect: 'manual' });
|
|
176
|
+
if (resp.status >= 300 && resp.status < 400) {
|
|
177
|
+
const location = resp.headers.get('location');
|
|
178
|
+
if (!location)
|
|
179
|
+
return resp; // redirect with no target — hand back as-is
|
|
180
|
+
const next = new URL(location, currentUrl).toString();
|
|
181
|
+
// Re-validate the redirect target BEFORE following it (TOCTOU SSRF fix).
|
|
182
|
+
currentUrl = validateFetchUrl(next, opts).toString();
|
|
183
|
+
await assertResolvedHostIsPublic(new URL(currentUrl).hostname, opts);
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
return resp;
|
|
187
|
+
}
|
|
188
|
+
throw new Error(`Refusing to follow more than ${maxRedirects} redirects (from ${raw}).`);
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ic402/mcp",
|
|
3
|
+
"version": "2.5.2",
|
|
4
|
+
"description": "MCP server for ic402 — exposes x402 charges and streaming sessions as tools",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/vhew/ic402.git",
|
|
9
|
+
"directory": "integrations/mcp"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
18
|
+
},
|
|
19
|
+
"type": "module",
|
|
20
|
+
"main": "dist/index.js",
|
|
21
|
+
"bin": {
|
|
22
|
+
"ic402-mcp": "dist/index.js"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc",
|
|
26
|
+
"start": "node dist/index.js"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@ic402/client": "workspace:*",
|
|
30
|
+
"@icp-sdk/core": "5.4.0",
|
|
31
|
+
"@modelcontextprotocol/sdk": "1.29.0",
|
|
32
|
+
"zod": "4.4.3"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@types/node": "22.19.20",
|
|
36
|
+
"typescript": "6.0.3"
|
|
37
|
+
}
|
|
38
|
+
}
|