Read the docs

Connection header nomination lets attackers strip headers in Pingora

Priority MEDIUM 40CWE-444Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
High
Impact type
—
Confidentiality · integrity · availability
High · High · None
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA.

Summary

Cloudflare's pingora-proxy crate from 0.1.0 before 0.9.0 forwards the client's Connection header and the headers it nominates to HTTP/1 upstreams, instead of removing them as RFC 9110 requires. A remote, unauthenticated attacker can nominate a header that the application adds, such as X-Forwarded-For, so that an HTTP/1 intermediary honoring Connection strips it before it reaches the origin. This can bypass IP-based authorization on the origin in chained deployments where such an intermediary sits between Pingora and the origin. The issue is tracked as CWE-444.

Written with Claude Haiku 5.5 from the sources below · 2026-10-28

Description from the CNA

Summary Before version 0.9.0, the HTTP/1 upstream path in pingora-proxy passed the downstream request through upstream_request_filter and wrote it to the upstream without removing the client's Connection header, other hop-by-hop headers, or the headers Connection nominated, although RFC 9110 Section 7.6.1 requires intermediaries to remove them. The HTTP/2 upstream path already removed Connection and related HTTP/1-specific headers. A client could therefore nominate a header that the application adds in upstream_request_filter (for example, Connection: keep-alive, X-Forwarded-For). A downstream HTTP/1 intermediary that honors Connection would then strip the Pingora-added header before it reached the origin. Impact Specifically affects chained deployments where an HTTP/1 intermediary between Pingora and the origin processes Connection nominations (for example, Go's net/http/httputil.ReverseProxy) and the origin trusts headers added by that intermediary (for example, X-Forwarded-For for IP-based authorization). A remote, unauthenticated attacker can have those headers removed, potentially bypassing authorization. The reporter demonstrated access to an IP-restricted endpoint using X-Forwarded-For for IP validation on the origin. This is the same class of issue as CVE-2022-31813 in Apache HTTP Server. Note that Cloudflare CDN customers were unaffected, as no such chained deployment as described above exists with internal Pingora services, and Connection headers are sanitized before arriving at Pingora gateways. Mitigation: * Upgrade to pingora 0.9.0 or later. By default, Pingora now removes hop-by-hop and Connection-nominated headers from upstream requests, and rejects requests whose Connection header nominates Host, X-Forwarded-For, X-Forwarded-Host, X-Forwarded-Proto, or a pseudo-header. This is controlled by PeerOptions::http_upstream_request_policy (HttpUpstreamRequestPolicy). Fix commits: https://github.com/cloudflare/pingora/commit/28c18e6b6b04dd0bd937234e5950049e6d74cded , https://github.com/cloudflare/pingora/commit/ca23f1668eca8e78be7ba62ef0edbd458b40eeee * Do not use HttpUpstreamRequestPolicy::preserve() if the origin relies on headers added by Pingora; it restores the old passthrough behavior. * If you cannot upgrade: in upstream_request_filter, remove the Connection header and every header it nominates before adding trusted headers.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00425 37th percentileScored 2026-11-07
Fix Fixed https://github.com/cloudflare/pingora (Cloudflare): 0.9.0

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
Cloudflarehttps://github.com/cloudflare/pingora0.1.0 to before 0.9.00.9.0Patch availableCNA
  • https://github.com/cloudflare/pingora VendorCloudflare Affected 0.1.0 to before 0.9.0 Fixed in 0.9.0 Patch available CNA

CPE names Threatist (inferred) · 1

Inferred from how NVD named this product before; not given by a source.

CPEVersionsRoleVendor
cpe:2.3:a:cloudflare:pingora:*:*:*:*:*:*:*:*——Cloudflare
  • cpe:2.3:a:cloudflare:pingora:*:*:*:*:*:*:*:* Versions — — ·Cloudflare

Remediation

Upgrade the pingora crate to 0.9.0 or later, which removes hop-by-hop and Connection-nominated headers from upstream requests by default. Do not use HttpUpstreamRequestPolicy::preserve() if the origin relies on headers added by Pingora. If you cannot upgrade, remove the Connection header and every header it nominates in upstream_request_filter before adding trusted headers.

Written with Claude Haiku 5.5 from the sources below · 2026-10-28

  • Fix · CNA https://github.com/cloudflare/pingora (Cloudflare) Fixed in 0.9.0

Fixed in the same release

Records fixed by the same vendor advisory or release, as the CNA lists them.

  • Release ·

    Cloudflare https://github.com/cloudflare/pingora 0.9.0

    2 records Highest priority Priority MEDIUM 1 MEDIUM, 1 LOW

    Other records, highest priority first

    • TI-2026-76645 HTTP/2 Host and :authority mismatch in Pingora enables cache poisoningPriority LOW 29

Timeline

  1. 2026-10-20 Threatist record created from CVE-2026-105299
  2. 2026-10-20 Weakness changed · CISA ADP
  3. 2026-10-20 CISA SSVC decision points changed
  4. 2026-10-20 Priority changed: MEDIUM → LOW
  5. 2026-10-21 Alias added: GHSA-r9g2-75m7-w9wg
  6. 2026-10-21 Priority changed: LOW → MEDIUM

References

  • TI-2026-12208 Cloudflare Universal SSL automatically managed CAA RRset supersedes customer-configured CAA records CVSS 4.0HIGH 7.6
  • TI-2025-36979 Cloudflare vite plugin exposes secrets over the built-in dev server CVSS 4.0LOW 2.9
  • TI-2014-08329 Out-of-bounds write in github.com/cloudflare/golz4 CVSS 3.1CRITICAL 9.8
  • TI-2021-02817 Arbitrary filepath traversal via URI injection CVSS 3.1CRITICAL 9.8
  • TI-2023-02843 Out of Bounds Slice index in cfnts leads to remote panic CVSS 3.1HIGH 8.6
  • TI-2026-02435 HTTP Request Smuggling via HTTP/1.0 and Transfer-Encoding Misparsing CVSS 4.0CRITICAL 9.3
See all 69 →

Sources