In sintesi
- PHP2Shell è il nome di due falle critiche di PHP, CVE-2026-109618 e CVE-2026-109619, con punteggio CVSS 9,2.
- Permettono di eseguire codice sul server senza credenziali, su ogni installazione PHP che serve pagine web.
- Le versioni corrette sono PHP 8.5.12, 8.4.27, 8.3.36 e 8.2.35: aggiornare è l’unica soluzione completa.
- Gli attacchi sono già in corso, alcuni anche prima del rilascio delle patch del 21 ottobre.
- Aggiornare il CMS o i plugin non basta: va aggiornato il motore PHP sul server.
- Dopo la patch bisogna anche verificare di non essere già stati compromessi.
PHP2Shell: cos'è la falla critica di PHP e come proteggere il tuo sito
Due vulnerabilità critiche nel motore di PHP permettono di eseguire codice su un server web senza credenziali. Le patch sono uscite il 21 ottobre 2026 e gli attacchi sono già in corso. Ecco come capire in pochi minuti se il tuo sito è esposto e cosa fare.
In sintesi
- PHP2Shell è il nome dato a due falle critiche di PHP, CVE-2026-109618 e CVE-2026-109619, con punteggio CVSS v4.0 di 9,2.
- Consentono l'esecuzione di codice da remoto senza autenticazione su qualsiasi installazione PHP che serve pagine web.
- Le versioni corrette sono PHP 8.5.12, 8.4.27, 8.3.36 e 8.2.35. Aggiornare è l'unica soluzione completa.
- Sono già stati osservati tentativi di sfruttamento reali, alcuni anteriori alla pubblicazione delle patch.
- Aggiornare chiude la falla, ma non rimuove un'eventuale compromissione già avvenuta: va fatta anche una verifica.
Cos'è PHP2Shell e perché è così grave
PHP è il linguaggio su cui girano la gran parte dei siti web: WordPress, Joomla, PrestaShop, Magento, molti gestionali e portali aziendali. PHP2Shell non riguarda un plugin o un CMS, ma il motore stesso di PHP. Per questo nessun aggiornamento del sito, da solo, risolve il problema.
Le due vulnerabilità hanno origine nella gestione della memoria:
| CVE | Meccanismo | Gravità |
|---|---|---|
| CVE-2026-109618 | Quando PHP esaurisce la memoria durante l'elaborazione di una richiesta, alcuni dati restano inizializzati solo in parte e vengono poi trattati come validi | 9,2 (CVSS v4.0) |
| CVE-2026-109619 | PHP conserva riferimenti a dati di una richiesta dopo che la memoria corrispondente è stata liberata (use-after-free), e una richiesta successiva può sfruttarli | 9,2 (CVSS v4.0) |
Il risultato, in entrambi i casi, è lo stesso: un attaccante può far eseguire al server comandi a sua scelta, con i privilegi del processo web. È lo scenario classico che porta all'installazione di una web shell, cioè una porta di servizio permanente sul sito.
Sono coinvolte tutte le modalità con cui PHP serve richieste web: PHP-FPM, Apache con mod_php, php-cgi, FrankenPHP e LiteSpeed. Le configurazioni con mod_php sono quelle considerate più a rischio, perché l'attacco può partire prima ancora che venga eseguito il codice dell'applicazione.
Cronologia: dalla fuga di notizie agli attacchi
La gestione di PHP2Shell è stata accelerata da una fuga di informazioni prima della divulgazione coordinata.
| Data | Evento |
|---|---|
| 17 ottobre 2026 | Amazon individua un primo tentativo di sfruttamento nei propri sistemi di monitoraggio |
| 20 ottobre 2026 | I dettagli delle falle circolano online. Il team PHP annuncia un rilascio di sicurezza straordinario |
| 21 ottobre 2026 | Escono PHP 8.5.12, 8.4.27, 8.3.36 e 8.2.35. La CISA statunitense invita ad aggiornare immediatamente |
| 21 ottobre 2026 | watchTowr segnala tentativi di sfruttamento attivi su entrambe le vulnerabilità |
| 22 ottobre 2026 | Data originariamente prevista per la divulgazione coordinata |
Il dato da tenere a mente è il primo: esistono attacchi anteriori alla patch. Un server aggiornato il 21 o il 22 ottobre potrebbe essere stato raggiunto nei giorni precedenti.
Quali versioni di PHP sono vulnerabili
| Ramo PHP | Versioni vulnerabili | Prima versione corretta |
|---|---|---|
| PHP 8.5 | precedenti alla 8.5.12 | 8.5.12 |
| PHP 8.4 | precedenti alla 8.4.27 | 8.4.27 |
| PHP 8.3 | precedenti alla 8.3.36 | 8.3.36 |
| PHP 8.2 | precedenti alla 8.2.35 | 8.2.35 |
| PHP 7.4, 8.0, 8.1 | tutte | nessun rilascio ufficiale: pacchetti della distribuzione, fornitori LTS o backport minimi del codice sorgente pubblicati dal team PHP |
| PHP 7.3 e precedenti | tutte | nessuna correzione disponibile: migrazione obbligata |
Una nota di pianificazione: il supporto di PHP 8.2 termina il 31 dicembre 2026. Chi aggiorna oggi alla 8.2.35 chiude l'emergenza, ma dovrebbe già prevedere il passaggio a un ramo più recente.
Come verificare se il tuo sito è vulnerabile
1. Leggi la versione esatta di PHP
Il numero del ramo (ad esempio "8.5") non basta: serve la versione completa.
- Se hai accesso al server: esegui
php -v. Verifica però la versione usata dal web server (PHP-FPM o mod_php), che può essere diversa da quella della riga di comando. - Se sei su hosting condiviso: crea nella cartella principale del sito un file
info.phpcontenente solo<?php phpinfo();, aprilo dal browser e leggi la riga "PHP Version". Poi cancellalo subito: lasciarlo online espone informazioni utili a un attaccante.
2. Attenzione ai pacchetti delle distribuzioni Linux
Debian, Ubuntu, Red Hat e derivate applicano spesso le correzioni di sicurezza senza cambiare il numero di versione principale. In questi casi la verifica va fatta sul changelog del pacchetto, cercando i due identificativi CVE.
3. Hosting condiviso o gestito
Su servizi come Register, Aruba, SiteGround o Serverplan, PHP lo aggiorna il provider. I pannelli di controllo spesso mostrano solo il ramo, non la versione completa. Se il phpinfo non riporta una versione corretta, apri un ticket e chiedi una conferma scritta che la patch per CVE-2026-109618 e CVE-2026-109619 sia stata applicata.
4. Usa uno scanner, solo sui tuoi sistemi
Searchlight Cyber ha rilasciato php2shell-scanner, uno strumento open source che verifica se un host è esposto. Va usato esclusivamente su sistemi di cui si è responsabili.
Cosa fare subito
- Aggiorna PHP alla versione corretta del tuo ramo. Il team PHP è esplicito: non esistono mitigazioni complete, l'aggiornamento è l'unica scelta sicura.
- Riavvia tutti i servizi PHP: Apache, PHP-FPM e ogni processo PHP che resta attivo a lungo. Senza riavvio, la correzione può non essere effettiva.
- Se non puoi aggiornare oggi, applica le mitigazioni temporanee indicate dal team PHP: - per CVE-2026-109618: impostare
memory_limit=-1in modo che le applicazioni non possano modificarlo, tenere bassopost_max_sizee limitare la dimensione delle richieste sul web server o sul proxy; - per CVE-2026-109619: impostaresession.upload_progress.enabled=0e riavviare tutti i worker. Su PHP 8.5 impostare anchefatal_error_backtraces=0.
Sono misure ponte, non sostituiscono la patch. Dopo l'aggiornamento, l'impostazione memory_limit=-1 va rivista.
- Limita l'esposizione dei sistemi che non possono essere aggiornati subito, ad esempio mettendo il sito in manutenzione o restringendo l'accesso.
- Mantieni
display_errors = 0in produzione: è una buona pratica che riduce le informazioni restituite a un attaccante.
Disattivare l'accesso SSH, cambiare le password o aggiornare il CMS sono buone pratiche, ma non chiudono PHP2Shell: l'attacco passa attraverso le normali richieste HTTP al sito.
La patch non basta: verifica di non essere già stato colpito
Considerati gli attacchi anteriori al 21 ottobre, chi ha aggiornato deve anche escludere una compromissione. Le verifiche minime:
- File PHP nuovi o modificati tra il 17 ottobre e la data dell'aggiornamento, soprattutto nelle cartelle di upload, cache e temi.
- Codice sospetto nei file del sito: funzioni come
eval,base64_decodeogzinflateusate su input esterni sono un segnale classico di web shell. - Log del web server: richieste POST anomale o di dimensioni insolite, e nei log di PHP-FPM errori di memoria o crash ripetuti.
- Integrità del CMS: confronto dei file con le versioni originali (su WordPress, ad esempio, con
wp core verify-checksumso con uno scanner come Wordfence). - Utenti amministratori, attività pianificate e chiavi di accesso creati di recente e non riconosciuti.
In caso di dubbi, un backup completo eseguito oggi è utile anche come prova: permette di confrontare lo stato dei file e di ricostruire cosa è successo. Sul tema, vale la pena rileggere Backup contro il ransomware: la regola che salva le PMI.
PHP2Shell e NIS2: quando diventa un incidente da notificare
Per le organizzazioni nel perimetro NIS2, PHP2Shell non è solo una questione tecnica. Una compromissione dei sistemi che erogano servizi può configurarsi come incidente significativo, con gli obblighi già operativi di pre-notifica entro 24 ore e notifica entro 72 ore.
C'è anche un tema di filiera: molti siti, portali e gestionali sono amministrati da fornitori esterni. La gestione del rischio dei fornitori ICT fa parte delle misure di base richieste dalla NIS2, e questa è l'occasione giusta per chiedere ai propri fornitori evidenze documentate dell'aggiornamento, non semplici rassicurazioni.
Per il quadro completo degli adempimenti, leggi NIS2 in pratica. Se vuoi verificare se la tua azienda rientra nel perimetro, il test gratuito NIS2 richiede due minuti.
Domande frequenti
Cos'è PHP2Shell? È il nome dato a due vulnerabilità critiche del motore di PHP, CVE-2026-109618 e CVE-2026-109619, che permettono a un attaccante non autenticato di eseguire codice sul server web.
Il mio sito è vulnerabile? Sì, se la versione di PHP che serve il sito è precedente a 8.5.12, 8.4.27, 8.3.36 o 8.2.35 e il provider o la distribuzione non hanno applicato una patch equivalente. PHP 8.1 e precedenti vanno considerati esposti, salvo correzioni specifiche del fornitore.
Aggiornare WordPress o i plugin risolve il problema? No. La falla è nel motore di PHP, non nell'applicazione. Serve l'aggiornamento del runtime PHP sul server.
Ho un hosting condiviso: cosa devo fare? Verifica la versione esatta con un phpinfo temporaneo e, se non è corretta, chiedi al provider conferma scritta dell'applicazione della patch.
Dopo l'aggiornamento sono al sicuro? Sei protetto da nuovi attacchi tramite PHP2Shell. Resta da escludere una compromissione avvenuta prima della patch, controllando file modificati, log e utenti amministratori.
Esistono mitigazioni senza aggiornare? Solo temporanee e parziali: limiti di memoria e di dimensione delle richieste, disattivazione di session.upload_progress. Il team PHP precisa che nessuna modifica di configurazione chiude completamente le vulnerabilità.
Hai bisogno di una verifica strutturata? Valutare l'esposizione, coordinare i fornitori e documentare le azioni è il lavoro di un CISO as a Service. Se vuoi impostarlo insieme, prenota una call conoscitiva di 30 minuti.
Fonti
- CISA — Critical Vulnerabilities in PHP Require Immediate Patching
- PHP 8.5.12 — note di rilascio ufficiali
- watchTowr — PHP2Shell (CVE-2026-109618 e CVE-2026-109619)
- Unit 42, Palo Alto Networks — Threat Brief
- Huntress — Rapid Response: php2shell
- The Hacker News — PHP Issues Emergency Patches
- Help Net Security — PHP2Shell patched
- Recorded Future — PHP2Shell Exploitation
Materiali da scaricare
Domande frequenti
Cos’è PHP2Shell?
È il nome di due vulnerabilità critiche del motore di PHP, CVE-2026-109618 e CVE-2026-109619, con punteggio CVSS 9,2. Permettono a un attaccante non autenticato di eseguire codice sul server web.
Quali versioni di PHP sono vulnerabili?
Sono vulnerabili tutte le versioni precedenti a PHP 8.5.12, 8.4.27, 8.3.36 e 8.2.35. PHP 8.1 e le versioni precedenti vanno considerate esposte, salvo correzioni specifiche della distribuzione o del fornitore.
Come verifico se il mio sito è vulnerabile?
Controlla la versione esatta di PHP che serve il sito con il comando php -v oppure con una pagina phpinfo temporanea, da cancellare subito dopo. Se è precedente alle versioni corrette e il provider non ha confermato la patch, il sito è esposto.
Aggiornare WordPress o i plugin risolve PHP2Shell?
No. La falla è nel motore di PHP, non nell’applicazione: va aggiornato il runtime PHP sul server.
Ho un hosting condiviso: cosa devo fare?
Su un hosting condiviso PHP lo aggiorna il provider. Verifica la versione con un phpinfo temporaneo e, se non risulta corretta, chiedi all’assistenza una conferma scritta che la patch sia stata applicata.
Dopo l’aggiornamento sono al sicuro?
L’aggiornamento ti protegge da nuovi attacchi. Gli sfruttamenti però sono iniziati prima della patch, quindi conviene controllare file modificati, log e utenti amministratori per escludere una compromissione già avvenuta.