High, CVSS 7.0crates.ioPublished
Pingora forwards client-nominated Connection headers to HTTP/1 upstreams, allowing ACL bypass in specific chained deployments
CVE-2026-105299 · GHSA-vx4q-2c55-cvmg
- Affected
- crates.io pingora-proxy >= 0.0.0-0, < 0.9.0
- Fixed in
- 0.9.0· Vendor fix available
- Issue
- Pingora versions prior to 0.9.0 passed the downstream request through `upstream_request_filter` and wrote it to HTTP/1 upstreams 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. This 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…
Recommended action: Upgrade to 0.9.0 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.