PHP2Shell: 3 CVE, 2 patch e il bug non ancora risolto
Il rilascio di aggiornamenti PHP d’emergenza del 21 ottobre 2026 (versioni 8.5.12, 8.4.27, 8.3.36 e 8.2.35) ha affrontato due vulnerabilità critiche di Remote Code Execution (RCE), denominate collettivamente PHP2Shell. Sebbene le patch per CVE-2026-109618 e CVE-2026-109619 mitigino i rischi di sfruttamento immediato, un terzo difetto, CVE-2026-115560, rimane senza patch. Questo scenario evidenzia una pericolosa asimmetria nella sicurezza del software moderno: la velocità della scoperta accelerata dall’IA sta superando i tradizionali cicli di patch, lasciando gli operatori dell’infrastruttura esposti a vettori di attacco noti, sebbene complessi.
PHP2Shell: due difetti RCE critici nel runtime PHP
Il problema centrale di PHP2Shell risiede nella sua posizione. A differenza delle tipiche vulnerabilità individuate nei livelli applicativi, come i plugin di WordPress o le route di Laravel, questi difetti risiedono nell’interprete PHP stesso. Questa distinzione architettonica significa che aggiornare il proprio CMS o il codice dell’applicazione non offre alcuna protezione. Le vulnerabilità influenzano la gestione della memoria e la logica di gestione degli errori del runtime, impattando qualsiasi applicazione in esecuzione su una versione PHP non aggiornata, indipendentemente dalla sua postura di sicurezza.
Entrambe le vulnerabilità corrette presentano un punteggio CVSS v4.0 di 9,2, che indica una gravità critica. Lo sfruttamento non richiede autenticazione, consentendo a attaccanti non autenticati di eseguire codice arbitrario sul server. Questa capacità concede l’accesso diretto al file system e al database, compromettendo di fatto l’intero ambiente host. La scoperta di questi difetti da parte di Wiz Research, Calif e del team Codex Security di OpenAI, assistiti dai modelli Gemini di Google, segna un cambio di paradigma nel modo in cui vengono individuati i bug a basso livello negli interpreti.
Analisi tecnica: corruzione della memoria e stato obsoleto
CVE-2026-109618: corruzione della memoria fuori limite
Questa vulnerabilità sfrutta la gestione degli errori di esaurimento della memoria (OOM). Quando il limite di memoria di PHP viene raggiunto in un momento specifico, l’interprete può lasciare strutture dati parzialmente inizializzate in memoria. Un attaccante può manipolare questo stato per ottenere l’esecuzione di codice. Questo vettore è particolarmente potente nelle configurazioni mod_php su Apache, dove il processo PHP è strettamente accoppiato con il processo del web server. Un exploit riuscito qui non si limita a far crashare la richiesta; può compromettere l’intero worker Apache, influenzando potenzialmente altre richieste concorrenti.
CVE-2026-109619: stato globale obsoleto
Il secondo difetto corretto riguarda lo stato globale obsoleto. Dopo un errore fatale, i puntatori interni possono continuare a riferire alla memoria liberata di una richiesta precedente. Questo crea una condizione di use-after-free, che gli attaccanti possono sfruttare per dirottare il flusso di esecuzione. La vulnerabilità persiste nello spazio di stato globale, rendendo difficile per i Web Application Firewall (WAF) standard rilevarla, poiché il payload malevolo potrebbe essere elaborato prima che il parser convalidi completamente il contesto della richiesta.
Caos nella divulgazione: leak, violazioni dell’embargo e exploit anticipati
Il processo di divulgazione di PHP2Shell è stato segnato da significativi fallimenti operativi. Il 20 ottobre, gli identificatori CVE e un punteggio CVSS gonfiato a 10,0 sono trapelati sui social media. Il giorno successivo, la società di sicurezza Calif ha pubblicato accidentalmente un video proof-of-concept (PoC), e il distributore Chainguard ha violato l’embargo rilasciando immagini patchate sei ore in anticipo. Queste fughe di notizie hanno costretto il team PHP ad accelerare il rilascio delle patch, spostando la data dal 22 ottobre al 21 ottobre.
Nonostante il caos, la risposta dei fornitori cloud e dei vendor di sicurezza è stata rapida. L’amministratore delegato di Cloudflare, Matthew Prince, ha segnalato milioni di tentativi di sfruttamento entro poche ore dalla divulgazione, mentre Check Point e watchTowr hanno confermato tentativi in-the-wild. La mancanza di compromissioni diffuse confermate finora potrebbe essere attribuita alla complessità degli exploit o all’adozione rapida delle protezioni edge, ma la finestra di esposizione è stata criticamente ridotta dalle fughe di notizie.
Il terzo bug: CVE-2026-115560 e perché non sarà risolto immediatamente
L’aspetto più preoccupante di questo incidente è CVE-2026-115560, una terza vulnerabilità che rimane senza patch. La PHP Foundation ha dichiarato che questo difetto richiede una combinazione improbabile di specifici gestori di sessione e modifiche al runtime, insieme a particolari pattern di codice applicativo. Di conseguenza, non è stato prioritizzato per una correzione d’emergenza, a differenza degli altri due.
Questa decisione solleva interrogativi sulla valutazione del rischio nei grandi progetti open-source. Sebbene la probabilità di sfruttamento sia considerata bassa a causa dei requisiti di configurazione specifici, l’impatto potenziale rimane RCE. Per gli operatori, questo crea un