Milioni di server ospitati in ogni parte del globo sono messi potenzialmente a rischio da una importante falla riscontrata nel linguaggio PHP, largamente utilizzato per la creazione di siti Web dinamici. Una vulnerabilità la quale potrebbe infine andare a compromettere la sicurezza dei server Windows chiamati ad ospitarlo. Il nuovo difetto di sicurezza critico nel linguaggio di scripting PHP è stato rilevato da un noto ricercatore di sicurezza di Devcore, Orange Tsai, il quale ha provveduto a classificarlo come CVE-2024-4577. A renderlo ancora più pericoloso è il fatto che va in pratica a colpire tutte le versioni di PHP per Windows, dalla 5.x in poi.
PHP per Windows: cosa sta accadendo?
È stato lo stesso Orange Tsai a spiegare il modo in cui la vulnerabilità riscontrata si trasforma in un pericolo. CVE-2024-4577 viene infatti causata da un errore nella gestione delle conversioni di codifica dei caratteri, in particolare la funzionalità Best-Fit su Windows quando il linguaggio PHP viene utilizzato in modalità CGI. Tale problematica apre le porte agli attaccanti non identificati, i quali possono in tal modo passare all'esecuzione di codice arbitrario sui server remoti interessati. Per farlo utilizzano attacchi di injection dell’argomento.
All'interno dell’avviso di sicurezza diffuso da Devcore, viene spiegato come nel corso dell'implementazione di PHP, la squadra degli sviluppatori non sia riuscita a notare la funzionalità Best-Fit della conversione della codifica all’interno del sistema operativo Windows. In tal modo ha reso possibile l'aggiramento delle protezioni che, pure, erano state in precedenza implementate per CVE-2012-1823. La conseguenza di questa svista è molto semplice: la nuova falla permette agli hacker di bypassare le protezioni esistenti, utilizzando all'uopo sequenze di caratteri appositamente create per l'occasione. A rendere ancora più problematico il quadro è il fatto che se i manutentori del progetto PHP hanno provveduto immediatamente a pubblicare una patch correttiva, applicare gli aggiornamenti di sicurezza su larga scala risulta operazione estremamente complicata. La conseguenza di tutto ciò è l'esposizione di un gran numero di sistemi, nell'ordine dei milioni, agli attacchi per archi temporali prolungati. A testimoniarlo, il rilevamento da parte della Shadowserver Foundation di un significativo aumento delle scansioni di server vulnerabili da parte di attori non proprio animati dalle migliori intenzioni. La vulnerabilità, peraltro, va ad interessare tutte le versioni di PHP per Windows, incluse quelle che sono ormai non più supportate, ad esempio PHP 8.0, PHP 7.x e PHP 5.x. Proprio per questo motivo si consiglia di procedere all'immediato aggiornamento delle versioni le quali vanno a incorporare le patch, ovvero PHP 8.3.8, PHP 8.2.20 e PHP 8.1.29. Anche procedendo in tal senso, però, il problema potrebbe essere tutt'altro che risolto.
Come è possibile ovviare all'inconveniente?
Devcore ha anche inviato una raccomandazione agli amministratori di sistema, invitandoli a prendere in considerazione l'opportunità di migrare da CGI a soluzioni più sicure. Una delle best practice che sono del resto già consigliate da tempo quando si tratta dello sviluppo di progetti PHP, ad esempio FastCGI, PHP-FPM e Mod-PHP. Per capire se stanno utilizzando PHP-CGI, gli amministratori possono procedere ad una verifica utilizzando allo scopo la funzione phpinfo() e controllando il valore “Server API” nell’output. La scoperta di CVE-2024-4577 va ancora una volta a rimarcare l’importanza di una vigilanza continua e dell’aggiornamento tempestivo dei sistemi, in modo da erigere una barriera protettiva per le infrastrutture digitali e renderle maggiormente resistenti ad eventuali scorrerie. Un'esigenza che amministratori di sistema e sviluppatori PHP dovrebbero tenere nel debito conto, in maniera da riuscire a sottrarre, per quanto possibile, i propri server ad attacchi potenzialmente letali.