All’inizio di maggio 2024 uno sviluppatore del team di Devcore, Orange Tsai, ha rilevato una grave vulnerabilità nel codice di PHP che può mettere a rischio la sicurezza di milioni di server Windows. PHP è il popolare linguaggio di scripting open source ampiamente utilizzato per lo sviluppo Web e comunemente impiegato sia su server Windows che Linux.
La falla di sicurezza di recente scoperta è subito apparsa come a elevata criticità: un aggressore può passare al server vulnerabile codice arbitrario da eseguire. L’attacco avviene in modalità remota, iniettando il codice da eseguire tramite una semplice richiesta HTTP.
Il problema in questione è conosciuto con l’identificativo CVE-2024-4577 e interessa tutte le versioni di PHP, a partire dalla 5.x fino ad arrivare alle più recenti (per le quali sono state appena distribuite le patch correttive).
Da cosa dipende la vulnerabilità PHP in Windows
Mentre The Shadowserver Foundation segnala che i criminali informatici stanno già provando a sfruttare la vulnerabilità CVE-2024-4577, il consiglio rivolto agli utenti che usano PHP su un server Windows è quello di procedere immediatamente all’installazione delle versioni più aggiornate.
La vulnerabilità risiede nel modo in cui PHP gestisce le conversioni di codifica dei caratteri su Windows, usando nello specifico la funzione ‘Best-Fit‘. Questa funzione può interpretare in modo errato i caratteri, permettendo a certe sequenze di caratteri di essere trattate in modo non sicuro.
Eseguito in modalità CGI (Common Gateway Interface), in particolare, PHP esegue ciascuno script passando i parametri di richiesta come argomenti della riga di comando. Un aggressore può quindi “confezionare” un URL dannoso, aggiungendo un parametro alla querystring e il codice da eseguire lato server.
Gli attaccanti possono ottenere accesso non autorizzato al server, eseguendo comandi con i permessi dell’utente sotto cui gira il processo PHP. Possono quindi installare malware, estrarre dati riservati o utilizzare il server compromesso per lanciare ulteriori aggressioni verso altre infrastrutture informatiche.
La presenza di un’ampia base di installazioni vulnerabili, specialmente con le configurazioni predefinite (si pensi a XAMPP per Windows), amplifica i rischi e “il potenziale” dell’attacco.
Come mettersi al riparo da ogni rischio
Gli analisti precisano che anche qualora PHP non fosse configurato in modalità CGI, un aggressore remoto potrebbe comunque essere in grado di sfruttare la falla CVE-2024-4577. Questo potrebbe accadere in tutti quei contesti in cui gli eseguibili di PHP (ad esempio php.exe
o php-cgi.exe
) si trovassero in cartelle accessibili dal server Web.
La vulnerabilità scoperta in PHP per Windows, quindi, rappresenta un serio problema che può portare all’esecuzione di codice da remoto (RCE).
Per proteggersi, sui server Web Windows che utilizzano PHP, si dovrebbe subito procedere con l’aggiornamento alle più recenti release pubblicate. Nel caso dei sistemi che non possono essere immediatamente aggiornati e a beneficio di chi ancora fa uso di versioni di PHP già giunte al loro “fine vita” (End of Life, EoL), è fondamentale applicare una regola mod_rewrite
per bloccare gli attacchi:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? - [F,L]
Se si usa XAMPP e non si avesse bisogno della funzionalità PHP CGI, è consigliabile commentare la direttiva ScriptAlias
nel file di configurazione di Apache (tipicamente nel file \xampp\apache\conf\extra\httpd-xampp.conf
). Gli amministratori possono determinare se usano PHP-CGI tramite la funzione phpinfo()
e controllando il valore di Server API
nella pagina restituita.
I ricercatori di Devcore suggeriscono inoltre di valutare la migrazione dalla modalità CGI ad alternative più sicure, come FastCGI, PHP-FPM e Mod-PHP.