Sicurezza

PHP2Shell: come verificare se il tuo sito è vulnerabile

PHP2Shell (CVE-2026-109618 e 109619): due falle critiche di PHP già sfruttate. Quali versioni aggiornare, come verificare il tuo sito e cosa fare subito.

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:

CVEMeccanismoGravità
CVE-2026-109618Quando PHP esaurisce la memoria durante l'elaborazione di una richiesta, alcuni dati restano inizializzati solo in parte e vengono poi trattati come validi9,2 (CVSS v4.0)
CVE-2026-109619PHP conserva riferimenti a dati di una richiesta dopo che la memoria corrispondente è stata liberata (use-after-free), e una richiesta successiva può sfruttarli9,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.

DataEvento
17 ottobre 2026Amazon individua un primo tentativo di sfruttamento nei propri sistemi di monitoraggio
20 ottobre 2026I dettagli delle falle circolano online. Il team PHP annuncia un rilascio di sicurezza straordinario
21 ottobre 2026Escono PHP 8.5.12, 8.4.27, 8.3.36 e 8.2.35. La CISA statunitense invita ad aggiornare immediatamente
21 ottobre 2026watchTowr segnala tentativi di sfruttamento attivi su entrambe le vulnerabilità
22 ottobre 2026Data 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 PHPVersioni vulnerabiliPrima versione corretta
PHP 8.5precedenti alla 8.5.128.5.12
PHP 8.4precedenti alla 8.4.278.4.27
PHP 8.3precedenti alla 8.3.368.3.36
PHP 8.2precedenti alla 8.2.358.2.35
PHP 7.4, 8.0, 8.1tuttenessun rilascio ufficiale: pacchetti della distribuzione, fornitori LTS o backport minimi del codice sorgente pubblicati dal team PHP
PHP 7.3 e precedentituttenessuna 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.php contenente 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

  1. Aggiorna PHP alla versione corretta del tuo ramo. Il team PHP è esplicito: non esistono mitigazioni complete, l'aggiornamento è l'unica scelta sicura.
  2. 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.
  3. Se non puoi aggiornare oggi, applica le mitigazioni temporanee indicate dal team PHP: - per CVE-2026-109618: impostare memory_limit=-1 in modo che le applicazioni non possano modificarlo, tenere basso post_max_size e limitare la dimensione delle richieste sul web server o sul proxy; - per CVE-2026-109619: impostare session.upload_progress.enabled=0 e riavviare tutti i worker. Su PHP 8.5 impostare anche fatal_error_backtraces=0.

Sono misure ponte, non sostituiscono la patch. Dopo l'aggiornamento, l'impostazione memory_limit=-1 va rivista.

  1. Limita l'esposizione dei sistemi che non possono essere aggiornati subito, ad esempio mettendo il sito in manutenzione o restringendo l'accesso.
  2. Mantieni display_errors = 0 in 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_decode o gzinflate usate 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-checksums o 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

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.

Parliamo di ciò che deve funzionare.

Una call conoscitiva di 30 minuti, senza impegno: capiamo insieme priorità, rischi e il formato di collaborazione più adatto.

eugenio.damaso01@gmail.com