GHSA-WG4G-395P-MQV3

Vulnerability from github – Published: 2026-04-25 23:35 – Updated: 2026-05-13 13:34
VLAI
Summary
n8n-MCP: Sensitive MCP tool-call arguments logged on authenticated requests in HTTP mode
Details

Impact

When n8n-mcp runs in HTTP transport mode, authenticated MCP tools/call requests had their full arguments and JSON-RPC params written to server logs by the request dispatcher and several sibling code paths before any redaction. When a tool call carries credential material — most notably n8n_manage_credentials.data — the raw values can be persisted in logs.

In deployments where logs are collected, forwarded to external systems, or viewable outside the request trust boundary (shared log storage, SIEM pipelines, support/ops access), this can result in disclosure of:

  • bearer tokens and OAuth credentials sent through n8n_manage_credentials
  • per-tenant API keys and webhook auth headers embedded in tool arguments
  • arbitrary secret-bearing payloads passed to any MCP tool

The issue requires authentication (AUTH_TOKEN accepted by the server), so unauthenticated callers cannot trigger it; the runtime exposure is also reduced by an existing console-silencing layer in HTTP mode, but that layer is fragile and the values are still constructed and passed into the logger. The fix removes the leak at the source.

Impact category: CWE-532 (Insertion of Sensitive Information into Log File). CVSS 3.1 score: 4.3 Medium (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N).

Affected

Deployments running n8n-mcp v2.47.12 or earlier in HTTP transport mode (MCP_MODE=http). The stdio transport short-circuits the relevant log calls and is not affected in practice.

Patched

v2.47.13 and later.

  • npm: npx n8n-mcp@latest (or pin to >= 2.47.13)
  • Docker: docker pull ghcr.io/czlonkowski/n8n-mcp:latest

The patch routes tool-call arguments through a metadata-only summarizer (summarizeToolCallArgs) that records type, top-level key names, and approximate size — never values. The same pattern was adopted earlier for HTTP request bodies in GHSA-pfm2-2mhg-8wpx.

Workarounds

If developers cannot upgrade immediately:

  • Restrict access to the HTTP port (firewall, reverse proxy, or VPN) so only trusted clients can authenticate.
  • Restrict access to server logs (no shared SIEM ingestion, no support read-only access) until the upgrade lands.
  • Switch to stdio transport (MCP_MODE=stdio, the default for CLI invocation), which has no HTTP surface and short-circuits the affected log calls.

Credit

n8n-MCP thanks @Mirr2 (Organization / Jormungandr) for reporting this issue.

Show details on source website

{
  "affected": [
    {
      "package": {
        "ecosystem": "npm",
        "name": "n8n-mcp"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "2.47.13"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [
    "CVE-2026-42282"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-532"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-04-25T23:35:28Z",
    "nvd_published_at": "2026-05-08T20:16:31Z",
    "severity": "MODERATE"
  },
  "details": "### Impact\n\nWhen `n8n-mcp` runs in HTTP transport mode, authenticated MCP `tools/call` requests had their full arguments and JSON-RPC params written to server logs by the request dispatcher and several sibling code paths before any redaction. When a tool call carries credential material \u2014 most notably `n8n_manage_credentials.data` \u2014 the raw values can be persisted in logs.\n\nIn deployments where logs are collected, forwarded to external systems, or viewable outside the request trust boundary (shared log storage, SIEM pipelines, support/ops access), this can result in disclosure of:\n\n- bearer tokens and OAuth credentials sent through `n8n_manage_credentials`\n- per-tenant API keys and webhook auth headers embedded in tool arguments\n- arbitrary secret-bearing payloads passed to any MCP tool\n\nThe issue requires authentication (`AUTH_TOKEN` accepted by the server), so unauthenticated callers cannot trigger it; the runtime exposure is also reduced by an existing console-silencing layer in HTTP mode, but that layer is fragile and the values are still constructed and passed into the logger. The fix removes the leak at the source.\n\nImpact category: **CWE-532** (Insertion of Sensitive Information into Log File). CVSS 3.1 score: **4.3 Medium** (`AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N`).\n\n### Affected\n\nDeployments running n8n-mcp **v2.47.12 or earlier** in HTTP transport mode (`MCP_MODE=http`). The stdio transport short-circuits the relevant log calls and is not affected in practice.\n\n### Patched\n\n**v2.47.13** and later.\n\n- npm: `npx n8n-mcp@latest` (or pin to `\u003e= 2.47.13`)\n- Docker: `docker pull ghcr.io/czlonkowski/n8n-mcp:latest`\n\nThe patch routes tool-call arguments through a metadata-only summarizer (`summarizeToolCallArgs`) that records type, top-level key names, and approximate size \u2014 never values. The same pattern was adopted earlier for HTTP request bodies in GHSA-pfm2-2mhg-8wpx.\n\n### Workarounds\n\nIf developers cannot upgrade immediately:\n\n- Restrict access to the HTTP port (firewall, reverse proxy, or VPN) so only trusted clients can authenticate.\n- Restrict access to server logs (no shared SIEM ingestion, no support read-only access) until the upgrade lands.\n- Switch to stdio transport (`MCP_MODE=stdio`, the default for CLI invocation), which has no HTTP surface and short-circuits the affected log calls.\n\n### Credit\n\nn8n-MCP thanks [@Mirr2](https://github.com/Mirr2) (Organization / Jormungandr) for reporting this issue.",
  "id": "GHSA-wg4g-395p-mqv3",
  "modified": "2026-05-13T13:34:59Z",
  "published": "2026-04-25T23:35:28Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/czlonkowski/n8n-mcp/security/advisories/GHSA-wg4g-395p-mqv3"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-42282"
    },
    {
      "type": "WEB",
      "url": "https://github.com/czlonkowski/n8n-mcp/commit/59b665bda36797823df238aeaf20adb862c9f451"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/czlonkowski/n8n-mcp"
    },
    {
      "type": "WEB",
      "url": "https://github.com/czlonkowski/n8n-mcp/releases/tag/v2.47.13"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N",
      "type": "CVSS_V3"
    }
  ],
  "summary": "n8n-MCP: Sensitive MCP tool-call arguments logged on authenticated requests in HTTP mode"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…