Due vulnerabilità critiche del motore PHP, identificate con i codici CVE-2026-109618 e CVE-2026-109619, sono state divulgate pubblicamente il 21 ottobre 2026 con il nome PHP2Shell. Secondo le comunicazioni attribuite al PHP Security Team e gli aggiornamenti del CERT-AGID, entrambe hanno ricevuto un punteggio CVSS v4.0 pari a 9,2, un valore che indica una gravità molto elevata. In determinate condizioni, un attaccante privo di autenticazione potrebbe arrivare a eseguire codice da remoto sul server che ospita un sito o un’applicazione PHP.
Il rischio riguarda soprattutto gli ambienti in cui PHP viene eseguito tramite Apache con mod_php, anche se la documentazione tecnica segnala possibili impatti per altre configurazioni. La presenza di PHP2Shell non significa che ogni sito basato su PHP sia automaticamente compromesso: l’esposizione dipende dalla versione installata, dal metodo di esecuzione, dalla configurazione del server, dai componenti utilizzati e dagli aggiornamenti applicati dal fornitore.
Le versioni correttive ufficiali indicate per il 21 ottobre 2026 sono PHP 8.2.35, PHP 8.3.36, PHP 8.4.27 e PHP 8.5.12. Aziende, professionisti e gestori di siti devono quindi verificare lo stato delle patch presso il proprio provider o distributore, considerando anche la possibilità che una distribuzione Linux abbia applicato una correzione tramite backport senza aggiornare la numerazione principale di PHP.
Dati e fonti da verificare: le informazioni sulle CVE, sul punteggio CVSS, sulle configurazioni interessate, sulle versioni correttive e sulle misure temporanee devono essere confrontate con gli avvisi aggiornati del PHP Security Team e del CERT-AGID.
Che cosa sono le vulnerabilità PHP2Shell
PHP2Shell è il nome con cui sono state indicate due falle presenti nella gestione della memoria del motore PHP. La memoria è lo spazio utilizzato dal software per conservare temporaneamente dati, variabili e informazioni necessarie all’esecuzione delle richieste. Errori nella sua allocazione, nel suo rilascio o nella gestione dello stato interno possono alterare il comportamento del processo che esegue PHP.
Quando una vulnerabilità di questo tipo è raggiungibile attraverso una richiesta web, l’attaccante può tentare di manipolare il funzionamento del processo senza disporre di credenziali valide. La possibilità di arrivare all’esecuzione di codice da remoto dipende però dalla combinazione di diversi fattori: modalità di esecuzione, impostazioni del server, funzioni attive, librerie caricate e accessibilità dell’applicazione.
Il nome PHP2Shell descrive quindi una classe di rischio, non una prova che tutti i server PHP siano già sotto attacco. Le dimostrazioni pubbliche di sfruttamento servono a mostrare la fattibilità tecnica di una tecnica, ma non equivalgono alla documentazione di campagne criminali in corso. In assenza di fonti specifiche e aggiornate, non è corretto affermare che esista una compromissione generalizzata.
Le differenze tra CVE-2026-109618 e CVE-2026-109619
Le due vulnerabilità sono collegate alla memoria, ma hanno caratteristiche differenti. Distinguerle aiuta a comprendere perché l’aggiornamento deve riguardare l’intero componente PHP e non soltanto una singola funzione dell’applicazione.
CVE-2026-109618: gestione della memoria in condizioni di esaurimento
La CVE-2026-109618 riguarda la gestione della memoria in condizioni di esaurimento delle risorse. Quando il processo dispone di uno spazio insufficiente per completare un’operazione, il software deve gestire correttamente l’errore e interrompere il flusso in modo sicuro. Se questo passaggio non avviene correttamente, dati o strutture interne possono essere trattati in maniera imprevista.
Un attaccante potrebbe cercare di provocare condizioni di pressione sulle risorse attraverso richieste appositamente costruite. La conseguenza potenziale va dal blocco del processo fino alla manipolazione di dati presenti nella memoria. In circostanze determinate, questa alterazione può aprire la strada all’esecuzione di codice con i privilegi del processo PHP.
CVE-2026-109619: stato interno conservato dopo la liberazione della memoria
La CVE-2026-109619 è invece legata alla persistenza di uno stato interno dopo la liberazione della memoria. In termini divulgativi, una parte del motore può continuare a fare riferimento a informazioni che dovrebbero essere considerate non più disponibili. Questo tipo di errore può generare comportamenti inattesi quando la stessa area viene riutilizzata.
Il problema è particolarmente delicato perché la memoria liberata può essere assegnata a nuovi dati. Se il processo conserva riferimenti non validi o utilizza informazioni ormai obsolete, un input controllato dall’esterno può influenzare il comportamento dell’applicazione. Anche in questo caso, il risultato concreto dipende dalla configurazione e dal percorso seguito dalla richiesta.
Quali configurazioni PHP sono più esposte
PHP può essere integrato in un server web con modalità differenti. Questa distinzione incide sul livello di esposizione perché cambia il modo in cui le richieste vengono ricevute, isolate e inoltrate al motore.
Il rischio più elevato documentato dal PHP Security Team riguarda Apache con mod_php. In questa configurazione il motore PHP opera direttamente all’interno dei processi del web server. Una vulnerabilità sfruttabile nel motore può quindi avere conseguenze rilevanti sul processo che gestisce le richieste HTTP e sulle risorse accessibili a quel processo.
PHP-FPM, acronimo di PHP FastCGI Process Manager, separa invece il web server dai processi che eseguono il codice PHP. Questa separazione può modificare le condizioni necessarie allo sfruttamento e, in alcuni casi, ridurre l’impatto di un attacco. Non equivale però a una protezione automatica: PHP-FPM può essere interessato se la versione installata contiene il componente vulnerabile e se l’applicazione espone un percorso raggiungibile.
Anche altre modalità di esecuzione, server web e configurazioni personalizzate richiedono una verifica specifica. Non basta quindi sapere che un sito utilizza PHP: occorre controllare la versione effettiva, il modo in cui il processo viene avviato e gli avvisi pubblicati dal soggetto che distribuisce il software.
Le versioni correttive e il ruolo dei backport
Le versioni ufficiali indicate come correttive per PHP2Shell sono PHP 8.2.35, 8.3.36, 8.4.27 e 8.5.12, rilasciate il 21 ottobre 2026. Il riferimento diretto per i comunicati e gli aggiornamenti è l’archivio ufficiale delle release PHP del 2026.
Il numero visualizzato sul server, tuttavia, non racconta sempre tutta la storia. Le distribuzioni Linux possono applicare una correzione al codice vulnerabile mantenendo una versione principale precedente. Questa pratica, chiamata backport, consente di inserire una patch di sicurezza in un pacchetto già integrato nel ciclo di manutenzione della distribuzione.
Lo stesso può avvenire con i fornitori di hosting gestito, che aggiornano i componenti senza esporre necessariamente la numerazione ufficiale usata dal progetto PHP. Un’installazione non deve quindi essere considerata automaticamente vulnerabile soltanto perché presenta un numero precedente rispetto a 8.2.35, 8.3.36, 8.4.27 o 8.5.12. È necessario consultare il bollettino del fornitore e verificare l’identificativo del pacchetto corretto.
Che cosa devono fare aziende e professionisti
La risposta deve partire da un inventario realistico. Molti siti aziendali utilizzano PHP attraverso CMS, plugin, applicazioni sviluppate internamente o servizi ospitati da terzi. La responsabilità operativa può quindi essere distribuita tra impresa, agenzia web, amministratore di sistema e provider.
- verificare la versione di PHP e la modalità di esecuzione impiegata;
- controllare gli avvisi di sicurezza della distribuzione Linux, del provider o del servizio di hosting;
- applicare gli aggiornamenti correttivi disponibili seguendo una procedura di test e rilascio;
- controllare i log e gli altri segnali di compromissione secondo le procedure interne;
- mantenere backup verificati e procedure affidabili di ripristino;
- documentare chi è responsabile dell’aggiornamento nei servizi affidati a fornitori esterni.
Prima di intervenire sui sistemi pubblici è opportuno valutare la compatibilità con il CMS, i framework e le estensioni utilizzate. Un aggiornamento non testato può generare incompatibilità applicative, mentre rimandare senza una valutazione documentata lascia esposta l’organizzazione a un rischio evitabile.
Firewall applicativi, regole di filtraggio e limitazioni temporanee dell’accesso possono ridurre alcuni vettori di attacco. Queste misure non correggono però il difetto nel motore PHP e non sostituiscono le patch. Anche la consultazione di un’analisi dedicata alla protezione dei sistemi informatici aziendali può aiutare a inserire l’intervento in una gestione più ordinata degli accessi, dei log e dei backup.
L’avviso sulla funzionalità session.upload_progress.enabled
Il 23 ottobre 2026 il PHP Security Team ha pubblicato un avviso relativo alla funzionalità session.upload_progress.enabled. Gli sviluppatori hanno consigliato di disattivarla temporaneamente come misura aggiuntiva collegata a uno specifico possibile vettore di attacco.
La disattivazione deve essere interpretata con precisione. Non rappresenta una soluzione alternativa alle patch e non elimina il difetto presente nel motore PHP. Può ridurre una particolare superficie di esposizione, ma il gestore deve comunque applicare gli aggiornamenti disponibili, verificare la configurazione effettiva e valutare gli effetti sull’applicazione.
Ogni modifica temporanea dovrebbe essere registrata, testata e riesaminata dopo l’installazione della versione corretta. Lasciare impostazioni provvisorie senza una scadenza o senza documentazione può creare nuovi problemi di gestione.
Gli strumenti di verifica segnalati dal CERT-AGID
Il 22 ottobre 2026 il CERT-AGID ha segnalato strumenti destinati a verificare la potenziale esposizione alle vulnerabilità PHP2Shell. Questi strumenti possono essere utili per un primo controllo, ma i risultati devono essere interpretati da personale competente e confrontati con le informazioni del fornitore.
I controlli basati sulla versione confrontano il numero del pacchetto con gli intervalli noti come vulnerabili. Sono rapidi, ma possono produrre valutazioni incomplete quando una distribuzione ha applicato un backport o quando il numero mostrato dall’hosting non coincide con quello delle release ufficiali PHP.
Le verifiche comportamentali osservano invece come il servizio risponde a determinati stimoli o condizioni. Possono offrire indicazioni ulteriori, ma non costituiscono sempre una prova definitiva dell’assenza o della presenza della vulnerabilità. Un risultato negativo non autorizza a ignorare gli aggiornamenti, mentre un risultato positivo deve essere gestito senza eseguire test rischiosi su sistemi produttivi.
Per le imprese prive di competenze interne, il percorso più prudente consiste nel coinvolgere il provider o un tecnico qualificato, conservare l’esito dei controlli e collegarlo alla versione del pacchetto realmente installata. La continuità operativa aziendale dipende anche dalla capacità di ripristinare il servizio dopo un aggiornamento o un incidente.
Dimostrazioni pubbliche e attacchi reali: una distinzione necessaria
La pubblicazione di una dimostrazione tecnica o di uno strumento di verifica non prova, da sola, che siano in corso campagne di compromissione. Per sostenere un’affermazione sugli attacchi reali servono fonti specifiche, aggiornate e riferite a incidenti documentati.
Le organizzazioni devono comunque agire senza attendere la conferma di un attacco. La gravità CVSS di 9,2, la possibilità di esecuzione remota in determinate condizioni e la diffusione di PHP nei siti aziendali rendono ragionevole una verifica tempestiva. La misura più affidabile resta l’applicazione della correzione appropriata, accompagnata dal controllo dei log e dalla disponibilità di backup ripristinabili.
Domande frequenti su PHP2Shell
PHP2Shell rende vulnerabile ogni sito realizzato in PHP?
No. L’esposizione dipende dalla versione, dalla configurazione, dalla modalità di esecuzione e dal pacchetto distribuito dal provider. Anche applicazioni apparentemente simili possono avere livelli di rischio differenti.
Quali sono le versioni PHP corrette?
Le versioni ufficiali indicate per il 21 ottobre 2026 sono PHP 8.2.35, 8.3.36, 8.4.27 e 8.5.12. Distribuzioni Linux e hosting possono usare numerazioni diverse dopo aver applicato correzioni tramite backport.
Disattivare session.upload_progress.enabled è sufficiente?
No. La disattivazione è una misura temporanea aggiuntiva riferita a uno specifico possibile vettore. Non sostituisce l’aggiornamento di PHP né la verifica dello stato delle patch e dei log.
