Vulnerabilità nel progetto Pingora che consentono di infiltrarsi in richieste di terze parti

L'azienda Cloudflare ha annunciato la correzione di tre vulnerabilità nel framework Pingora, due delle quali sono state classificate come critiche (9,3 su 10). Il framework Pingora è scritto in Rust ed è progettato per sviluppare servizi di rete ad alte prestazioni e sicuri. I proxy costruiti con Pingora sono utilizzati nella rete di distribuzione dei contenuti di Cloudflare e gestiscono oltre 40 milioni di richieste al secondo. Le vulnerabilità sono state corrette con il rilascio di Pingora 0.8.0.

Le due vulnerabilità più pericolose consentono attacchi di tipo "HTTP Request Smuggling", che permettono di bypassare i sistemi di controllo degli accessi e di infiltrarsi nei contenuti delle richieste di altri utenti elaborate nello stesso flusso tra il front-end e il back-end (ad esempio, per inserire codice JavaScript malevolo nella sessione di un altro utente sul sito). I problemi sono stati individuati da un partecipante al programma Bug Bounty, che prevede ricompense per la scoperta di vulnerabilità.

Nello schema in cui si accede al back-end tramite un reverse proxy, le richieste dei clienti vengono ricevute da un nodo aggiuntivo, che stabilisce una connessione TCP di lunga durata con il back-end, responsabile dell'elaborazione diretta delle richieste. Attraverso questa connessione comune vengono normalmente trasmesse richieste di diversi utenti, che seguono un ordine sequenziale separato dagli strumenti del protocollo HTTP. Gli attacchi di tipo HTTP Request Smuggling si verificano a causa di interpretazioni diverse delle intestazioni HTTP e delle specifiche del protocollo HTTP tra front-end e back-end, ad esempio, quando il front-end utilizza l'intestazione HTTP "Content-Length" per determinare la dimensione della richiesta, mentre il back-end utilizza "Transfer-Encoding: chunked".

La prima vulnerabilità CVE-2026-2835 si trova nel codice di analisi delle richieste HTTP/1.0 ed è causata da un'elaborazione errata dell'intestazione "Transfer-Encoding" con più valori, oltre all'utilizzo della chiusura della connessione come indicator del termine del corpo della richiesta (close-delimited). Pingora controllava solo la variante "Transfer-Encoding: chunked" e ignorava tale intestazione se includeva più valori. In questa situazione, Pingora non considerava la dimensione nell'intestazione "Content-Length", ma assumeva come corpo della richiesta tutti i dati ricevuti fino alla chiusura della connessione.

Fornendo più valori nell'intestazione "Transfer-Encoding", un attaccante poteva creare condizioni in cui una richiesta veniva reindirizzata al back-end, la cui dimensione effettiva non corrispondeva alla dimensione della catena chunked calcolata in base all'intestazione "Transfer-Encoding". Pingora reindirizzava tutti i dati ricevuti come un'unica richiesta, mentre il back-end, ad esempio Node.js, calcolava la richiesta basata su "Transfer-Encoding: chunked" e trattava il resto come l'inizio di un'altra richiesta. GET / HTTP/1.0 Host: example.com Connection: keep-alive Transfer-Encoding: identity, chunked Content-Length: 29 0 GET /admin HTTP/1.1 X:

Vulnerabilità nel progetto Pingora che consentono di infiltrarsi in richieste di terze parti

La seconda vulnerabilità CVE-2026-2833 è causata da un'elaborazione errata dell'intestazione HTTP "Upgrade" nelle richieste HTTP/1.1. Quando nell'intestazione di richiesta era presente "Upgrade", il proxy inviava immediatamente anche i restanti dati della richiesta al back-end, senza attendere una risposta dal back-end con codice 101 (Switching Protocols). A causa di ciò, la sincronizzazione del flusso tra il proxy e il back-end veniva compromessa e il back-end interpretava i dati inviati dopo l'intestazione "Upgrade" come una richiesta separata, inviando il risultato di tale richiesta in risposta alla seguente richiesta di un altro utente. GET / HTTP/1.1 Host: example.com Upgrade: foo GET /admin HTTP/1.1 Host: example.com

Vulnerabilità nel progetto Pingora che consentono di infiltrarsi in richieste di terze parti
Vulnerabilità nel progetto Pingora che consentono di infiltrarsi in richieste di terze parti

I problemi si manifestano quando si utilizza Pingora come reverse proxy (ingress proxy), che inoltra le richieste degli utenti ai back-end utilizzando i protocolli HTTP/1.0 o HTTP/1.1. La configurazione di Pingora utilizzata nella rete di distribuzione dei contenuti di Cloudflare non consentiva di sfruttare le vulnerabilità, poiché Pingora nel CDN non viene utilizzato come ingress proxy, reindirizzando richieste solo con protocollo HTTP/1.1, bloccando richieste con valori Content-Length non corretti, reindirizzando solo un valore dell'intestazione "Transfer-Encoding: chunked" e aggiungendo nelle richieste con intestazione "Upgrade:" un'intestazione aggiuntiva "Connection: close", che impedisce ulteriori richieste nella stessa connessione.

La terza vulnerabilità CVE-2026-2836 (livello di gravità 8,4 su 10) porta a un avvelenamento della cache (cache poisoning) a causa della generazione della chiave di posizionamento dei dati nella cache (CacheKey) basata esclusivamente sul percorso dell'URI, ignorando il contenuto dell'intestazione «Host». Questo difetto porta alla creazione di chiavi di caching identiche per percorsi HTTP uguali su host diversi. La vulnerabilità può essere sfruttata per sostituire il contenuto della cache quando si utilizza la modalità di caching per più host. In Pingora, la cache è una funzione sperimentale, non raccomandata per implementazioni operative.

Fonte: opennet.ru

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster