Sommario
I ricercatori di sicurezza hanno avvertito di una vulnerabilità critica nel linguaggio di programmazione PHP, facilmente sfruttabile per eseguire codice dannoso sui dispositivi Windows. È urgente che chiunque utilizzi PHP prenda provvedimenti prima del fine settimana.
Scansioni e sfruttamento della vulnerabilità
Entro 24 ore dalla pubblicazione della vulnerabilità e della relativa patch, i ricercatori dell’organizzazione di sicurezza non profit Shadowserver hanno segnalato scansioni Internet mirate a identificare server suscettibili agli attacchi. Queste scansioni, combinate con la facilità di sfruttamento, la disponibilità di codice di attacco proof-of-concept, la gravità dell’esecuzione di codice remoto su macchine vulnerabili e la vulnerabilità predefinita della piattaforma XAMPP, hanno spinto i professionisti della sicurezza a esortare gli amministratori a verificare se i loro server PHP sono affetti.
Dettagli della Vulnerabilità CVE-2024-4577
La vulnerabilità, tracciata come CVE-2024-4577, deriva da errori nel modo in cui PHP converte i caratteri unicode in ASCII. Una funzionalità di Windows nota come Best Fit permette agli attaccanti di utilizzare una tecnica chiamata injection di argomenti per passare input forniti dall’utente nei comandi eseguiti da un’applicazione, in questo caso PHP. Gli exploit permettono agli attaccanti di bypassare CVE-2012-1823, una vulnerabilità critica di esecuzione di codice patchata in PHP nel 2012.
La vulnerabilità CVE-2024-4577 riguarda PHP solo quando funziona in una modalità nota come CGI, in cui un server web analizza le richieste HTTP e le passa a uno script PHP per l’elaborazione. Anche quando PHP non è configurato in modalità CGI, la vulnerabilità potrebbe essere ancora sfruttabile se gli eseguibili PHP, come php.exe e php-cgi.exe, sono in directory accessibili dal server web. Questa configurazione è impostata di default in XAMPP per Windows, rendendo la piattaforma vulnerabile a meno che non sia stata modificata.
Esempi di sfruttamento
Un esempio fornito dai ricercatori mostra come una richiesta apparentemente innocua come http://host/cgi.php?foo=bar
potrebbe essere convertita in php.exe cgi.php foo=bar
, un comando che verrebbe eseguito dal motore principale di PHP.
Fallimento del Best Fit e Escaping
Il problema del Best Fit si manifesta quando PHP non riesce a convertire correttamente i caratteri di input, come il trattino morbido (unicode 0xAD), in caratteri sicuri. Questo permette agli attaccanti di inserire argomenti di comando aggiuntivi nei processi PHP. I ricercatori hanno dimostrato come l’inserimento di un carattere morbido possa bypassare la protezione e consentire l’esecuzione di codice remoto.
Impatto e raccomandazioni
La vulnerabilità interessa tutte le versioni di PHP che girano su dispositivi Windows, comprese le versioni 8.3 prima della 8.3.8, 8.2 prima della 8.2.20 e 8.1 prima della 8.1.29. Anche i rami di versione 8.0, 7 e 5 sono vulnerabili, ma non essendo più supportati, gli amministratori dovranno seguire i consigli di mitigazione, poiché non sono disponibili patch.
Mitigazioni consigliate
- Aggiornamento del PHP: Chi utilizza versioni supportate di PHP dovrebbe aggiornare alle versioni che incorporano le patch: PHP 8.3.8, PHP 8.2.20 e PHP 8.1.29.
- Rewrite Rules: Per sistemi che non possono essere immediatamente aggiornati, si consiglia di applicare una regola mod_rewrite per bloccare gli attacchi:apacheCopia codice
RewriteEngine On RewriteCond %{QUERY_STRING} ^%ad [NC] RewriteRule .? - [F,L]
- Disabilitazione di PHP CGI in XAMPP: Per chi non ha bisogno della funzionalità PHP CGI, è possibile disattivarla modificando la configurazione del server Apache:apacheCopia codice
# ScriptAlias /php-cgi/ "C:/xampp/php/"
- Migrazione a Soluzioni Moderne: Considerare di migrare a soluzioni più moderne e sicure come FastCGI, PHP-FPM, o Mod-PHP.
La scoperta della vulnerabilità CVE-2024-4577 rappresenta una seria minaccia per i server PHP su Windows. È cruciale che gli amministratori di sistema prendano misure immediate per proteggere i loro server, aggiornando PHP alle ultime versioni o implementando le mitigazioni consigliate.