Symfony PHP Framework può avvelenare la cache per una vulnerabilità

I siti Web sviluppati sul framework Symfony possono essere vulnerabili agli attacchi di avvelenamento della cache Web a causa dell’uso improprio delle intestazioni HTTP. Symfony è un popolare framework PHP per applicazioni web che ha avuto oltre 200 milioni di download in passato (forse tra i più popolari). È stato scoperto che gli attacchi di avvelenamento della cache Web sono suscettibili sulla piattaforma, che potrebbero rivelare informazioni sensibili come gli indirizzi IP degli utenti.

I siti di archiviazione intermedi tra i server Web e i dispositivi client, come proxy, server point-of-presence e bilanciatori del carico, sono gli obiettivi degli attacchi di avvelenamento della cache Web più gettonati. Questi server spesso aiutano le prestazioni del sito Web conservando copie locali dei contenuti Web per accelerare la consegna ai client Web. Gli exploit di avvelenamento della cache Web ingannano i server della cache nell’archiviazione e nella consegna di materiale dannoso ai client.

Il problema è emerso quando un sito Web basato su Symfony funzionava dietro un proxy o un bilanciatore del carico, presentava questo problema e da allora si è fatto di tutto per risolverlo. Gli sviluppatori possono dire a Symfony di cercare gli header X-Forwarded-* in queste circostanze, avendo come risultato ulteriori informazioni sul client, come il protocollo originale, l’indirizzo IP e la porta.

Symfony usa una trusted_headers_allowlist per limitare le intestazioni consentite ed evitare attacchi di avvelenamento della cache web. Gli sviluppatori di Symfony hanno introdotto il supporto per l’intestazione X-Forwarded-Prefix nella versione 5.2, che aggiunge informazioni sulla base del percorso originale della richiesta. Il difetto si è verificato nella funzionalità di richiesta secondaria, che consente agli sviluppatori di eseguire il rendering e servire una piccola sezione di una pagina anziché l’intera pagina, secondo un avviso di GitHub.

Anche se non era nell’elenco delle trusted_headers, l’intestazione X-Forwarded-Prefix era gestita da ‘sotto-richieste’. Generando richieste secondarie dannose con l’intestazione X-Forwarded-Prefix e memorizzandole nella cache nei server di cache, i malintenzionati potrebbero eseguire attacchi di avvelenamento della cache web. Gli snippet dannosi verrebbero quindi forniti a clienti aggiuntivi che hanno richiesto la stessa pagina.

Un difetto simile è stato risolto in almeno una piattaforma di e-commerce basata su Symfony. Non è chiaro quanti altri siti web siano stati colpiti, ma considerando l’uso diffuso di Symfony tra gli sviluppatori web PHP, le conseguenze potrebbero essere significative.