CVE-2026-105299 in Pingora
Riassunto
di VulDB • 20/10/2026
Prima della versione 0.9.0, il percorso HTTP/1 per l'upstream in pingora-proxy inoltrava la richiesta downstream attraverso `upstream_request_filter` e la scriveva verso l'upstream senza rimuovere l'intestazione Connection del client, altre intestazioni hop-by-hop o le intestazioni nominate da Connection, sebbene RFC 9110 Sezione 7.6.1 richieda agli intermediari di rimuoverle. Il percorso HTTP/2 per l'upstream già rimoveva Connection e le relative intestazioni specifiche di HTTP/1. Un client poteva quindi nominare un'intestazione che l'applicazione aggiunge in `upstream_request_filter` (ad esempio, `Connection: keep-alive`, `X-Forwarded-For`). Un intermediario downstream HTTP/1 che onora Connection avrebbe poi rimosso l'intestazione aggiunta da Pingora prima che raggiungesse l'origine.
Impatto
Colpisce specificamente le distribuzioni in catena dove un intermediario HTTP/1 tra Pingora e l'origine elabora le nomination di Connection (ad esempio, `Go's net/http/httputil.ReverseProxy`) e l'origine si fida delle intestazioni aggiunte da tale intermediario (ad esempio, `X-Forwarded-For` per l'autorizzazione basata su IP). Un attaccante remoto non autenticato può far rimuovere queste intestazioni, potenzialmente aggirando l'autorizzazione. Il segnalatore ha dimostrato di aver ottenuto accesso a un endpoint limitato agli IP utilizzando `X-Forwarded-For` con validazione dell'IP sull'origine. Si tratta della stessa classe di problema di CVE-2022-31813 in Apache HTTP Server.
Si noti che i clienti Cloudflare CDN non sono stati interessati, poiché non esiste alcuna distribuzione in catena come descritta sopra con i servizi interni Pingora e le intestazioni Connection vengono sanificate prima di arrivare ai gateway Pingora.
Mitigazione: * Aggiornare a pingora versione 0.9.0 o successiva. Per impostazione predefinita, Pingora ora rimuove le intestazioni hop-by-hop e quelle nominate da Connection dalle richieste upstream, e rifiuta le richieste la cui intestazione Connection nomina Host, X-Forwarded-For, X-Forwarded-Host, X-Forwarded-Proto o un pseudo-header. Questo è controllato da `PeerOptions::http_upstream_request_policy` (HttpUpstreamRequestPolicy). Commit di correzione: https://github.com/cloudflare/pingora/commit/28c18e6b6b04dd0bd937234e5950049e6d74cded , https://github.com/cloudflare/pingora/commit/ca23f1668eca8e78be7ba62ef0edbd458b40eeee
*
Non utilizzare `HttpUpstreamRequestPolicy::preserve()` se l'origine si affida alle intestazioni aggiunte da Pingora; questo ripristina il vecchio comportamento di passaggio diretto.
*
Se non è possibile effettuare l'aggiornamento: in `upstream_request_filter`, rimuovere l'intestazione Connection e tutte le intestazioni che essa nomina prima di aggiungere le intestazioni attendibili.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.