Insights

PHP2Shell, la falla di PHP che espone anche i siti web aggiornati

Sono due, si chiamano PHP2Shell e permettono di eseguire programmi sul server senza password: a correggerle deve essere chi gestisce il server.

Mercoledì gli sviluppatori di PHP, il linguaggio di programmazione con cui funzionano WordPress e gran parte dei siti web, hanno pubblicato in fretta la correzione di due falle molto gravi, chiamate PHP2Shell. Sfruttandole, un malintenzionato può mandare al sito una richiesta preparata apposta ed eseguire sul server programmi scelti da lui, senza password e senza entrare nel pannello di amministrazione. Le due falle hanno ricevuto un punteggio di 9,2 su 10 nella scala usata per misurare la gravità delle vulnerabilità.

Le falle sono state trovate negli ultimi mesi da tre gruppi di ricercatori, e in parte da un'intelligenza artificiale. Wiz, una società di sicurezza informatica, le ha scoperte e segnalate entrambe, mentre Calif, un'azienda dello stesso settore, ne ha trovata una con GPT-5.6 Sol, un modello di OpenAI, nell'ambito di un'iniziativa con cui OpenAI mette a disposizione le sue AI per cercare falle nel software libero. Ha collaborato anche il gruppo di sicurezza di Codex, lo strumento di OpenAI che scrive codice. Nel comunicato con cui ha raccontato la vicenda OpenAI sostiene che, per quanto ne sa, l'AI sia arrivata prima degli hacker, e che per due mesi abbia coordinato gli sviluppatori di PHP, Wiz, Cloudflare e le società di hosting perché preparassero le protezioni prima dell'annuncio.

La correzione sarebbe dovuta uscire giovedì 22 ottobre. Martedì però i codici con cui le due falle sono catalogate erano circolati su Hacker News, un sito di notizie e discussioni per programmatori, e sui social network, così gli sviluppatori hanno anticipato l'uscita di un giorno. Il problema riguarda chiunque abbia un sito in PHP: secondo W3Techs, che misura le tecnologie dei siti più visitati, PHP è alla base del 69,3 per cento dei siti di cui è nota la tecnologia usata sul server. Alcuni gestori hanno preferito spegnere i propri siti in attesa di aggiornarli: fra le pagine non raggiungibili mercoledì c'erano il sito del governo finlandese, quello dell'agenzia per la cybersicurezza dei Paesi Bassi e alcune voci di Wikipedia.

Non è chiaro se gli attacchi siano già cominciati su larga scala. La società di sicurezza watchTowr ha scritto di averne osservati sui server trappola che usa per studiare gli hacker, mentre Huntress, un'altra società del settore, la mattina di mercoledì non ne aveva visti sui computer e sui server dei suoi clienti. Anche le versioni colpite sono incerte: gli sviluppatori di PHP non le elencano, Wiz sostiene che ogni versione dalla 5.4, uscita nel 2012, abbia almeno una delle due falle, e watchTowr parla di tutte le versioni dalla 5.

Come capire se il tuo sito web usa PHP, e quale versione #

Se il tuo sito è fatto con WordPress, Joomla, Drupal, PrestaShop o Magento, usa PHP. Su WordPress trovi la versione nel pannello di amministrazione, in Strumenti, Salute del sito, scheda Informazioni, sezione Server, alla riga «Versione di PHP». Per gli altri siti la versione è indicata nel pannello dell'hosting, oppure puoi chiederla a chi gestisce il sito.

La versione ha tre numeri, come 8.3.36: i primi due indicano il ramo, cioè la serie di versioni, e il terzo l'aggiornamento. Gli sviluppatori di PHP hanno corretto quattro rami, con le versioni 8.5.12, 8.4.27, 8.3.36 e 8.2.35. Se il tuo sito ha una di queste versioni, o una successiva, è protetto.

Per PHP 8.1 e le versioni precedenti, invece, il progetto PHP non pubblica più nuove versioni. Sono versioni fuori supporto, ma ancora molto diffuse: sempre secondo W3Techs, più di un sito su tre fra quelli in PHP usa la versione 7 o una più vecchia. Questo non significa per forza che siano senza protezione. Gli sviluppatori hanno messo a disposizione il codice della correzione anche per PHP 7.4, 8.0 e 8.1, e alcune distribuzioni di Linux, i sistemi operativi installati sui server, correggono per conto loro le versioni che includono. Il numero di versione, da solo, non dice quindi se il tuo sito sia protetto: serve una risposta dell'hosting.

Due colonne. A sinistra i rami ancora aggiornati, con la prima versione corretta evidenziata in verde: PHP 8.5 dalla 8.5.12, PHP 8.4 dalla 8.4.27, PHP 8.3 dalla 8.3.36, PHP 8.2 dalla 8.2.35; sotto, la nota che la 8.2 riceve correzioni solo fino al 31 dicembre 2026. A destra i rami fuori supporto, senza nuove versioni ufficiali: per PHP 8.1, 8.0 e 7.4 esiste solo il codice sorgente della correzione, per la 7.3 e le precedenti niente; sotto, la nota che sono protetti solo se l'hosting o la distribuzione Linux applicano la correzione.
Le versioni di PHP con la correzione delle falle PHP2Shell. Illustrazione; fonte: comunicato degli sviluppatori di PHP.

Vulnerabilità di PHP e WordPress: perché aggiornare i plugin non basta #

Le falle sono in PHP, cioè nel software che sul server legge il codice del sito e lo esegue, e non in WordPress, nel tema o nei plugin. Il comunicato degli sviluppatori di PHP spiega che il rischio più alto riguarda Apache, il software che su molti server consegna le pagine ai visitatori, quando esegue PHP attraverso un suo componente aggiuntivo, il modulo PHP. In quella configurazione basta la richiesta di un visitatore qualsiasi, senza nome utente né password, e l'attacco parte prima ancora che il codice del sito venga eseguito. Sul sito che i ricercatori hanno dedicato alle falle, Wiz, OpenAI e Calif scrivono che è esposto anche un sito fatto di una sola pagina con la scritta "Hello World", e che hanno dimostrato l'attacco sulle ultime versioni di WordPress, Drupal e Joomla. Un sito con WordPress e tutti i plugin aggiornati è quindi esposto quanto uno trascurato.

Tre riquadri in colonna, collegati da frecce. Uno: la richiesta di un visitatore qualsiasi, senza nome utente né password, inviata con un form, arriva al server. Due, evidenziato con un bordo scuro: PHP legge i dati della richiesta, con Apache e il modulo PHP oppure con PHP-FPM; qui sono le falle. Tre, attenuato: WordPress, tema e plugin, il codice del sito aggiornato o no, che non è ancora partito.
Il punto in cui colpiscono le falle PHP2Shell, prima del codice del sito. Illustrazione semplificata; fonti: comunicato degli sviluppatori di PHP e sito dei ricercatori.

Il meccanismo riguarda il modo in cui PHP legge le informazioni che arrivano dai form delle pagine, come quello per allegare un file. La richiesta del malintenzionato è costruita per esaurire la memoria a disposizione di PHP mentre le prepara: in quel momento restano dati scritti a metà, che la stessa richiesta o quella successiva possono usare per eseguire istruzioni sul server. La scheda tecnica della prima falla descrive l'attacco completo su Apache. Per la seconda, i ricercatori hanno mostrato che la tecnica riesce anche con PHP-FPM, l'altra configurazione diffusa di PHP sui server, sfruttando una funzione attiva per impostazione predefinita.

La seconda falla permette anche, senza eseguire programmi e quindi in un modo più difficile da individuare, di leggere la memoria del server, dove possono trovarsi password, chiavi di accesso e dati degli altri visitatori. Alcune impostazioni riducono il rischio senza aggiornare PHP, e il comunicato le elenca. Sono però parziali, e vanno applicate da chi gestisce il server: impostate dal codice del sito non hanno effetto. Un plugin di WordPress che promette di correggere le falle, quindi, non può farlo, e per lo stesso motivo non serve il captcha del form, che il sito controlla solo dopo che PHP ha già letto la richiesta.

Cloudflare protegge dalle falle PHP2Shell? #

Solo in parte. Cloudflare gestisce una rete che riceve le richieste dei visitatori prima che arrivino a molti siti, per proteggerli e renderli più veloci, come spiega l'articolo su cos'è Cloudflare e quanto costa. Mercoledì l'azienda ha aggiunto regole di emergenza che bloccano le forme di attacco già note, anche nel piano gratuito, ma Cloudflare stessa le considera un rimedio provvisorio: solo l'aggiornamento di PHP protegge del tutto il sito.

Le regole poi servono solo se il server del sito accetta richieste esclusivamente da Cloudflare, come ricorda Patchstack, una società che si occupa della sicurezza dei siti WordPress. Se il server risponde anche a chi lo contatta direttamente, un hacker che ne conosce l'indirizzo può aggirare la protezione. Anche questo dipende dall'hosting, ed è un'altra domanda da porgli.

Due percorsi. Sopra, la richiesta all'indirizzo del sito va dal malintenzionato a Cloudflare, evidenziato in verde con le regole di emergenza, e poi al server: gli attacchi noti si fermano a Cloudflare, anche nel piano gratuito. Sotto, la richiesta all'indirizzo del server va dal malintenzionato direttamente al server, evidenziato in nero: se il server risponde a tutti, Cloudflare non vede la richiesta.
Perché le regole di Cloudflare non bastano se il server risponde a tutti. Illustrazione semplificata; fonte: Patchstack.

Aggiornamento di PHP: cosa chiedere oggi al tuo hosting #

Su un hosting condiviso, cioè un server su cui convivono i siti di molti clienti, è la società di hosting a installare e aggiornare PHP, e lo stesso vale per i servizi gestiti, quelli in cui non hai accesso al server. Se invece il sito è su un server tuo, o su un server virtuale che hai noleggiato, l'aggiornamento tocca a te o a chi lo gestisce per tuo conto.

Molti hosting condivisi permettono di scegliere la versione di PHP da un menu del pannello. Se il tuo sito è su una versione fuori supporto, la scelta più sicura è passare a una versione che resterà aggiornata ancora a lungo, come PHP 8.4 o 8.5, e non alla 8.2, che riceverà correzioni solo fino alla fine del 2026. Il passaggio va però provato prima: ogni versione di PHP elimina o cambia alcune istruzioni del linguaggio, e un tema o un plugin vecchio può bloccarsi o dare errori.

Prima di scrivere all'hosting controlla la versione di PHP del tuo sito: con il numero in mano è più facile ottenere una risposta precisa. Poi chiedi:

  • Avete già installato la correzione delle falle PHP2Shell (CVE-2026-109618 e CVE-2026-109619) sul server del mio sito?
  • La versione di PHP del mio sito riceve ancora aggiornamenti di sicurezza, vostri o degli sviluppatori di PHP?
  • Se no, posso passare a PHP 8.4 o 8.5, e come provo il sito prima del passaggio?
  • Se il sito è protetto da Cloudflare: il server accetta richieste solo da Cloudflare?

Se non sai chi gestisce il server del tuo sito, o la risposta dell'hosting non ti è chiara, scrivimi: ti aiuto a capire su quale server è il sito e cosa va aggiornato. Di hosting e sicurezza mi occupo per tutti i siti che seguo.

Domande frequenti #

Cos'è PHP2Shell? #

È il nome di due falle di PHP, il linguaggio con cui funzionano WordPress e gran parte dei siti web, corrette il 21 ottobre 2026. Permettono a chiunque di eseguire programmi sul server del sito, senza password. Le due falle sono catalogate come CVE-2026-109618 e CVE-2026-109619.

Il mio sito WordPress è a rischio? #

Sì, se il server usa una versione di PHP senza la correzione: le falle sono in PHP, non in WordPress. Le versioni aggiornate sono 8.5.12, 8.4.27, 8.3.36 e 8.2.35. Vanno bene anche le versioni più vecchie che l'hosting ha corretto per conto suo.

Chi ha scoperto la falla di PHP? #

Wiz, una società di sicurezza informatica, ha individuato e segnalato entrambe le falle. Calif, un'azienda dello stesso settore, ne ha trovata una con GPT-5.6 Sol, un modello di OpenAI, che ha poi coordinato la preparazione delle protezioni.

Basta aggiornare WordPress e i plugin? #

No. Aggiornare WordPress, temi e plugin resta utile, ma non corregge queste falle: sono in PHP, il software che esegue il sito, e su alcuni server l'attacco parte prima ancora che il codice del sito venga eseguito. Serve una nuova versione di PHP, che di solito installa l'hosting.

Come si fa l'aggiornamento di PHP su WordPress? #

Non da WordPress: PHP è installato sul server, e la versione si cambia dal pannello dell'hosting o la cambia chi gestisce il server. Prima del passaggio verifica che tema e plugin funzionino con la nuova versione.

Come si controlla la versione di PHP del sito? #

Su WordPress, in Strumenti, Salute del sito, scheda Informazioni, sezione Server. Per gli altri siti la versione è nel pannello dell'hosting, oppure puoi chiederla a chi gestisce il sito.

Cosa fare se il sito usa PHP 7, 8.0 o 8.1? #

Chiedi all'hosting se corregge quella versione per conto suo. Se non lo fa, passa a PHP 8.4 o 8.5 dal pannello, dopo aver verificato che tema e plugin funzionino con la nuova versione.

Cloudflare protegge dalla falla di PHP? #

In parte. Cloudflare ha aggiunto regole che bloccano gli attacchi noti, anche nel piano gratuito, ma funzionano solo se il server accetta richieste esclusivamente da Cloudflare. L'unica protezione completa è aggiornare PHP.

Fonti #

sicurezzaWordPressCloudflare

Chi scrive

Andrea Frison sviluppa siti web, app e piattaforme su misura. Vive a Venezia in centro storico, è laureato in Informatica a Ca’ Foscari ed è sul web da oltre vent’anni.

Serve una mano su un progetto del genere?

Scrivimi a info@andreafrison.com. Leggo tutto e rispondo sempre.