VYPR
Critical severity9.1GHSA Advisory· Published May 8, 2026· Updated May 14, 2026

CVE-2026-44694

CVE-2026-44694

Description

n8n-MCP is an MCP server that provides AI assistants access to n8n node documentation, properties, and operations. From version 2.18.7 to before version 2.50.2, there is an authenticated server-side request forgery vulnerability affecting the webhook trigger tools, the n8n API client (N8N_API_URL), and per-request URLs supplied via the x-n8n-url header in multi-tenant HTTP mode. This issue has been patched in version 2.50.2.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
n8n-mcpnpm
>= 2.18.7, < 2.50.22.50.2

Affected products

1

Patches

1
bcaba839409d

Merge commit from fork

https://github.com/czlonkowski/n8n-mcpRomuald CzłonkowskiMay 4, 2026via ghsa
36 files changed · +444 57
  • CHANGELOG.md+12 0 modified
    @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
     
     ## [Unreleased]
     
    +## [2.50.2] - 2026-05-04
    +
    +### Security
    +
    +- Fix SSRF in webhook URL validation (GHSA-cmrh-wvq6-wm9r). Reported by @fg0x0.
    +
    +### Notes
    +
    +- The n8n API client now validates `N8N_API_URL` through the same SSRF gate as user-supplied webhook URLs. Operators running n8n on the same host as n8n-mcp (`N8N_API_URL=http://localhost:5678` or an RFC1918 address) must set `WEBHOOK_SECURITY_MODE=moderate` (allows localhost, still blocks cloud metadata) to keep the API client functional after upgrade. Default `strict` is unchanged for production deployments with a public n8n URL.
    +
    +Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en
    +
     ## [2.50.1] - 2026-05-04
     
     ### Security
    
  • dist/services/n8n-api-client.d.ts+2 0 modified
    @@ -11,7 +11,9 @@ export declare class N8nApiClient {
         private baseUrl;
         private versionInfo;
         private versionPromise;
    +    private pinnedAgentsPromise;
         constructor(config: N8nApiClientConfig);
    +    private getPinnedAgents;
         getVersion(): Promise<N8nVersionInfo | null>;
         private fetchVersionOnce;
         getCachedVersionInfo(): N8nVersionInfo | null;
    
  • dist/services/n8n-api-client.d.ts.map+1 1 modified
    @@ -1 +1 @@
    -{"version":3,"file":"n8n-api-client.d.ts","sourceRoot":"","sources":["../../src/services/n8n-api-client.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    +{"version":3,"file":"n8n-api-client.d.ts","sourceRoot":"","sources":["../../src/services/n8n-api-client.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    
  • dist/services/n8n-api-client.js+40 3 modified
    @@ -47,6 +47,7 @@ class N8nApiClient {
         constructor(config) {
             this.versionInfo = null;
             this.versionPromise = null;
    +        this.pinnedAgentsPromise = null;
             const { baseUrl, apiKey, timeout = 30000, maxRetries = 3 } = config;
             this.maxRetries = maxRetries;
             let normalizedBase;
    @@ -71,8 +72,12 @@ class N8nApiClient {
                     'X-N8N-API-KEY': apiKey,
                     'Content-Type': 'application/json',
                 },
    +            maxRedirects: 0,
             });
    -        this.client.interceptors.request.use((config) => {
    +        this.client.interceptors.request.use(async (config) => {
    +            const agents = await this.getPinnedAgents();
    +            config.httpAgent = agents.httpAgent;
    +            config.httpsAgent = agents.httpsAgent;
                 const isSensitive = config.url?.includes('/credentials') && config.method !== 'get';
                 logger_1.logger.debug(`n8n API Request: ${config.method?.toUpperCase()} ${config.url}`, {
                     params: config.params,
    @@ -92,6 +97,25 @@ class N8nApiClient {
                 return Promise.reject(n8nError);
             });
         }
    +    getPinnedAgents() {
    +        if (!this.pinnedAgentsPromise) {
    +            const promise = (async () => {
    +                const { SSRFProtection } = await Promise.resolve().then(() => __importStar(require('../utils/ssrf-protection')));
    +                const validation = await SSRFProtection.validateWebhookUrl(this.baseUrl);
    +                if (!validation.valid || !validation.address || !validation.family) {
    +                    throw new Error(`SSRF protection: ${validation.reason || 'baseUrl rejected'}`);
    +                }
    +                return SSRFProtection.createPinnedAgents(validation.address, validation.family);
    +            })();
    +            promise.catch(() => {
    +                if (this.pinnedAgentsPromise === promise) {
    +                    this.pinnedAgentsPromise = null;
    +                }
    +            });
    +            this.pinnedAgentsPromise = promise;
    +        }
    +        return this.pinnedAgentsPromise;
    +    }
         async getVersion() {
             if (this.versionInfo) {
                 return this.versionInfo;
    @@ -109,7 +133,11 @@ class N8nApiClient {
             }
         }
         async fetchVersionOnce() {
    -        return (0, n8n_version_1.getCachedVersion)(this.baseUrl) ?? await (0, n8n_version_1.fetchN8nVersion)(this.baseUrl);
    +        const cached = (0, n8n_version_1.getCachedVersion)(this.baseUrl);
    +        if (cached)
    +            return cached;
    +        const agents = await this.getPinnedAgents();
    +        return await (0, n8n_version_1.fetchN8nVersion)(this.baseUrl, agents);
         }
         getCachedVersionInfo() {
             return this.versionInfo;
    @@ -118,9 +146,13 @@ class N8nApiClient {
             try {
                 const baseUrl = this.client.defaults.baseURL || '';
                 const healthzUrl = baseUrl.replace(/\/api\/v\d+\/?$/, '') + '/healthz';
    +            const agents = await this.getPinnedAgents();
                 const response = await axios_1.default.get(healthzUrl, {
                     timeout: 5000,
    -                validateStatus: (status) => status < 500
    +                validateStatus: (status) => status < 500,
    +                maxRedirects: 0,
    +                httpAgent: agents.httpAgent,
    +                httpsAgent: agents.httpsAgent,
                 });
                 const versionInfo = await this.getVersion();
                 if (response.status === 200 && response.data?.status === 'ok') {
    @@ -320,10 +352,15 @@ class N8nApiClient {
                     params: httpMethod === 'GET' ? data : undefined,
                     timeout: waitForResponse ? 120000 : 30000,
                 };
    +            const pinned = validation.address && validation.family
    +                ? SSRFProtection.createPinnedAgents(validation.address, validation.family)
    +                : undefined;
                 const webhookClient = axios_1.default.create({
                     baseURL: new URL('/', webhookUrl).toString(),
                     validateStatus: (status) => status < 500,
                     maxRedirects: 0,
    +                httpAgent: pinned?.httpAgent,
    +                httpsAgent: pinned?.httpsAgent,
                 });
                 const response = await webhookClient.request(config);
                 return {
    
  • dist/services/n8n-api-client.js.map+1 1 modified
    @@ -1 +1 @@
    -{"version":3,"file":"n8n-api-client.js","sourceRoot":"","sources":["../../src/services/n8n-api-client.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    +{"version":3,"file":"n8n-api-client.js","sourceRoot":"","sources":["../../src/services/n8n-api-client.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    
  • dist/services/n8n-version.d.ts+2 1 modified
    @@ -1,9 +1,10 @@
     import { N8nVersionInfo } from '../types/n8n-api';
    +import type { PinnedAgents } from '../utils/ssrf-protection';
     export declare function parseVersion(versionString: string): N8nVersionInfo | null;
     export declare function compareVersions(a: N8nVersionInfo, b: N8nVersionInfo): number;
     export declare function versionAtLeast(version: N8nVersionInfo, major: number, minor: number, patch?: number): boolean;
     export declare function getSupportedSettingsProperties(version: N8nVersionInfo): Set<string>;
    -export declare function fetchN8nVersion(baseUrl: string): Promise<N8nVersionInfo | null>;
    +export declare function fetchN8nVersion(baseUrl: string, pinnedAgents?: PinnedAgents): Promise<N8nVersionInfo | null>;
     export declare function clearVersionCache(): void;
     export declare function getCachedVersion(baseUrl: string): N8nVersionInfo | null;
     export declare function setCachedVersion(baseUrl: string, version: N8nVersionInfo): void;
    
  • dist/services/n8n-version.d.ts.map+1 1 modified
    @@ -1 +1 @@
    -{"version":3,"file":"n8n-version.d.ts","sourceRoot":"","sources":["../../src/services/n8n-version.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AA0CvE,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAczE;AAKD,wBAAgB,eAAe,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,CAI5E;AAKD,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAGxG;AAKD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAcnF;AASD,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAoDrF;AAKD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAMvE;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAE/E;AAYD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,OAAO,EAAE,cAAc,GAAG,IAAI,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBzB;AAGD,eAAO,MAAM,kBAAkB;;;;;;;;;;;CAG9B,CAAC"}
    \ No newline at end of file
    +{"version":3,"file":"n8n-version.d.ts","sourceRoot":"","sources":["../../src/services/n8n-version.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA0C7D,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAczE;AAKD,wBAAgB,eAAe,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,CAI5E;AAKD,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAGxG;AAKD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAcnF;AASD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAwDhC;AAKD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAMvE;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAE/E;AAYD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,OAAO,EAAE,cAAc,GAAG,IAAI,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBzB;AAGD,eAAO,MAAM,kBAAkB;;;;;;;;;;;CAG9B,CAAC"}
    \ No newline at end of file
    
  • dist/services/n8n-version.js+4 1 modified
    @@ -70,7 +70,7 @@ function getSupportedSettingsProperties(version) {
         }
         return supported;
     }
    -async function fetchN8nVersion(baseUrl) {
    +async function fetchN8nVersion(baseUrl, pinnedAgents) {
         const cached = versionCache.get(baseUrl);
         if (cached && Date.now() - cached.fetchedAt < VERSION_CACHE_TTL_MS) {
             logger_1.logger.debug(`Using cached n8n version for ${baseUrl}: ${cached.info.version}`);
    @@ -83,6 +83,9 @@ async function fetchN8nVersion(baseUrl) {
             const response = await axios_1.default.get(settingsUrl, {
                 timeout: 5000,
                 validateStatus: (status) => status < 500,
    +            maxRedirects: 0,
    +            httpAgent: pinnedAgents?.httpAgent,
    +            httpsAgent: pinnedAgents?.httpsAgent,
             });
             if (response.status === 200 && response.data) {
                 const settings = response.data.data;
    
  • dist/services/n8n-version.js.map+1 1 modified
    @@ -1 +1 @@
    -{"version":3,"file":"n8n-version.js","sourceRoot":"","sources":["../../src/services/n8n-version.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    +{"version":3,"file":"n8n-version.js","sourceRoot":"","sources":["../../src/services/n8n-version.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    
  • dist/triggers/handlers/chat-handler.d.ts.map+1 1 modified
    @@ -1 +1 @@
    -{"version":3,"file":"chat-handler.d.ts","sourceRoot":"","sources":["../../../src/triggers/handlers/chat-handler.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EACL,WAAW,EACX,eAAe,EACf,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA+BpD,qBAAa,WAAY,SAAQ,kBAAkB,CAAC,gBAAgB,CAAC;IACnE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAU;IAE3C,QAAQ,CAAC,YAAY,EAAE,0BAA0B,CAG/C;IAEF,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAmB;IAEjC,OAAO,CACX,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,QAAQ,EAClB,WAAW,CAAC,EAAE,eAAe,GAC5B,OAAO,CAAC,eAAe,CAAC;CAkF5B"}
    \ No newline at end of file
    +{"version":3,"file":"chat-handler.d.ts","sourceRoot":"","sources":["../../../src/triggers/handlers/chat-handler.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EACL,WAAW,EACX,eAAe,EACf,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA+BpD,qBAAa,WAAY,SAAQ,kBAAkB,CAAC,gBAAgB,CAAC;IACnE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAU;IAE3C,QAAQ,CAAC,YAAY,EAAE,0BAA0B,CAG/C;IAEF,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAmB;IAEjC,OAAO,CACX,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,QAAQ,EAClB,WAAW,CAAC,EAAE,eAAe,GAC5B,OAAO,CAAC,eAAe,CAAC;CAyF5B"}
    \ No newline at end of file
    
  • dist/triggers/handlers/chat-handler.js+5 0 modified
    @@ -84,6 +84,9 @@ class ChatHandler extends base_handler_1.BaseTriggerHandler {
                 if (!validation.valid) {
                     return this.errorResponse(input, `SSRF protection: ${validation.reason}`, startTime);
                 }
    +            const pinned = validation.address && validation.family
    +                ? SSRFProtection.createPinnedAgents(validation.address, validation.family)
    +                : undefined;
                 const sessionId = input.sessionId || generateSessionId();
                 const chatPayload = {
                     action: 'sendMessage',
    @@ -102,6 +105,8 @@ class ChatHandler extends base_handler_1.BaseTriggerHandler {
                     timeout: input.timeout || (input.waitForResponse !== false ? 120000 : 30000),
                     validateStatus: (status) => status < 500,
                     maxRedirects: 0,
    +                httpAgent: pinned?.httpAgent,
    +                httpsAgent: pinned?.httpsAgent,
                 };
                 const response = await axios_1.default.request(config);
                 const chatResponse = response.data;
    
  • dist/triggers/handlers/chat-handler.js.map+1 1 modified
    @@ -1 +1 @@
    -{"version":3,"file":"chat-handler.js","sourceRoot":"","sources":["../../../src/triggers/handlers/chat-handler.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    +{"version":3,"file":"chat-handler.js","sourceRoot":"","sources":["../../../src/triggers/handlers/chat-handler.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    
  • dist/triggers/handlers/form-handler.d.ts.map+1 1 modified
    @@ -1 +1 @@
    -{"version":3,"file":"form-handler.d.ts","sourceRoot":"","sources":["../../../src/triggers/handlers/form-handler.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAgB,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,WAAW,EACX,eAAe,EACf,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAwMpD,qBAAa,WAAY,SAAQ,kBAAkB,CAAC,gBAAgB,CAAC;IACnE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAU;IAE3C,QAAQ,CAAC,YAAY,EAAE,0BAA0B,CAG/C;IAEF,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;OAAmB;IAEjC,OAAO,CACX,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,QAAQ,EAClB,WAAW,CAAC,EAAE,eAAe,GAC5B,OAAO,CAAC,eAAe,CAAC;CAmO5B"}
    \ No newline at end of file
    +{"version":3,"file":"form-handler.d.ts","sourceRoot":"","sources":["../../../src/triggers/handlers/form-handler.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAgB,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,WAAW,EACX,eAAe,EACf,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAwMpD,qBAAa,WAAY,SAAQ,kBAAkB,CAAC,gBAAgB,CAAC;IACnE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAU;IAE3C,QAAQ,CAAC,YAAY,EAAE,0BAA0B,CAG/C;IAEF,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;OAAmB;IAEjC,OAAO,CACX,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,QAAQ,EAClB,WAAW,CAAC,EAAE,eAAe,GAC5B,OAAO,CAAC,eAAe,CAAC;CA0O5B"}
    \ No newline at end of file
    
  • dist/triggers/handlers/form-handler.js+5 0 modified
    @@ -194,6 +194,9 @@ class FormHandler extends base_handler_1.BaseTriggerHandler {
                 if (!validation.valid) {
                     return this.errorResponse(input, `SSRF protection: ${validation.reason}`, startTime);
                 }
    +            const pinned = validation.address && validation.family
    +                ? SSRFProtection.createPinnedAgents(validation.address, validation.family)
    +                : undefined;
                 const formData = new form_data_1.default();
                 const warnings = [];
                 for (const fieldDef of formFieldDefs) {
    @@ -316,6 +319,8 @@ class FormHandler extends base_handler_1.BaseTriggerHandler {
                     timeout: input.timeout || (input.waitForResponse !== false ? 120000 : 30000),
                     validateStatus: (status) => status < 500,
                     maxRedirects: 0,
    +                httpAgent: pinned?.httpAgent,
    +                httpsAgent: pinned?.httpsAgent,
                 };
                 const response = await axios_1.default.request(config);
                 const result = this.normalizeResponse(response.data, input, startTime, {
    
  • dist/triggers/handlers/form-handler.js.map+1 1 modified
    @@ -1 +1 @@
    -{"version":3,"file":"form-handler.js","sourceRoot":"","sources":["../../../src/triggers/handlers/form-handler.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    +{"version":3,"file":"form-handler.js","sourceRoot":"","sources":["../../../src/triggers/handlers/form-handler.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    
  • dist/utils/ssrf-protection.d.ts+14 4 modified
    @@ -1,9 +1,19 @@
    +import http from 'http';
    +import https from 'https';
    +export interface PinnedAgents {
    +    httpAgent: http.Agent;
    +    httpsAgent: https.Agent;
    +}
    +export interface WebhookUrlValidationResult {
    +    valid: boolean;
    +    reason?: string;
    +    address?: string;
    +    family?: 4 | 6;
    +}
     export declare class SSRFProtection {
         private static isPrivateOrMappedIpv6;
    -    static validateWebhookUrl(urlString: string): Promise<{
    -        valid: boolean;
    -        reason?: string;
    -    }>;
    +    static validateWebhookUrl(urlString: string): Promise<WebhookUrlValidationResult>;
    +    static createPinnedAgents(address: string, family: 4 | 6): PinnedAgents;
         static validateUrlSync(urlString: string): {
             valid: boolean;
             reason?: string;
    
  • dist/utils/ssrf-protection.d.ts.map+1 1 modified
    @@ -1 +1 @@
    -{"version":3,"file":"ssrf-protection.d.ts","sourceRoot":"","sources":["../../src/utils/ssrf-protection.ts"],"names":[],"mappings":"AAqDA,qBAAa,cAAc;IAgBzB,OAAO,CAAC,MAAM,CAAC,qBAAqB;WAqDvB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1D,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAC;IAsHF,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CA0D/E"}
    \ No newline at end of file
    +{"version":3,"file":"ssrf-protection.d.ts","sourceRoot":"","sources":["../../src/utils/ssrf-protection.ts"],"names":[],"mappings":"AAGA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CAChB;AAkDD,qBAAa,cAAc;IAgBzB,OAAO,CAAC,MAAM,CAAC,qBAAqB;WAqDvB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAqHvF,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,YAAY;IAkDvE,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CA0D/E"}
    \ No newline at end of file
    
  • dist/utils/ssrf-protection.js+36 4 modified
    @@ -1,9 +1,14 @@
     "use strict";
    +var __importDefault = (this && this.__importDefault) || function (mod) {
    +    return (mod && mod.__esModule) ? mod : { "default": mod };
    +};
     Object.defineProperty(exports, "__esModule", { value: true });
     exports.SSRFProtection = void 0;
     const url_1 = require("url");
     const promises_1 = require("dns/promises");
     const net_1 = require("net");
    +const http_1 = __importDefault(require("http"));
    +const https_1 = __importDefault(require("https"));
     const logger_1 = require("./logger");
     const CLOUD_METADATA = new Set([
         '169.254.169.254',
    @@ -64,9 +69,11 @@ class SSRFProtection {
                     return { valid: false, reason: 'Cloud metadata endpoint blocked' };
                 }
                 let resolvedIP;
    +            let resolvedFamily;
                 try {
    -                const { address } = await (0, promises_1.lookup)(hostname);
    +                const { address, family } = await (0, promises_1.lookup)(hostname);
                     resolvedIP = address;
    +                resolvedFamily = family === 6 ? 6 : 4;
                     logger_1.logger.debug('DNS resolved for SSRF check', { hostname, resolvedIP, mode });
                 }
                 catch (error) {
    @@ -89,7 +96,7 @@ class SSRFProtection {
                         hostname,
                         resolvedIP
                     });
    -                return { valid: true };
    +                return { valid: true, address: resolvedIP, family: resolvedFamily };
                 }
                 const isLocalhost = LOCALHOST_PATTERNS.has(hostname) ||
                     resolvedIP === '::1' ||
    @@ -103,7 +110,7 @@ class SSRFProtection {
                 }
                 if (mode === 'moderate' && isLocalhost) {
                     logger_1.logger.info('Localhost webhook allowed (moderate mode)', { hostname, resolvedIP });
    -                return { valid: true };
    +                return { valid: true, address: resolvedIP, family: resolvedFamily };
                 }
                 if (PRIVATE_IP_RANGES.some(regex => regex.test(resolvedIP))) {
                     logger_1.logger.warn('SSRF blocked: Private IP address', { hostname, resolvedIP, mode });
    @@ -122,12 +129,37 @@ class SSRFProtection {
                     });
                     return { valid: false, reason: 'IPv6 private address not allowed' };
                 }
    -            return { valid: true };
    +            return { valid: true, address: resolvedIP, family: resolvedFamily };
             }
             catch (error) {
                 return { valid: false, reason: 'Invalid URL format' };
             }
         }
    +    static createPinnedAgents(address, family) {
    +        const pinnedLookup = (_hostname, options, callback) => {
    +            if (options && options.all) {
    +                callback(null, [{ address, family }]);
    +            }
    +            else {
    +                callback(null, address, family);
    +            }
    +        };
    +        const httpAgent = new http_1.default.Agent({ keepAlive: false });
    +        const httpsAgent = new https_1.default.Agent({ keepAlive: false });
    +        const wrap = (agent) => {
    +            const proto = Object.getPrototypeOf(agent);
    +            const original = proto.createConnection;
    +            agent.createConnection = function (options, cb) {
    +                return original.call(this, { ...options, lookup: pinnedLookup }, cb);
    +            };
    +            agent.options = { ...(agent.options || {}), lookup: pinnedLookup };
    +            return agent;
    +        };
    +        return {
    +            httpAgent: wrap(httpAgent),
    +            httpsAgent: wrap(httpsAgent),
    +        };
    +    }
         static validateUrlSync(urlString) {
             if (typeof urlString !== 'string' || urlString.includes('#')) {
                 return { valid: false, reason: 'URL fragments are not allowed' };
    
  • dist/utils/ssrf-protection.js.map+1 1 modified
    @@ -1 +1 @@
    -{"version":3,"file":"ssrf-protection.js","sourceRoot":"","sources":["../../src/utils/ssrf-protection.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    +{"version":3,"file":"ssrf-protection.js","sourceRoot":"","sources":["../../src/utils/ssrf-protection.ts"],"names":[],"mappings":"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"}
    \ No newline at end of file
    
  • docs/HTTP_DEPLOYMENT.md+1 1 modified
    @@ -620,7 +620,7 @@ AUTH_RATE_LIMIT_MAX=20
     
     ### SSRF Protection
     
    -Prevents Server-Side Request Forgery attacks when using webhook triggers:
    +Prevents Server-Side Request Forgery attacks. The same gate applies to webhook trigger URLs (chat, form, generic webhook), the n8n API client base URL (`N8N_API_URL`), and per-request URLs supplied via the `x-n8n-url` header in multi-tenant mode.
     
     **Three Security Modes:**
     
    
  • docs/N8N_DEPLOYMENT.md+4 0 modified
    @@ -60,6 +60,7 @@ export N8N_MODE=true
     export MCP_MODE=http                       # Required for HTTP mode
     export N8N_API_URL=http://localhost:5678  # Your n8n instance URL
     export N8N_API_KEY=your-api-key-here       # Your n8n API key
    +export WEBHOOK_SECURITY_MODE=moderate      # Required when N8N_API_URL is localhost or RFC1918
     export MCP_AUTH_TOKEN=test-token-minimum-32-chars-long
     export AUTH_TOKEN=test-token-minimum-32-chars-long  # Same value as MCP_AUTH_TOKEN
     export PORT=3001
    @@ -86,6 +87,7 @@ curl http://localhost:3001/mcp
     | `MCP_MODE` | Yes | Enables HTTP mode for n8n MCP Client | `http` |
     | `N8N_API_URL` | Yes* | URL of your n8n instance | `http://localhost:5678` |
     | `N8N_API_KEY` | Yes* | n8n API key for workflow management | `n8n_api_xxx...` |
    +| `WEBHOOK_SECURITY_MODE` | No | SSRF gate (`strict` default, `moderate`, `permissive`). Set to `moderate` when `N8N_API_URL` is localhost or an RFC1918 host on the same network. | `moderate` |
     | `MCP_AUTH_TOKEN` | Yes | Authentication token for MCP requests (min 32 chars) | `secure-random-32-char-token` |
     | `AUTH_TOKEN` | Yes | **MUST match MCP_AUTH_TOKEN exactly** | `secure-random-32-char-token` |
     | `PORT` | No | Port for the HTTP server | `3000` (default) |
    @@ -135,6 +137,7 @@ docker run -d \
       -e MCP_MODE=http \
       -e N8N_API_URL=http://n8n:5678 \
       -e N8N_API_KEY=your-n8n-api-key \
    +  -e WEBHOOK_SECURITY_MODE=permissive \
       -e MCP_AUTH_TOKEN=$AUTH_TOKEN \
       -e AUTH_TOKEN=$AUTH_TOKEN \
       -e LOG_LEVEL=info \
    @@ -183,6 +186,7 @@ Environment="N8N_MODE=true"
     Environment="MCP_MODE=http"
     Environment="N8N_API_URL=http://localhost:5678"
     Environment="N8N_API_KEY=your-n8n-api-key"
    +Environment="WEBHOOK_SECURITY_MODE=moderate"
     Environment="MCP_AUTH_TOKEN=your-secure-token-32-chars-min"
     Environment="AUTH_TOKEN=your-secure-token-32-chars-min"
     Environment="PORT=3000"
    
  • docs/SECURITY_HARDENING.md+1 0 modified
    @@ -10,6 +10,7 @@ Whoever has access to the MCP session effectively has the same privileges as the
     |---|---|---|
     | `AUTH_TOKEN` | Required for HTTP mode. Use a strong random value (min 32 chars). | `openssl rand -base64 32` |
     | `DISABLED_TOOLS` | Comma-separated list of MCP tools to disable. | `n8n_create_workflow,n8n_test_workflow` |
    +| `WEBHOOK_SECURITY_MODE` | SSRF gate applied to webhook trigger URLs, the n8n API client (`N8N_API_URL`), and per-request URLs from the `x-n8n-url` header. Default `strict` blocks localhost, RFC1918, and cloud metadata endpoints. Use `moderate` to allow localhost (e.g. `http://localhost:5678`) while still blocking RFC1918 and metadata. `permissive` allows RFC1918 too — only suitable when n8n-mcp and n8n share a private Docker/Kubernetes network. Cloud metadata endpoints (169.254.169.254, metadata.google.internal, etc.) are blocked in all modes. | `moderate` |
     
     ## Restricting Workflow Capabilities
     
    
  • docs/SELF_HOSTING.md+2 2 modified
    @@ -172,7 +172,7 @@ Add to Claude Desktop config:
     
     ### Local n8n Instance Configuration
     
    -If you're running n8n locally (e.g., `http://localhost:5678` or Docker), you need to allow localhost webhooks:
    +If you're running n8n locally (e.g., `http://localhost:5678` or Docker), you need to allow localhost in the SSRF gate. This applies to both webhook triggers and the n8n API client (`N8N_API_URL`):
     
     ```json
     {
    @@ -194,7 +194,7 @@ If you're running n8n locally (e.g., `http://localhost:5678` or Docker), you nee
     }
     ```
     
    -> ⚠️ **Important:** Set `WEBHOOK_SECURITY_MODE=moderate` to allow webhooks to your local n8n instance. This is safe for local development while still blocking private networks and cloud metadata.
    +> ⚠️ **Important:** Set `WEBHOOK_SECURITY_MODE=moderate` whenever `N8N_API_URL` points at localhost or `host.docker.internal`. The same SSRF gate covers webhook triggers and the n8n API client; default `strict` mode rejects loopback addresses for both. `moderate` allows localhost while still blocking RFC1918 private networks and cloud metadata.
     
     **Important:** The `-i` flag is required for MCP stdio communication.
     
    
  • package.json+1 1 modified
    @@ -1,6 +1,6 @@
     {
       "name": "n8n-mcp",
    -  "version": "2.50.1",
    +  "version": "2.50.2",
       "description": "Integration between n8n workflow automation and Model Context Protocol (MCP)",
       "main": "dist/index.js",
       "types": "dist/index.d.ts",
    
  • src/services/n8n-api-client.ts+60 5 modified
    @@ -40,6 +40,7 @@ import {
       cleanSettingsForVersion,
       getCachedVersion,
     } from './n8n-version';
    +import type { PinnedAgents } from '../utils/ssrf-protection';
     
     export interface N8nApiClientConfig {
       baseUrl: string;
    @@ -54,6 +55,8 @@ export class N8nApiClient {
       private baseUrl: string;
       private versionInfo: N8nVersionInfo | null = null;
       private versionPromise: Promise<N8nVersionInfo | null> | null = null;
    +  // SECURITY (GHSA-cmrh-wvq6-wm9r): cached pinned transport agents.
    +  private pinnedAgentsPromise: Promise<PinnedAgents> | null = null;
     
       constructor(config: N8nApiClientConfig) {
         const { baseUrl, apiKey, timeout = 30000, maxRetries = 3 } = config;
    @@ -89,11 +92,19 @@ export class N8nApiClient {
             'X-N8N-API-KEY': apiKey,
             'Content-Type': 'application/json',
           },
    +      // SECURITY (GHSA-cmrh-wvq6-wm9r): no redirect-following on the
    +      // authenticated client; pinned agent neutralizes cross-host hops anyway.
    +      maxRedirects: 0,
         });
     
    -    // Request interceptor for logging
    +    // Request interceptor for logging + transport pinning
         this.client.interceptors.request.use(
    -      (config: InternalAxiosRequestConfig) => {
    +      async (config: InternalAxiosRequestConfig) => {
    +        // SECURITY (GHSA-cmrh-wvq6-wm9r): pin transport to validated IP.
    +        const agents = await this.getPinnedAgents();
    +        config.httpAgent = agents.httpAgent;
    +        config.httpsAgent = agents.httpsAgent;
    +
             // Redact request body for credential endpoints to prevent secret leakage
             const isSensitive = config.url?.includes('/credentials') && config.method !== 'get';
             logger.debug(`n8n API Request: ${config.method?.toUpperCase()} ${config.url}`, {
    @@ -122,6 +133,34 @@ export class N8nApiClient {
         );
       }
     
    +  /**
    +   * Resolve the configured baseUrl once and return HTTP/HTTPS agents that
    +   * pin every connection to the validated IP.
    +   *
    +   * @security GHSA-cmrh-wvq6-wm9r — without this, axios performs an
    +   * independent DNS lookup on every request, opening a TOCTOU window.
    +   */
    +  private getPinnedAgents(): Promise<PinnedAgents> {
    +    if (!this.pinnedAgentsPromise) {
    +      const promise = (async () => {
    +        const { SSRFProtection } = await import('../utils/ssrf-protection');
    +        const validation = await SSRFProtection.validateWebhookUrl(this.baseUrl);
    +        if (!validation.valid || !validation.address || !validation.family) {
    +          throw new Error(`SSRF protection: ${validation.reason || 'baseUrl rejected'}`);
    +        }
    +        return SSRFProtection.createPinnedAgents(validation.address, validation.family);
    +      })();
    +      // Reset on rejection so transient DNS failures don't brick the client.
    +      promise.catch(() => {
    +        if (this.pinnedAgentsPromise === promise) {
    +          this.pinnedAgentsPromise = null;
    +        }
    +      });
    +      this.pinnedAgentsPromise = promise;
    +    }
    +    return this.pinnedAgentsPromise;
    +  }
    +
       /**
        * Get the n8n version, fetching it if not already cached.
        * Uses promise-based locking to prevent concurrent requests.
    @@ -152,7 +191,11 @@ export class N8nApiClient {
        * Internal method to fetch version once
        */
       private async fetchVersionOnce(): Promise<N8nVersionInfo | null> {
    -    return getCachedVersion(this.baseUrl) ?? await fetchN8nVersion(this.baseUrl);
    +    const cached = getCachedVersion(this.baseUrl);
    +    if (cached) return cached;
    +    // SECURITY (GHSA-cmrh-wvq6-wm9r): reuse the validated transport agents.
    +    const agents = await this.getPinnedAgents();
    +    return await fetchN8nVersion(this.baseUrl, agents);
       }
     
       /**
    @@ -169,9 +212,14 @@ export class N8nApiClient {
           const baseUrl = this.client.defaults.baseURL || '';
           const healthzUrl = baseUrl.replace(/\/api\/v\d+\/?$/, '') + '/healthz';
     
    +      // SECURITY (GHSA-cmrh-wvq6-wm9r): pin transport for the unauthenticated probe.
    +      const agents = await this.getPinnedAgents();
           const response = await axios.get(healthzUrl, {
             timeout: 5000,
    -        validateStatus: (status) => status < 500
    +        validateStatus: (status) => status < 500,
    +        maxRedirects: 0,
    +        httpAgent: agents.httpAgent,
    +        httpsAgent: agents.httpsAgent,
           });
     
           // Also fetch version info (will be cached)
    @@ -416,7 +464,7 @@ export class N8nApiClient {
           // Extract path from webhook URL
           const url = new URL(webhookUrl);
           const webhookPath = url.pathname;
    -      
    +
           // Make request directly to webhook endpoint
           const config: AxiosRequestConfig = {
             method: httpMethod,
    @@ -432,12 +480,19 @@ export class N8nApiClient {
             timeout: waitForResponse ? 120000 : 30000,
           };
     
    +      // SECURITY (GHSA-cmrh-wvq6-wm9r): pin transport to validated IP.
    +      const pinned = validation.address && validation.family
    +        ? SSRFProtection.createPinnedAgents(validation.address, validation.family)
    +        : undefined;
    +
           // Create a new axios instance for webhook requests to avoid API interceptors
           const webhookClient = axios.create({
             baseURL: new URL('/', webhookUrl).toString(),
             validateStatus: (status: number) => status < 500, // Don't throw on 4xx
             // SECURITY (GHSA-8g7g-hmwm-6rv2): no redirect-following on validated URLs.
             maxRedirects: 0,
    +        httpAgent: pinned?.httpAgent,
    +        httpsAgent: pinned?.httpsAgent,
           });
     
           const response = await webhookClient.request(config);
    
  • src/services/n8n-version.ts+9 1 modified
    @@ -19,6 +19,7 @@
     import axios from 'axios';
     import { logger } from '../utils/logger';
     import { N8nVersionInfo, N8nSettingsResponse } from '../types/n8n-api';
    +import type { PinnedAgents } from '../utils/ssrf-protection';
     
     // Cache version info per base URL with TTL to handle server upgrades
     interface CachedVersion {
    @@ -119,7 +120,10 @@ export function getSupportedSettingsProperties(version: N8nVersionInfo): Set<str
      * Note: There's a security concern about this being unauthenticated (see n8n community),
      * but it's the only reliable way to get version info.
      */
    -export async function fetchN8nVersion(baseUrl: string): Promise<N8nVersionInfo | null> {
    +export async function fetchN8nVersion(
    +  baseUrl: string,
    +  pinnedAgents?: PinnedAgents
    +): Promise<N8nVersionInfo | null> {
       // Check cache first (with TTL)
       const cached = versionCache.get(baseUrl);
       if (cached && Date.now() - cached.fetchedAt < VERSION_CACHE_TTL_MS) {
    @@ -134,9 +138,13 @@ export async function fetchN8nVersion(baseUrl: string): Promise<N8nVersionInfo |
     
         logger.debug(`Fetching n8n version from ${settingsUrl}`);
     
    +    // SECURITY (GHSA-cmrh-wvq6-wm9r): pin transport when caller supplied agents.
         const response = await axios.get<N8nSettingsResponse>(settingsUrl, {
           timeout: 5000,
           validateStatus: (status: number) => status < 500,
    +      maxRedirects: 0,
    +      httpAgent: pinnedAgents?.httpAgent,
    +      httpsAgent: pinnedAgents?.httpsAgent,
         });
     
         if (response.status === 200 && response.data) {
    
  • src/triggers/handlers/chat-handler.ts+7 0 modified
    @@ -89,6 +89,11 @@ export class ChatHandler extends BaseTriggerHandler<ChatTriggerInput> {
             return this.errorResponse(input, `SSRF protection: ${validation.reason}`, startTime);
           }
     
    +      // SECURITY (GHSA-cmrh-wvq6-wm9r): pin transport to validated IP.
    +      const pinned = validation.address && validation.family
    +        ? SSRFProtection.createPinnedAgents(validation.address, validation.family)
    +        : undefined;
    +
           // Generate or use provided session ID
           const sessionId = input.sessionId || generateSessionId();
     
    @@ -114,6 +119,8 @@ export class ChatHandler extends BaseTriggerHandler<ChatTriggerInput> {
             validateStatus: (status) => status < 500,
             // SECURITY (GHSA-8g7g-hmwm-6rv2): no redirect-following on validated URLs.
             maxRedirects: 0,
    +        httpAgent: pinned?.httpAgent,
    +        httpsAgent: pinned?.httpsAgent,
           };
     
           // Make the request (sync mode - no streaming)
    
  • src/triggers/handlers/form-handler.ts+7 0 modified
    @@ -267,6 +267,11 @@ export class FormHandler extends BaseTriggerHandler<FormTriggerInput> {
             return this.errorResponse(input, `SSRF protection: ${validation.reason}`, startTime);
           }
     
    +      // SECURITY (GHSA-cmrh-wvq6-wm9r): pin transport to validated IP.
    +      const pinned = validation.address && validation.family
    +        ? SSRFProtection.createPinnedAgents(validation.address, validation.family)
    +        : undefined;
    +
           // Build multipart/form-data (required by n8n form triggers)
           const formData = new FormData();
           const warnings: string[] = [];
    @@ -407,6 +412,8 @@ export class FormHandler extends BaseTriggerHandler<FormTriggerInput> {
             validateStatus: (status) => status < 500,
             // SECURITY (GHSA-8g7g-hmwm-6rv2): no redirect-following on validated URLs.
             maxRedirects: 0,
    +        httpAgent: pinned?.httpAgent,
    +        httpsAgent: pinned?.httpsAgent,
           };
     
           // Make the request
    
  • src/utils/ssrf-protection.ts+68 8 modified
    @@ -1,8 +1,22 @@
     import { URL } from 'url';
     import { lookup } from 'dns/promises';
     import { isIPv6 } from 'net';
    +import http from 'http';
    +import https from 'https';
     import { logger } from './logger';
     
    +export interface PinnedAgents {
    +  httpAgent: http.Agent;
    +  httpsAgent: https.Agent;
    +}
    +
    +export interface WebhookUrlValidationResult {
    +  valid: boolean;
    +  reason?: string;
    +  address?: string;
    +  family?: 4 | 6;
    +}
    +
     /**
      * SSRF Protection Utility with Configurable Security Modes
      *
    @@ -120,10 +134,7 @@ export class SSRFProtection {
        * const result = await SSRFProtection.validateWebhookUrl('http://localhost:5678');
        * // { valid: true }
        */
    -  static async validateWebhookUrl(urlString: string): Promise<{
    -    valid: boolean;
    -    reason?: string
    -  }> {
    +  static async validateWebhookUrl(urlString: string): Promise<WebhookUrlValidationResult> {
         try {
           const url = new URL(urlString);
           const mode: SecurityMode = (process.env.WEBHOOK_SECURITY_MODE || 'strict') as SecurityMode;
    @@ -149,9 +160,11 @@ export class SSRFProtection {
           // Step 3: Resolve DNS to get actual IP address
           // This prevents DNS rebinding attacks where hostname resolves to different IPs
           let resolvedIP: string;
    +      let resolvedFamily: 4 | 6;
           try {
    -        const { address } = await lookup(hostname);
    +        const { address, family } = await lookup(hostname);
             resolvedIP = address;
    +        resolvedFamily = family === 6 ? 6 : 4;
     
             logger.debug('DNS resolved for SSRF check', { hostname, resolvedIP, mode });
           } catch (error) {
    @@ -180,7 +193,7 @@ export class SSRFProtection {
               hostname,
               resolvedIP
             });
    -        return { valid: true };
    +        return { valid: true, address: resolvedIP, family: resolvedFamily };
           }
     
           // Check if target is localhost
    @@ -200,7 +213,7 @@ export class SSRFProtection {
           // MODE: moderate - Allow localhost, block private IPs
           if (mode === 'moderate' && isLocalhost) {
             logger.info('Localhost webhook allowed (moderate mode)', { hostname, resolvedIP });
    -        return { valid: true };
    +        return { valid: true, address: resolvedIP, family: resolvedFamily };
           }
     
           // Step 6: Check private IPv4 ranges (strict & moderate modes)
    @@ -224,12 +237,59 @@ export class SSRFProtection {
             return { valid: false, reason: 'IPv6 private address not allowed' };
           }
     
    -      return { valid: true };
    +      return { valid: true, address: resolvedIP, family: resolvedFamily };
         } catch (error) {
           return { valid: false, reason: 'Invalid URL format' };
         }
       }
     
    +  /**
    +   * Build a pair of HTTP/HTTPS agents that resolve every hostname to a fixed
    +   * IP via a custom dns lookup callback. Pair with {@link validateWebhookUrl}
    +   * so the transport connects to the IP that was just validated, regardless
    +   * of what subsequent DNS queries would return.
    +   *
    +   * @security GHSA-cmrh-wvq6-wm9r
    +   */
    +  static createPinnedAgents(address: string, family: 4 | 6): PinnedAgents {
    +    const pinnedLookup = (
    +      _hostname: string,
    +      options: any,
    +      callback: any
    +    ): void => {
    +      // Node's lookup contract: when options.all is true, callback receives
    +      // an array of {address, family}; otherwise (address, family).
    +      // validateWebhookUrl resolved a single IP — return that for both shapes.
    +      if (options && options.all) {
    +        callback(null, [{ address, family }]);
    +      } else {
    +        callback(null, address, family);
    +      }
    +    };
    +
    +    const httpAgent = new http.Agent({ keepAlive: false });
    +    const httpsAgent = new https.Agent({ keepAlive: false });
    +
    +    // http.Agent stores agent-level options but does NOT forward `lookup` to
    +    // net.createConnection. Override createConnection so every socket gets
    +    // the pinned resolver.
    +    const wrap = <A extends http.Agent>(agent: A): A => {
    +      const proto = Object.getPrototypeOf(agent);
    +      const original = proto.createConnection;
    +      (agent as any).createConnection = function (options: any, cb: any) {
    +        return original.call(this, { ...options, lookup: pinnedLookup }, cb);
    +      };
    +      // Expose for tests; not load-bearing at runtime.
    +      (agent as any).options = { ...((agent as any).options || {}), lookup: pinnedLookup };
    +      return agent;
    +    };
    +
    +    return {
    +      httpAgent: wrap(httpAgent),
    +      httpsAgent: wrap(httpsAgent),
    +    };
    +  }
    +
       /**
        * Synchronous URL validation with no DNS resolution.
        *
    
  • tests/setup/test-env.ts+5 0 modified
    @@ -73,6 +73,11 @@ function setTestDefaults(): void {
         // API
         N8N_API_URL: 'http://localhost:3001/mock-api',
         N8N_API_KEY: 'test-api-key-12345',
    +
    +    // Tests target localhost. Match the trigger-handler test convention
    +    // (permissive mode) so the global SSRF gate does not reject the
    +    // operator-configured base URL.
    +    WEBHOOK_SECURITY_MODE: 'permissive',
         
         // Server
         PORT: '3001',
    
  • tests/unit/http-server/ssrf-gate.test.ts+2 0 modified
    @@ -131,6 +131,8 @@ describe('HTTP Server instance URL validation (GHSA-4ggg-h7ph-26qr)', () => {
         process.env = { ...originalEnv };
         process.env.AUTH_TOKEN = TEST_AUTH_TOKEN;
         process.env.PORT = '0';
    +    // These tests assert default-strict behavior; clear any test-env override.
    +    delete process.env.WEBHOOK_SECURITY_MODE;
     
         consoleLogSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
         consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
    
  • tests/unit/services/n8n-api-client.test.ts+28 13 modified
    @@ -129,15 +129,18 @@ describe('N8nApiClient', () => {
       describe('constructor', () => {
         it('should create client with default configuration', () => {
           client = new N8nApiClient(defaultConfig);
    -      
    -      expect(axios.create).toHaveBeenCalledWith({
    +
    +      expect(axios.create).toHaveBeenCalledWith(expect.objectContaining({
             baseURL: 'https://n8n.example.com/api/v1',
             timeout: 30000,
             headers: {
               'X-N8N-API-KEY': 'test-api-key',
               'Content-Type': 'application/json',
             },
    -      });
    +        // SECURITY (GHSA-cmrh-wvq6-wm9r): no redirect-following on the
    +        // authenticated client.
    +        maxRedirects: 0,
    +      }));
         });
     
         it('should handle baseUrl without /api/v1', () => {
    @@ -202,10 +205,14 @@ describe('N8nApiClient', () => {
           
           expect(axios.get).toHaveBeenCalledWith(
             'https://n8n.example.com/healthz',
    -        {
    +        expect.objectContaining({
               timeout: 5000,
               validateStatus: expect.any(Function),
    -        }
    +          maxRedirects: 0,
    +          // SECURITY (GHSA-cmrh-wvq6-wm9r): pinned transport agents.
    +          httpAgent: expect.any(Object),
    +          httpsAgent: expect.any(Object),
    +        })
           );
           expect(result).toEqual({ status: 'ok', features: {} });
         });
    @@ -908,11 +915,14 @@ describe('N8nApiClient', () => {
           
           const result = await client.triggerWebhook(webhookRequest);
           
    -      expect(axios.create).toHaveBeenCalledWith({
    +      expect(axios.create).toHaveBeenCalledWith(expect.objectContaining({
             baseURL: 'https://n8n.example.com/',
             validateStatus: expect.any(Function),
             maxRedirects: 0,
    -      });
    +        // SECURITY (GHSA-cmrh-wvq6-wm9r): pinned transport agents.
    +        httpAgent: expect.any(Object),
    +        httpsAgent: expect.any(Object),
    +      }));
     
           expect(result).toEqual(response);
         });
    @@ -1679,21 +1689,26 @@ describe('N8nApiClient', () => {
           client = new N8nApiClient(defaultConfig);
         });
     
    -    it('should log requests', () => {
    -      const config = { 
    -        method: 'get', 
    +    it('should log requests', async () => {
    +      const config = {
    +        method: 'get',
             url: '/workflows',
             params: { limit: 10 },
             data: undefined,
           };
    -      
    -      const result = requestInterceptor(config);
    -      
    +
    +      const result = await requestInterceptor(config);
    +
           expect(logger.debug).toHaveBeenCalledWith(
             'n8n API Request: GET /workflows',
             { params: { limit: 10 }, data: undefined }
           );
    +      // SECURITY (GHSA-cmrh-wvq6-wm9r): interceptor returns the config with
    +      // pinned agents attached. Compare identity rather than expecting the
    +      // original object back unchanged.
           expect(result).toBe(config);
    +      expect(result.httpAgent).toBeDefined();
    +      expect(result.httpsAgent).toBeDefined();
         });
     
         it('should log successful responses', () => {
    
  • tests/unit/triggers/handlers/chat-handler.test.ts+7 1 modified
    @@ -20,7 +20,13 @@ vi.mock('../../../../src/config/n8n-api', () => ({
     // Mock SSRFProtection
     vi.mock('../../../../src/utils/ssrf-protection', () => ({
       SSRFProtection: {
    -    validateWebhookUrl: vi.fn(async () => ({ valid: true, reason: '' })),
    +    validateWebhookUrl: vi.fn(async () => ({
    +      valid: true,
    +      reason: '',
    +      address: '8.8.8.8',
    +      family: 4,
    +    })),
    +    createPinnedAgents: vi.fn(() => ({ httpAgent: {}, httpsAgent: {} })),
       },
     }));
     
    
  • tests/unit/triggers/handlers/form-handler.test.ts+7 1 modified
    @@ -21,7 +21,13 @@ vi.mock('../../../../src/config/n8n-api', () => ({
     // Mock SSRFProtection
     vi.mock('../../../../src/utils/ssrf-protection', () => ({
       SSRFProtection: {
    -    validateWebhookUrl: vi.fn(async () => ({ valid: true, reason: '' })),
    +    validateWebhookUrl: vi.fn(async () => ({
    +      valid: true,
    +      reason: '',
    +      address: '8.8.8.8',
    +      family: 4,
    +    })),
    +    createPinnedAgents: vi.fn(() => ({ httpAgent: {}, httpsAgent: {} })),
       },
     }));
     
    
  • tests/unit/triggers/handlers/webhook-handler.test.ts+7 1 modified
    @@ -19,7 +19,13 @@ vi.mock('../../../../src/config/n8n-api', () => ({
     // Mock SSRFProtection
     vi.mock('../../../../src/utils/ssrf-protection', () => ({
       SSRFProtection: {
    -    validateWebhookUrl: vi.fn(async () => ({ valid: true, reason: '' })),
    +    validateWebhookUrl: vi.fn(async () => ({
    +      valid: true,
    +      reason: '',
    +      address: '8.8.8.8',
    +      family: 4,
    +    })),
    +    createPinnedAgents: vi.fn(() => ({ httpAgent: {}, httpsAgent: {} })),
       },
     }));
     
    
  • tests/unit/utils/ssrf-protection.test.ts+98 0 modified
    @@ -692,4 +692,102 @@ describe('SSRFProtection', () => {
           });
         });
       });
    +
    +  // SECURITY (GHSA-cmrh-wvq6-wm9r): pinned-transport regression tests.
    +  describe('Transport pinning', () => {
    +    beforeEach(() => {
    +      delete process.env.WEBHOOK_SECURITY_MODE;
    +    });
    +
    +    it('should return resolved address and family on success', async () => {
    +      vi.mocked(dns.lookup).mockResolvedValue({ address: '93.184.216.34', family: 4 } as any);
    +      const result = await SSRFProtection.validateWebhookUrl('https://example.com');
    +      expect(result.valid).toBe(true);
    +      expect(result.address).toBe('93.184.216.34');
    +      expect(result.family).toBe(4);
    +    });
    +
    +    it('should return IPv6 family when hostname resolves to v6', async () => {
    +      vi.mocked(dns.lookup).mockResolvedValue({ address: '2606:4700:4700::1111', family: 6 } as any);
    +      const result = await SSRFProtection.validateWebhookUrl('https://example.com');
    +      expect(result.valid).toBe(true);
    +      expect(result.address).toBe('2606:4700:4700::1111');
    +      expect(result.family).toBe(6);
    +    });
    +
    +    it('createPinnedAgents lookup returns the pinned IP regardless of hostname', () => {
    +      const { httpAgent, httpsAgent } = SSRFProtection.createPinnedAgents('93.184.216.34', 4);
    +      const httpLookup = (httpAgent as any).options.lookup;
    +      const httpsLookup = (httpsAgent as any).options.lookup;
    +      expect(typeof httpLookup).toBe('function');
    +      expect(typeof httpsLookup).toBe('function');
    +
    +      const captured: Array<{ address: string; family: number }> = [];
    +      httpLookup('rebind.example.test', {}, (_err: any, address: string, family: number) => {
    +        captured.push({ address, family });
    +      });
    +      httpsLookup('different-host.example.test', {}, (_err: any, address: string, family: number) => {
    +        captured.push({ address, family });
    +      });
    +
    +      expect(captured).toEqual([
    +        { address: '93.184.216.34', family: 4 },
    +        { address: '93.184.216.34', family: 4 },
    +      ]);
    +    });
    +
    +    it('pinned lookup ignores subsequent dns.lookup answers', async () => {
    +      // Validator DNS answer (the "good" IP). Subsequent dns.lookup calls
    +      // simulate an attacker-controlled resolver flipping to a private IP —
    +      // the pinned agent's lookup must never consult them.
    +      let dnsCalls = 0;
    +      vi.mocked(dns.lookup).mockImplementation(async () => {
    +        dnsCalls += 1;
    +        return dnsCalls === 1
    +          ? ({ address: '1.1.1.1', family: 4 } as any)
    +          : ({ address: '127.0.0.1', family: 4 } as any);
    +      });
    +
    +      const validation = await SSRFProtection.validateWebhookUrl('https://rebind.example.test');
    +      expect(validation.valid).toBe(true);
    +      expect(validation.address).toBe('1.1.1.1');
    +
    +      const { httpAgent } = SSRFProtection.createPinnedAgents(
    +        validation.address!,
    +        validation.family!
    +      );
    +
    +      const transportCalls: Array<{ address: string; family: number }> = [];
    +      const lookup = (httpAgent as any).options.lookup as Function;
    +      // Two separate "transport-time" calls: pinned lookup must return the
    +      // validated IP both times and must not dispatch to dns.lookup.
    +      lookup('rebind.example.test', {}, (_e: any, addr: string, fam: number) => {
    +        transportCalls.push({ address: addr, family: fam });
    +      });
    +      lookup('rebind.example.test', {}, (_e: any, addr: string, fam: number) => {
    +        transportCalls.push({ address: addr, family: fam });
    +      });
    +
    +      expect(transportCalls).toEqual([
    +        { address: '1.1.1.1', family: 4 },
    +        { address: '1.1.1.1', family: 4 },
    +      ]);
    +      // Validator burned exactly one dns.lookup; the transport burned zero.
    +      expect(dnsCalls).toBe(1);
    +    });
    +
    +    it('agents disable keep-alive so connections do not leak across hosts', () => {
    +      const { httpAgent, httpsAgent } = SSRFProtection.createPinnedAgents('1.2.3.4', 4);
    +      expect((httpAgent as any).keepAlive).toBe(false);
    +      expect((httpsAgent as any).keepAlive).toBe(false);
    +    });
    +
    +    it('does not return address/family on rejection', async () => {
    +      vi.mocked(dns.lookup).mockResolvedValue({ address: '169.254.169.254', family: 4 } as any);
    +      const result = await SSRFProtection.validateWebhookUrl('http://attacker.example');
    +      expect(result.valid).toBe(false);
    +      expect(result.address).toBeUndefined();
    +      expect(result.family).toBeUndefined();
    +    });
    +  });
     });
    

Vulnerability mechanics

AI mechanics synthesis has not run for this CVE yet.

References

5

News mentions

0

No linked articles in our index yet.