CVE-2026-105299 in Pingora
Zusammenfassung
von VulDB • 20.10.2026
Zusammenfassung
Vor Version 0.9.0 hat der HTTP/1-Upstream-Pfad von pingora-proxy die Downstream-Anfrage über `upstream_request_filter` geleitet und an den Upstream weitergeleitet, ohne den Client-Verbindungsheader (Connection), andere Hop-by-Hop-Header oder die vom Connection-Header benannten Header zu entfernen. Dies steht im Widerspruch zu RFC 9110 Abschnitt 7.6.1, der vorschreibt, dass Intermediaries diese Header entfernen müssen. Der HTTP/2-Upstream-Pfad hat jedoch bereits den Connection-Header und damit verbundene, spezifisch für HTTP/1 vorgesehene Header entfernt. Ein Client konnte daher einen Header benennen, den die Anwendung in `upstream_request_filter` hinzufügt (z. B. Connection: keep-alive, X-Forwarded-For). Ein nachgeschalteter HTTP/1-Intermediary, der dem Connection-Header folgt, würde dann den von Pingora hinzugefügten Header entfernen, bevor dieser das Ursprungssystem erreichte.
Auswirkung
Dies betrifft spezifisch verkettete Bereitstellungen, bei denen ein HTTP/1-Intermediary zwischen Pingora und dem Ursprungssystem die im Connection-Header benannten Header verarbeitet (z. B. Go's `net/http/httputil.ReverseProxy`) und das Ursprungssystem den von diesem Intermediary hinzugefügten Headern vertraut (z. B. X-Forwarded-For für IP-basierte Autorisierung). Ein entfernter, nicht authentifizierter Angreifer kann dazu führen, dass diese Header entfernt werden, was potenziell die Zugriffskontrolle umgeht. Der Melder hat den Zugang zu einem auf IP-Ebene eingeschränkten Endpunkt demonstriert, wobei X-Forwarded-For zur IP-Validierung am Ursprungssystem verwendet wurde. Dies ist dieselbe Art von Problem wie CVE-2022-31813 im Apache HTTP Server.
Beachten Sie, dass Cloudflare CDN-Kunden nicht betroffen waren, da es keine solche verkettete Bereitstellung wie oben beschrieben mit internen Pingora-Diensten gibt und Connection-Header bereinigt werden, bevor sie die Pingora-Gateways erreichen.
Minderung:
* Aktualisieren Sie auf pingora 0.9.0 oder höher. Standardmäßig entfernt Pingora nun Hop-by-Hop-Header sowie vom Connection-Header benannte Header aus Upstream-Anfragen und lehnt Anfragen ab, deren Connection-Header Host, X-Forwarded-For, X-Forwarded-Host, X-Forwarded-Proto oder einen Pseudo-Header benennen. Dies wird durch `PeerOptions::http_upstream_request_policy` (HttpUpstreamRequestPolicy) gesteuert. Fixing Commits: https://github.com/cloudflare/pingora/commit/28c18e6b6b04dd0bd937234e5950049e6d74cded , https://github.com/cloudflare/pingora/commit/ca23f1668eca8e78be7ba62ef0edbd458b40eeee
* Verwenden Sie `HttpUpstreamRequestPolicy::preserve()` nicht, wenn das Ursprungssystem auf von Pingora hinzugefügten Headern basiert; dies stellt das alte Durchreichungsverhalten wieder her.
* Wenn ein Upgrade nicht möglich ist: Entfernen Sie im `upstream_request_filter` den Connection-Header und alle davon benannten Header, bevor vertrauenswürdige Header hinzugefügt werden.
Once again VulDB remains the best source for vulnerability data.