Un rapporto post mortem della PHP Foundation afferma che un piccolo gruppo di manutentori era a conoscenza di una grave vulnerabilità di PHP da due anni prima che diventasse di dominio pubblico. Il problema viene ora sfruttato negli attacchi noti come PHP2Shell, che possono consentire l’esecuzione di codice da remoto quando gli aggressori conoscono la versione di PHP e la build in esecuzione sul server bersaglio.
La falla deriva dal modo in cui PHP gestisce l’esaurimento della memoria. Se il motore passa alla procedura di pulizia mentre costruisce una struttura dati, in memoria possono rimanere dati incompleti. Una richiesta web appositamente predisposta può sfruttare questo stato incoerente per eseguire codice con i permessi del processo PHP.
La Foundation ha dichiarato che inizialmente i manutentori non consideravano il problema una questione urgente e che hanno discusso su come affrontarlo senza compromettere la compatibilità con le estensioni di terze parti. Ha inoltre riconosciuto errori gestionali. Il team descritto nel rapporto post mortem è piccolo: un dipendente a tempo pieno e 14 collaboratori a tempo parziale mantengono un linguaggio di programmazione ampiamente utilizzato sul web.
L’impatto della vulnerabilità è aggravato dal numero di installazioni che eseguono software non più supportato. Il rapporto afferma che, al momento della divulgazione del problema, il 73% delle installazioni di PHP utilizzava versioni giunte a fine vita. I rami di PHP attualmente mantenuti vanno dalla versione 8.1 alla 8.5, mentre molte installazioni meno recenti dipendono dalle distribuzioni dei sistemi operativi o dai repository della comunità per ricevere aggiornamenti di sicurezza.
La PHP Foundation ha pubblicato patch per le versioni dalla 7.4 alla 8.1. Anche altre organizzazioni hanno reso disponibili correzioni per le release più vecchie, inclusi pacchetti del manutentore Debian Ondřej Surý, di CloudLinux e di AlmaLinux. I fornitori di supporto commerciale Ubuntu Pro e Zend hanno rilasciato pacchetti per versioni risalenti persino alla PHP 5.5. La fonte afferma che quasi l’8% delle installazioni utilizzava ancora PHP 5.x, pubblicata per la prima volta nel 2005.
I firewall per applicazioni web e altri strumenti di sicurezza possono contribuire a bloccare o rilevare attività dannose, ma l’aggiornamento a una versione corretta rimane la soluzione diretta. Cloudflare e Fastly hanno aggiunto il rilevamento di PHP2Shell ai propri set di regole, mentre i prodotti di sicurezza per server possono monitorare attività sospette del binario PHP. Anche alcuni apparati di rete e dispositivi NAS includono PHP e potrebbero richiedere aggiornamenti.
Il rapporto descrive lo sfruttamento ancora in corso, inclusa una campagna che ha combinato la falla di PHP con Fragnesia, nota anche come Dirty Frag, per ottenere l’accesso a livello di kernel a 25 server apparentemente collegati al governo degli Stati Uniti. La società di sicurezza BitSight ha segnalato numerosi tentativi di intrusione PHP2Shell provenienti da fonti diverse entro il 29 ottobre. All’epoca non aveva individuato un singolo pacchetto di exploit universale, pur avvertendo che la situazione poteva cambiare.
Inizialmente Censys ha stimato che circa 45,7 milioni delle 119 milioni di installazioni di PHP fossero vulnerabili. In una stima successiva, ha calcolato che i servizi non aggiornati fossero circa 29 milioni. Tuttavia, il 62% dei server PHP monitorati da Censys non comunica la propria versione e le correzioni applicate tramite backport potrebbero non modificare i numeri di versione, rendendo difficile determinare lo stato effettivo delle patch.
Fonti: Tom's Hardware.