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.
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.
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.
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 #
- PHP: comunicato sulle versioni con la correzione
- PHP su GitHub: scheda della falla CVE-2026-109618
- Wiz, OpenAI e Calif: il sito dedicato a PHP2Shell
- OpenAI: la scoperta delle falle e la risposta coordinata
- W3Techs: diffusione di PHP e delle sue versioni