CVE-2026-125321: pgEdge Postgres MCP Server rate limit bypass via X-Forwarded-For header spoofing

CVE-2026-125321 · Severity: medium · CVSS 6.5 · Published 2026-11-10

pgEdge Postgres MCP Server provides database query capabilities for AI clients via the Model Context Protocol. An attacker can forge HTTP headers to bypass login rate limiting and make unlimited password attempts against user accounts, or deliberately trigger rate limits against legitimate users to lock them out temporarily.

Technologies: pgEdge Postgres MCP Server. Vendors: pgEdge.

Quick answers

Is CVE-2026-125321 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-125321 being exploited in the wild.
How severe is CVE-2026-125321?
Medium severity, with a CVSS score of 6.5, published 10 November 2026.
Which products and versions are affected?
pgEdge Postgres MCP Server prior to 1.1.0.
Is there a fix for CVE-2026-125321?
Yes: fixed in 1.1.0. Until then: Disable the nondefault HTTP transport, or restrict network access to the HTTP endpoint to trusted reverse proxies only and configure client IP source to use X-Real-IP (the rightmost, infrastructure-appended value) instead of X-Forwarded-For, and set MaxFailedAttemptsBeforeLockout to a non-zero value to enable username-based account lockout. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-125321 attacked?
It is attacked over the network, in a web application.
Am I affected by CVE-2026-125321?
Check whether you run pgEdge Postgres MCP Server at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • Fixed in: 1.1.0

Disable the nondefault HTTP transport, or restrict network access to the HTTP endpoint to trusted reverse proxies only and configure client IP source to use X-Real-IP (the rightmost, infrastructure-appended value) instead of X-Forwarded-For, and set MaxFailedAttemptsBeforeLockout to a non-zero value to enable username-based account lockout.

Technical details

The HTTP authentication middleware trusts the leftmost value of the X-Forwarded-For header to determine the client IP for rate limiting, allowing an unauthenticated attacker to rotate this header value on each login attempt to evade throttling. The published nginx configuration compounds this by appending rather than replacing the header, making the attack work without operator misconfiguration. The account lockout mechanism uses username-keyed tracking and is unaffected, but defaults disable it (MaxFailedAttemptsBeforeLockout: 0), leaving only the bypassable rate limiter.

Affected products

  • pgEdge Postgres MCP Server prior to 1.1.0

Timeline

  • 2026-07-30: disclosed: Issue #204 opened
  • 2026-11-10: patched: Fixed in version 1.1.0

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.