@winstonsayno/mcp-gateway 1.1.0 → 1.2.0

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.
Files changed (67) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/README.md +32 -6
  3. package/dashboard/README.md +4 -0
  4. package/dashboard/index.html +42 -3
  5. package/dist/auth/middleware.d.ts +29 -0
  6. package/dist/auth/middleware.d.ts.map +1 -1
  7. package/dist/auth/middleware.js +142 -18
  8. package/dist/auth/middleware.js.map +1 -1
  9. package/dist/cli.js +54 -1
  10. package/dist/cli.js.map +1 -1
  11. package/dist/config/loader.d.ts.map +1 -1
  12. package/dist/config/loader.js +110 -2
  13. package/dist/config/loader.js.map +1 -1
  14. package/dist/gateway/api.d.ts +5 -0
  15. package/dist/gateway/api.d.ts.map +1 -1
  16. package/dist/gateway/api.js +86 -4
  17. package/dist/gateway/api.js.map +1 -1
  18. package/dist/gateway/index.d.ts +9 -1
  19. package/dist/gateway/index.d.ts.map +1 -1
  20. package/dist/gateway/index.js +76 -5
  21. package/dist/gateway/index.js.map +1 -1
  22. package/dist/index.d.ts +11 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +7 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/mcp/catalog.d.ts +1 -1
  27. package/dist/mcp/endpoint.d.ts +46 -1
  28. package/dist/mcp/endpoint.d.ts.map +1 -1
  29. package/dist/mcp/endpoint.js +312 -10
  30. package/dist/mcp/endpoint.js.map +1 -1
  31. package/dist/middleware/error-handler.d.ts +10 -1
  32. package/dist/middleware/error-handler.d.ts.map +1 -1
  33. package/dist/middleware/error-handler.js +17 -3
  34. package/dist/middleware/error-handler.js.map +1 -1
  35. package/dist/monitor/index.d.ts.map +1 -1
  36. package/dist/monitor/index.js +5 -0
  37. package/dist/monitor/index.js.map +1 -1
  38. package/dist/proxy/index.d.ts +15 -0
  39. package/dist/proxy/index.d.ts.map +1 -1
  40. package/dist/proxy/index.js +44 -4
  41. package/dist/proxy/index.js.map +1 -1
  42. package/dist/security/headers.d.ts +23 -0
  43. package/dist/security/headers.d.ts.map +1 -0
  44. package/dist/security/headers.js +71 -0
  45. package/dist/security/headers.js.map +1 -0
  46. package/dist/security/lockout.d.ts +41 -0
  47. package/dist/security/lockout.d.ts.map +1 -0
  48. package/dist/security/lockout.js +117 -0
  49. package/dist/security/lockout.js.map +1 -0
  50. package/dist/security/network.d.ts +31 -0
  51. package/dist/security/network.d.ts.map +1 -0
  52. package/dist/security/network.js +147 -0
  53. package/dist/security/network.js.map +1 -0
  54. package/dist/security/posture.d.ts +18 -0
  55. package/dist/security/posture.d.ts.map +1 -0
  56. package/dist/security/posture.js +73 -0
  57. package/dist/security/posture.js.map +1 -0
  58. package/dist/security/redact.d.ts +34 -0
  59. package/dist/security/redact.d.ts.map +1 -0
  60. package/dist/security/redact.js +115 -0
  61. package/dist/security/redact.js.map +1 -0
  62. package/dist/utils/logger.d.ts.map +1 -1
  63. package/dist/utils/logger.js +4 -2
  64. package/dist/utils/logger.js.map +1 -1
  65. package/dist/utils/types.d.ts +81 -2
  66. package/dist/utils/types.d.ts.map +1 -1
  67. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/proxy/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/proxy/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Security response headers (no dependency on helmet).
3
+ *
4
+ * - every response: `X-Content-Type-Options: nosniff`, `X-Frame-Options:
5
+ * DENY`, `Referrer-Policy: no-referrer`, `Cross-Origin-Opener-Policy`,
6
+ * `Cross-Origin-Resource-Policy`, a locked-down CSP for API responses and
7
+ * optionally `Strict-Transport-Security`;
8
+ * - the dashboard page gets its own CSP allowing exactly its inline script
9
+ * (by SHA-256 hash) and same-origin API calls.
10
+ *
11
+ * @module security/headers
12
+ */
13
+ import type { RequestHandler } from 'express';
14
+ import type { SecurityConfig } from '../utils/types.js';
15
+ /** CSP for JSON / SSE API responses: nothing may load, nothing may frame it. */
16
+ export declare const API_CSP = "default-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none'";
17
+ /** SHA-256 CSP sources for every inline `<script>` (without `src`) in an HTML document. */
18
+ export declare function inlineScriptHashes(html: string): string[];
19
+ /** Content-Security-Policy for the dashboard page. */
20
+ export declare function dashboardCsp(html: string): string;
21
+ /** Middleware setting the baseline headers; routes may override `Content-Security-Policy`. */
22
+ export declare function securityHeadersMiddleware(config: () => SecurityConfig | undefined): RequestHandler;
23
+ //# sourceMappingURL=headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/security/headers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,gFAAgF;AAChF,eAAO,MAAM,OAAO,oFAAoF,CAAC;AAEzG,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CASzD;AAED,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAejD;AASD,8FAA8F;AAC9F,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,cAAc,GAAG,SAAS,GAAG,cAAc,CAelG"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Security response headers (no dependency on helmet).
3
+ *
4
+ * - every response: `X-Content-Type-Options: nosniff`, `X-Frame-Options:
5
+ * DENY`, `Referrer-Policy: no-referrer`, `Cross-Origin-Opener-Policy`,
6
+ * `Cross-Origin-Resource-Policy`, a locked-down CSP for API responses and
7
+ * optionally `Strict-Transport-Security`;
8
+ * - the dashboard page gets its own CSP allowing exactly its inline script
9
+ * (by SHA-256 hash) and same-origin API calls.
10
+ *
11
+ * @module security/headers
12
+ */
13
+ import { createHash } from 'crypto';
14
+ /** CSP for JSON / SSE API responses: nothing may load, nothing may frame it. */
15
+ export const API_CSP = "default-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none'";
16
+ /** SHA-256 CSP sources for every inline `<script>` (without `src`) in an HTML document. */
17
+ export function inlineScriptHashes(html) {
18
+ const out = [];
19
+ const re = /<script(\s[^>]*)?>([\s\S]*?)<\/script>/gi;
20
+ let m;
21
+ while ((m = re.exec(html))) {
22
+ if (m[1] && /\bsrc\s*=/.test(m[1]))
23
+ continue;
24
+ out.push(`'sha256-${createHash('sha256').update(m[2] ?? '', 'utf8').digest('base64')}'`);
25
+ }
26
+ return out;
27
+ }
28
+ /** Content-Security-Policy for the dashboard page. */
29
+ export function dashboardCsp(html) {
30
+ const scripts = inlineScriptHashes(html);
31
+ return [
32
+ "default-src 'none'",
33
+ `script-src ${scripts.length ? scripts.join(' ') : "'none'"}`,
34
+ // The dashboard sets inline styles from script (charts, transitions).
35
+ "style-src 'self' 'unsafe-inline'",
36
+ "img-src 'self' data:",
37
+ "font-src 'self' data:",
38
+ "connect-src 'self'",
39
+ "manifest-src 'self'",
40
+ "base-uri 'none'",
41
+ "form-action 'none'",
42
+ "frame-ancestors 'none'",
43
+ ].join('; ');
44
+ }
45
+ function hstsValue(hsts) {
46
+ if (!hsts)
47
+ return undefined;
48
+ const o = typeof hsts === 'object' ? hsts : {};
49
+ const maxAge = o.maxAgeSeconds ?? 15_552_000; // 180 days
50
+ return `max-age=${maxAge}${o.includeSubDomains ? '; includeSubDomains' : ''}`;
51
+ }
52
+ /** Middleware setting the baseline headers; routes may override `Content-Security-Policy`. */
53
+ export function securityHeadersMiddleware(config) {
54
+ return (_req, res, next) => {
55
+ const cfg = config();
56
+ if (cfg?.headers === false)
57
+ return next();
58
+ res.setHeader('X-Content-Type-Options', 'nosniff');
59
+ res.setHeader('X-Frame-Options', 'DENY');
60
+ res.setHeader('Referrer-Policy', 'no-referrer');
61
+ res.setHeader('Cross-Origin-Opener-Policy', 'same-origin');
62
+ res.setHeader('Cross-Origin-Resource-Policy', 'same-site');
63
+ res.setHeader('X-DNS-Prefetch-Control', 'off');
64
+ res.setHeader('Content-Security-Policy', API_CSP);
65
+ const hsts = hstsValue(cfg?.hsts);
66
+ if (hsts)
67
+ res.setHeader('Strict-Transport-Security', hsts);
68
+ next();
69
+ };
70
+ }
71
+ //# sourceMappingURL=headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/security/headers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Brute-force protection: lock out client IPs after repeated authentication
3
+ * failures (`security.authLockout`).
4
+ *
5
+ * Failures are counted per IP in a fixed window; reaching `maxFailures` locks
6
+ * the IP for `lockoutSeconds` (every request then gets `429` before the
7
+ * credential is even checked). A successful authentication clears the count.
8
+ *
9
+ * @module security/lockout
10
+ */
11
+ import type { RequestHandler } from 'express';
12
+ import type { AuthLockoutConfig } from '../utils/types.js';
13
+ export declare const DEFAULT_LOCKOUT: Required<AuthLockoutConfig>;
14
+ export interface LockoutStatus {
15
+ lockedClients: number;
16
+ trackedClients: number;
17
+ }
18
+ export declare class AuthLockout {
19
+ private readonly now;
20
+ readonly config: Required<AuthLockoutConfig>;
21
+ private readonly entries;
22
+ private readonly timer;
23
+ private total;
24
+ constructor(config?: AuthLockoutConfig, now?: () => number);
25
+ /** Seconds the IP stays locked, or 0. */
26
+ lockedFor(ip: string): number;
27
+ /** Record a failure; returns true when this failure triggered a lockout. */
28
+ fail(ip: string): boolean;
29
+ success(ip: string): void;
30
+ status(): LockoutStatus & {
31
+ lockoutsTotal: number;
32
+ };
33
+ private prune;
34
+ close(): void;
35
+ }
36
+ /**
37
+ * Wrap an auth middleware: locked IPs get `429`, a `401` / `403` answer from
38
+ * the auth middleware counts as a failure, reaching `next()` as a success.
39
+ */
40
+ export declare function withLockout(auth: RequestHandler, lockout: () => AuthLockout | undefined): RequestHandler;
41
+ //# sourceMappingURL=lockout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockout.d.ts","sourceRoot":"","sources":["../../src/security/lockout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAIvD,CAAC;AAQF,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAW;IAMsB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALhE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,KAAK,CAAK;gBAEN,MAAM,GAAE,iBAAsB,EAAmB,GAAG,GAAE,MAAM,MAAiB;IAMzF,yCAAyC;IACzC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAW7B,4EAA4E;IAC5E,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAoBzB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKzB,MAAM,IAAI,aAAa,GAAG;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE;IAOnD,OAAO,CAAC,KAAK;IAQb,KAAK,IAAI,IAAI;CAId;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,WAAW,GAAG,SAAS,GAAG,cAAc,CAwBxG"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Brute-force protection: lock out client IPs after repeated authentication
3
+ * failures (`security.authLockout`).
4
+ *
5
+ * Failures are counted per IP in a fixed window; reaching `maxFailures` locks
6
+ * the IP for `lockoutSeconds` (every request then gets `429` before the
7
+ * credential is even checked). A successful authentication clears the count.
8
+ *
9
+ * @module security/lockout
10
+ */
11
+ import { logger } from '../utils/logger.js';
12
+ export const DEFAULT_LOCKOUT = {
13
+ maxFailures: 10,
14
+ windowSeconds: 300,
15
+ lockoutSeconds: 900,
16
+ };
17
+ export class AuthLockout {
18
+ now;
19
+ config;
20
+ entries = new Map();
21
+ timer;
22
+ total = 0;
23
+ constructor(config = {}, now = Date.now) {
24
+ this.now = now;
25
+ this.config = { ...DEFAULT_LOCKOUT, ...Object.fromEntries(Object.entries(config).filter(([, v]) => v !== undefined)) };
26
+ this.timer = setInterval(() => this.prune(), 60_000);
27
+ this.timer.unref();
28
+ }
29
+ /** Seconds the IP stays locked, or 0. */
30
+ lockedFor(ip) {
31
+ const e = this.entries.get(ip);
32
+ const t = this.now();
33
+ if (!e?.lockedUntil)
34
+ return 0;
35
+ if (e.lockedUntil <= t) {
36
+ this.entries.delete(ip);
37
+ return 0;
38
+ }
39
+ return Math.ceil((e.lockedUntil - t) / 1000);
40
+ }
41
+ /** Record a failure; returns true when this failure triggered a lockout. */
42
+ fail(ip) {
43
+ const t = this.now();
44
+ let e = this.entries.get(ip);
45
+ if (!e || t - e.windowStart >= this.config.windowSeconds * 1000) {
46
+ e = { failures: 0, windowStart: t };
47
+ this.entries.set(ip, e);
48
+ }
49
+ if (e.lockedUntil && e.lockedUntil > t)
50
+ return false;
51
+ e.failures++;
52
+ if (e.failures >= this.config.maxFailures) {
53
+ e.lockedUntil = t + this.config.lockoutSeconds * 1000;
54
+ this.total++;
55
+ logger.warn(`Locked out ${ip} for ${this.config.lockoutSeconds}s after ${e.failures} failed authentication attempts`);
56
+ return true;
57
+ }
58
+ return false;
59
+ }
60
+ success(ip) {
61
+ const e = this.entries.get(ip);
62
+ if (e && !(e.lockedUntil && e.lockedUntil > this.now()))
63
+ this.entries.delete(ip);
64
+ }
65
+ status() {
66
+ const t = this.now();
67
+ let locked = 0;
68
+ for (const e of this.entries.values())
69
+ if (e.lockedUntil && e.lockedUntil > t)
70
+ locked++;
71
+ return { lockedClients: locked, trackedClients: this.entries.size, lockoutsTotal: this.total };
72
+ }
73
+ prune() {
74
+ const t = this.now();
75
+ for (const [ip, e] of this.entries) {
76
+ const expired = e.lockedUntil ? e.lockedUntil <= t : t - e.windowStart >= this.config.windowSeconds * 1000;
77
+ if (expired)
78
+ this.entries.delete(ip);
79
+ }
80
+ }
81
+ close() {
82
+ clearInterval(this.timer);
83
+ this.entries.clear();
84
+ }
85
+ }
86
+ /**
87
+ * Wrap an auth middleware: locked IPs get `429`, a `401` / `403` answer from
88
+ * the auth middleware counts as a failure, reaching `next()` as a success.
89
+ */
90
+ export function withLockout(auth, lockout) {
91
+ return (req, res, next) => {
92
+ const lo = lockout();
93
+ if (!lo)
94
+ return auth(req, res, next);
95
+ const ip = req.ip ?? req.socket.remoteAddress ?? 'unknown';
96
+ const wait = lo.lockedFor(ip);
97
+ if (wait > 0) {
98
+ res.status(429).set('Retry-After', String(wait)).json({
99
+ error: 'Too Many Requests',
100
+ message: 'Too many failed authentication attempts; try again later',
101
+ retryAfter: wait,
102
+ });
103
+ return;
104
+ }
105
+ let passed = false;
106
+ res.once('finish', () => {
107
+ if (!passed && res.statusCode === 401)
108
+ lo.fail(ip);
109
+ });
110
+ auth(req, res, (err) => {
111
+ passed = true;
112
+ lo.success(ip);
113
+ next(err);
114
+ });
115
+ };
116
+ }
117
+ //# sourceMappingURL=lockout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockout.js","sourceRoot":"","sources":["../../src/security/lockout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Network-level guards: client IP allowlist and `Host` header validation
3
+ * (DNS-rebinding protection).
4
+ *
5
+ * @module security/network
6
+ */
7
+ import type { RequestHandler } from 'express';
8
+ /** Strip the IPv4-mapped IPv6 prefix (`::ffff:1.2.3.4` → `1.2.3.4`). */
9
+ export declare function normalizeIp(ip: string): string;
10
+ /** Validate allowlist entries; returns an error message for the first bad one. */
11
+ export declare function invalidCidr(entries: readonly string[] | undefined): string | undefined;
12
+ /** A predicate telling whether an IP is in the list. */
13
+ export declare function createIpMatcher(entries: readonly string[]): (ip: string | undefined) => boolean;
14
+ /** 403 for clients outside `entries` (probes excepted). */
15
+ export declare function ipAllowlistMiddleware(entries: readonly string[]): RequestHandler;
16
+ /** Hosts accepted by default when DNS-rebinding protection is on. */
17
+ export declare function defaultAllowedHosts(bindHost: string): string[];
18
+ /** Split a Host header into hostname and port (handles `[v6]:port`). */
19
+ export declare function parseHostHeader(host: string): {
20
+ hostname: string;
21
+ port?: string;
22
+ };
23
+ /** Whether `host` (a Host header value) matches a list of patterns. */
24
+ export declare function hostAllowed(patterns: readonly string[], host: string | undefined): boolean;
25
+ /** 421-style rejection (sent as 403) of requests whose Host header is not allowed. */
26
+ export declare function hostCheckMiddleware(patterns: () => readonly string[] | undefined): RequestHandler;
27
+ /** Whether an Origin is a loopback origin (`http://localhost:*`, `http://127.0.0.1:*`, `http://[::1]:*`). */
28
+ export declare function isLoopbackOrigin(origin: string): boolean;
29
+ /** Whether Origin names the same host the request was sent to. */
30
+ export declare function isSameOrigin(origin: string, host: string | undefined): boolean;
31
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/security/network.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAG/E,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG9C;AAoBD,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAUtF;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAU/F;AAKD,2DAA2D;AAC3D,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,CAOhF;AAID,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAM9D;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAYjF;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAc1F;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,cAAc,CAOjG;AAED,6GAA6G;AAC7G,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAO9E"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Network-level guards: client IP allowlist and `Host` header validation
3
+ * (DNS-rebinding protection).
4
+ *
5
+ * @module security/network
6
+ */
7
+ import { BlockList, isIP } from 'net';
8
+ import { logger } from '../utils/logger.js';
9
+ /** Strip the IPv4-mapped IPv6 prefix (`::ffff:1.2.3.4` → `1.2.3.4`). */
10
+ export function normalizeIp(ip) {
11
+ const m = /^::ffff:(\d+\.\d+\.\d+\.\d+)$/i.exec(ip);
12
+ return m ? m[1] : ip;
13
+ }
14
+ /** Parse one allowlist entry (`1.2.3.4`, `10.0.0.0/8`, `::1`, `fd00::/8`); throws on invalid input. */
15
+ function addEntry(list, entry) {
16
+ const [addrRaw, prefixRaw, ...rest] = entry.trim().split('/');
17
+ const addr = normalizeIp(addrRaw ?? '');
18
+ const family = isIP(addr);
19
+ if (!family || rest.length > 0)
20
+ throw new Error(`invalid IP / CIDR "${entry}"`);
21
+ const type = family === 4 ? 'ipv4' : 'ipv6';
22
+ if (prefixRaw === undefined) {
23
+ list.addAddress(addr, type);
24
+ return;
25
+ }
26
+ const prefix = /^\d{1,3}$/.test(prefixRaw) ? Number(prefixRaw) : NaN;
27
+ if (!Number.isInteger(prefix) || prefix < 0 || prefix > (family === 4 ? 32 : 128)) {
28
+ throw new Error(`invalid CIDR prefix in "${entry}"`);
29
+ }
30
+ list.addSubnet(addr, prefix, type);
31
+ }
32
+ /** Validate allowlist entries; returns an error message for the first bad one. */
33
+ export function invalidCidr(entries) {
34
+ const list = new BlockList();
35
+ for (const e of entries ?? []) {
36
+ try {
37
+ addEntry(list, e);
38
+ }
39
+ catch (err) {
40
+ return err instanceof Error ? err.message : String(err);
41
+ }
42
+ }
43
+ return undefined;
44
+ }
45
+ /** A predicate telling whether an IP is in the list. */
46
+ export function createIpMatcher(entries) {
47
+ const list = new BlockList();
48
+ for (const e of entries)
49
+ addEntry(list, e);
50
+ return (ip) => {
51
+ if (!ip)
52
+ return false;
53
+ const a = normalizeIp(ip);
54
+ const family = isIP(a);
55
+ if (!family)
56
+ return false;
57
+ return list.check(a, family === 4 ? 'ipv4' : 'ipv6');
58
+ };
59
+ }
60
+ /** Paths that stay reachable for orchestrator probes regardless of the IP allowlist. */
61
+ const PROBE_PATHS = new Set(['/api/v1/health/live', '/api/v1/health/ready']);
62
+ /** 403 for clients outside `entries` (probes excepted). */
63
+ export function ipAllowlistMiddleware(entries) {
64
+ const allowed = createIpMatcher(entries);
65
+ return (req, res, next) => {
66
+ if (PROBE_PATHS.has(req.path) || allowed(req.ip ?? req.socket.remoteAddress))
67
+ return next();
68
+ logger.warn(`Rejected request from ${req.ip ?? 'unknown'}: not in security.ipAllowlist`);
69
+ res.status(403).json({ error: 'Forbidden', message: 'Client address not allowed' });
70
+ };
71
+ }
72
+ const LOOPBACK_HOSTS = ['localhost', '127.0.0.1', '[::1]', '::1'];
73
+ /** Hosts accepted by default when DNS-rebinding protection is on. */
74
+ export function defaultAllowedHosts(bindHost) {
75
+ const hosts = new Set(LOOPBACK_HOSTS);
76
+ if (bindHost && bindHost !== '0.0.0.0' && bindHost !== '::') {
77
+ hosts.add(isIP(bindHost) === 6 ? `[${bindHost}]` : bindHost);
78
+ }
79
+ return [...hosts];
80
+ }
81
+ /** Split a Host header into hostname and port (handles `[v6]:port`). */
82
+ export function parseHostHeader(host) {
83
+ const h = host.trim().toLowerCase();
84
+ if (h.startsWith('[')) {
85
+ const end = h.indexOf(']');
86
+ const hostname = h.slice(0, end + 1);
87
+ const port = h.slice(end + 1).startsWith(':') ? h.slice(end + 2) : undefined;
88
+ return { hostname, port };
89
+ }
90
+ const i = h.lastIndexOf(':');
91
+ // A bare IPv6 address (several colons, no brackets) has no port.
92
+ if (i > 0 && h.indexOf(':') === i)
93
+ return { hostname: h.slice(0, i), port: h.slice(i + 1) };
94
+ return { hostname: h };
95
+ }
96
+ /** Whether `host` (a Host header value) matches a list of patterns. */
97
+ export function hostAllowed(patterns, host) {
98
+ if (!host)
99
+ return false;
100
+ const { hostname, port } = parseHostHeader(host);
101
+ for (const raw of patterns) {
102
+ const p = raw.trim().toLowerCase();
103
+ if (p === '*')
104
+ return true;
105
+ const pp = parseHostHeader(p);
106
+ if (pp.port !== undefined && pp.port !== port)
107
+ continue;
108
+ if (pp.hostname === hostname)
109
+ return true;
110
+ if (pp.hostname.startsWith('*.') && hostname.endsWith(pp.hostname.slice(1)) && hostname.length > pp.hostname.length - 1) {
111
+ return true;
112
+ }
113
+ }
114
+ return false;
115
+ }
116
+ /** 421-style rejection (sent as 403) of requests whose Host header is not allowed. */
117
+ export function hostCheckMiddleware(patterns) {
118
+ return (req, res, next) => {
119
+ const list = patterns();
120
+ if (!list || PROBE_PATHS.has(req.path) || hostAllowed(list, req.headers.host))
121
+ return next();
122
+ logger.warn(`Rejected request with Host "${String(req.headers.host ?? '')}" (not in allowed hosts)`);
123
+ res.status(403).json({ error: 'Forbidden', message: 'Host not allowed' });
124
+ };
125
+ }
126
+ /** Whether an Origin is a loopback origin (`http://localhost:*`, `http://127.0.0.1:*`, `http://[::1]:*`). */
127
+ export function isLoopbackOrigin(origin) {
128
+ try {
129
+ const u = new URL(origin);
130
+ return ['localhost', '127.0.0.1', '[::1]'].includes(u.hostname);
131
+ }
132
+ catch {
133
+ return false;
134
+ }
135
+ }
136
+ /** Whether Origin names the same host the request was sent to. */
137
+ export function isSameOrigin(origin, host) {
138
+ if (!host)
139
+ return false;
140
+ try {
141
+ return new URL(origin).host.toLowerCase() === host.toLowerCase();
142
+ }
143
+ catch {
144
+ return false;
145
+ }
146
+ }
147
+ //# sourceMappingURL=network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/security/network.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Secure-defaults check: warnings about risky configurations, logged at
3
+ * startup / reload, printed by `mcp-gateway validate` and returned by
4
+ * `GET /api/v1/security`.
5
+ *
6
+ * @module security/posture
7
+ */
8
+ import type { GatewayConfig } from '../utils/types.js';
9
+ export interface SecurityWarning {
10
+ /** Stable identifier (for tests, docs and the dashboard). */
11
+ id: string;
12
+ message: string;
13
+ /** `warn`: likely exposure; `info`: hardening recommendation. */
14
+ level: 'warn' | 'info';
15
+ }
16
+ export declare function isLoopbackHost(host: string): boolean;
17
+ export declare function securityWarnings(config: GatewayConfig, now?: number): SecurityWarning[];
18
+ //# sourceMappingURL=posture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posture.d.ts","sourceRoot":"","sources":["../../src/security/posture.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIpD;AAID,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,SAAa,GAAG,eAAe,EAAE,CAiE3F"}