Passa al contenuto

PHP2Shell: la vulnerabilità PHP che sta mettendo in ginocchio l'Europa (guida completa 2026)

28 ottobre 2026 di
Gruppo MS

C'è un tipo di vulnerabilità che spaventa più di ogni altra: quella che non sta nel tuo sito, né nel tuo componente aggiuntivo, né nella tua applicazione. Sta nel motore stesso che esegue il codice di gran parte del web. Questa settimana l'abbiamo vista esplodere in diretta, e ha un nome che promette esattamente ciò che fa: PHP2Shell.

Due falle critiche identificate come CVE-2026-109618 e CVE-2026-109619 permettono a un attaccante, in determinate condizioni, di ottenere l'esecuzione remota di codice su server che eseguono PHP: cioè, secondo le stime più citate in queste settimane, circa il 70% dei siti web mondiali, considerando che PHP è il linguaggio alla base di WordPress, Drupal, Joomla, gestionali aziendali, negozi online e migliaia di applicazioni sviluppate internamente.

Non stiamo parlando di un componente WordPress trascurato o di una password debole. Stiamo parlando del linguaggio stesso. E la conseguenza più scomoda è questa: il tuo sito può essere aggiornato, ben configurato e ben amministrato, e comunque essere vulnerabile perché lo è l'ambiente di esecuzione sottostante.

In questo articolo facciamo il punto completo sull'emergenza: cos'è successo, come funzionano le falle, perché l'Europa — e indirettamente l'Italia — è la regione più colpita al mondo, cosa devi fare adesso se gestisci infrastrutture o clienti, e quali insegnamenti ne traggono investigatori, analisti di intelligence, DPO e professionisti della sicurezza. Senza allarmismo da titoli di cronaca, ma con la lucidità che serve quando la rete intera prende fuoco.

Cos'è PHP2Shell e perché è così grave

PHP2Shell è il nome dato a due vulnerabilità di gravità critica che affliggono il motore PHP, il software che interpreta ed esegue il codice di circa sette siti web su dieci nel mondo.

Entrambe le falle permettono, nelle condizioni giuste, la esecuzione remota di codice (in gergo tecnico, Remote Code Execution o RCE): l'attaccante riesce a far eseguire al server comandi arbitrari, cioè a ottenere una shell — da qui il nome "2Shell". Una RCE è il Santo Graal di qualunque attacco: non serve più trovare le credenziali, non serve sfruttare la logica dell'applicazione, si salta direttamente al controllo della macchina. Da lì derivano la sottrazione di dati, l'installazione di shell web permanenti, l'uso del server come base per attacchi ad altri bersagli, la cifratura dei dati per richieste di riscatto.

Due dettagli rendono la vicenda particolarmente insidiosa:

  1. Il punteggio di gravità è altissimo, ma circolano numeri sbagliati. Nel caos dei primi giorni si è diffusa l'informazione di un punteggio CVSS pari a 10.0. Il valore ufficialmente assegnato è 9.2 per entrambe le CVE (fonte: ricostruzione de Il Sole 24 Ore). Grave? Enormemente. Apocalittico? Dipende dall'esposizione e dalla configurazione — e questa sfumatura è esattamente il tipo di informazione che un professionista deve saper valutare invece di farsi guidare dai titoli.
  2. Le falle sono vecchie. Molto vecchie. Secondo le analisi di Wiz citate da Il Sole 24 Ore, le vulnerabilità interessano codice presente in versioni PHP risalenti a oltre un decennio fa, e almeno una delle due falle riguarda versioni fino alla famiglia PHP 5.4. Tradotto: il problema dormiva nei server del mondo da dieci anni e passa, e qualcuno — chiunque sia stato, e in qualunque competizione ci si trovasse — ha trovato il modo di svegliarlo.

Un elemento che merita nota, perché racconta molto del momento storico: la scoperta delle criticità è stata supportata da sistemi di intelligenza artificiale. E la stessa intelligenza artificiale che accelera la ricerca di falle sta accelerando la scrittura degli strumenti d'attacco. Il cerchio si chiude, e non in modo rassicurante.

La cronologia di un'emergenza in tempo reale

La storia di PHP2Shell è anche una storia di divulgazione coordinata fallita al novanta per cento, e vale la pena ricostruirla perché è una lezione da manuale di gestione delle vulnerabilità.

  • 2024: le avvisaglie. Il problema alla base di CVE-2026-109618 era già emerso durante una verifica esterna della sicurezza del motore PHP. All'epoca, il gruppo di sviluppo non riuscì a individuare una soluzione soddisfacente: il difetto riguardava una parte delicatissima del funzionamento interno del linguaggio e le correzioni proposte avevano conseguenze dirompenti su configurazioni e organizzazione della memoria (fonte: Il Sole 24 Ore). Il difetto resta nel cassetto.
  • 17 ottobre 2026: la prima traccia. La rete di trappole informatiche MadPot di Amazon Threat Intelligence registra un primo tentativo di sfruttamento di PHP2Shell, quattro giorni prima che qualsiasi dettaglio diventasse pubblico. Implicazione sgradevolissima: qualcuno conosceva le falle prima della divulgazione ufficiale.
  • 20 ottobre, verso le 15:00 UTC: il piano scricchiola. I due identificativi CVE iniziano a circolare su forum e social network, con un punteggio CVSS gonfiato (10.0) e un orario di pubblicazione errato. Non ci sono ancora dettagli tecnici sufficienti a scrivere l'attacco, ma l'informazione basta ad allertare la comunità criminale che qualcosa di grosso bolle in pentola.
  • 21 ottobre: la correzione lampo. Il gruppo di sviluppo di PHP, giocando d'anticipo, pubblica gli aggiornamenti correttivi di emergenza con un giorno di anticipo rispetto al previsto, chiudendo le due falle nei rami supportati del linguaggio.
  • 22 ottobre e giorni seguenti: gli impatti reali. Check Point Research stima che una organizzazione su dieci al mondo (10%) abbia registrato tentativi di sfruttamento, con l'Europa in testa alla classifica nera. Diversi siti istituzionali europei vengono messi preventivamente offline come misura di precauzione mentre gli operatori si affrettano a blindare i sistemi (fonti: RAI, Reuters).

Se questa cronologia vi sembra familiare è perché è il copione di Heartbleed, di Log4Shell e di ogni grande "Shell" che ha preceduto questa: la finestra di tempo tra la fuga di notizie, la correzione e l'attacco si sta riducendo a zero, e chi non è organizzato per reagire in ore paga peggio di chiunque altro.

Come funzionano le falle (il minimo tecnico indispensabile)

Non serve essere sviluppatori PHP per capire perché PHP2Shell è diversa dalla media delle vulnerabilità web, ma serve qualche concetto.

Le due vulnerabilità risiedono nella gestione della memoria e dello stato interno del motore PHP. In particolare, CVE-2026-109618 riguarda una corruzione della memoria sfruttabile attraverso condizioni di esaurimento delle risorse (corruzione tramite esaurimento della memoria: l'attaccante manipola il comportamento del motore quando la memoria si esaurisce, un territorio in cui gli stati interni diventano inconsistenti e prevedibilmente sfruttabili).

Il punto chiave per chi amministra infrastrutture è un altro: il vettore d'ingresso passa dall'elaborazione delle richieste HTTP, in particolare dalle richieste multipart (quelle usate per il caricamento di file) e dalle dinamiche di allocazione legate alla dimensione decodificata della richiesta. Il che significa che il traffico malevolo assomiglia — a livello di superficie — al traffico normale, e non esistono firme semplici.

Due conseguenze operative immediate:

  • Non esiste una contromisura completa progettata dal gruppo di sviluppo di PHP: per il progetto stesso, aggiornare è l'unica scelta sicura (fonte: HwUpgrade). Esistono contromisure parziali — ad esempio bloccare l'elaborazione multipart quando non serve, o far rispettare la dimensione decodificata delle richieste sul proxy davanti a PHP — ma sono riduttive, non risolutive.
  • Usare una versione "recente" di PHP non basta: conta la versione effettiva e se contiene o meno la correzione. Le falle toccano codice vecchio di oltre dieci anni e famiglie di versioni fino a PHP 5.4; le correzioni ufficiali sono arrivate per i rami supportati, e per rami datati come PHP 7.4 la copertura passa da canali come Ubuntu Pro o dai fornitori di hosting (fonte: Pasquale Pillitteri).

Piccola curiosità da collezionisti dell'assurdo: in piena emergenza è comparso anche un strumento di controllo per PHP2Shell rilasciato da OpenAI, che però si limita a leggere la versione PHP — utile come termometro, non come diagnosi. Il rischio di falsi negativi e falsi positivi in strumenti costruiti in fretta è un classico di ogni risposta alle emergenze, e sapere pesare la qualità degli strumenti è competenza professionale, non dettaglio.

I numeri: perché l'Europa è in prima fila

Veniamo ai dati dell'impatto, perché sono la parte che dovrebbe far riflettere chiunque operi infrastrutture o clienti in Europa.

Secondo Check Point Research, dal momento della divulgazione dei dettagli:

  • il 10% delle organizzazioni a livello globale ha registrato tentativi di sfruttamento;
  • l'Europa è la regione più colpita al mondo: 14% delle organizzazioni, più del doppio del 6% registrato in Nord America, America Latina e area Asia-Pacifico; l'Africa si ferma al 4%;
  • 16 dei 18 paesi più colpiti sono europei.

Le cifre si muovono in tempo reale e vanno lette come fotografia di un momento, non come consuntivo definitivo. Detto questo, la geografia dell'impatto parla chiaro:

PaeseQuota organizzazioni colpite (%)
Ungheria38
Danimarca32
Austria28
Svezia22
Romania22
Portogallo17
Serbia17
Germania16
Paesi Bassi15
Regno Unito12
Spagna12
Svizzera12

Ungheria al 38%, Danimarca al 32%, Austria al 28%. L'Italia non compare ai vertici assoluti della classifica, ma i paesi in una fascia 12-17% includono Spagna, Svizzera e Regno Unito, con gruppi che registrano tassi in linea con il dato continentale europeo. Anche assumendo lo scenario più benigno per il nostro paese, il messaggio resta: il quadro europeo è il più esposto al mondo, e la spiegazione è meno misteriosa di quanto sembri.

Perché l'Europa? Le ipotesi più plausibili convergono su un mix di fattori:

  • Densità di PMI digitalizzate: il tessuto economico europeo è fatto di piccole e medie imprese con siti istituzionali, negozi online e gestionali su tecnologie PHP datate, spesso delegati ad agenzie web che mantengono decine di installazioni e aggiornano con calendari da altro secolo.
  • Longevità degli asset: quando la vulnerabilità vive nel codice da dieci anni, ogni server che non ha cambiato ambiente di esecuzione dal 2015 è un vettore. L'Europa aziendale conserva, per cultura e per vincoli, molto patrimonio infrastrutturale.
  • Rilevamento più capillare: paradossalmente, parte del numero europeo riflette anche il fatto di essere osservata meglio: più sensori, CERT nazionali attivi e telemetrie più dense significano più tentativi rilevati e conteggiati.

Nota di metodo importante: "colpite" in questi dati significa registrazione di tentativi di sfruttamento, non conferma di compromissione riuscita. Nessuna telemetria può dire dall'esterno se l'attacco è andato a segno. Questo dettaglio è esattamente il tipo di sfumatura che distingue chi fa analisi da chi fa rumore — ed è il motivo per cui la disciplina OSINT esiste.

Il "terzo incomodo": CVE-2026-115560

Come se due falle critiche non bastassero, la settimana si è chiusa con un seguito che pochi hanno notato e che invece conta sul piano operativo.

È emersa una vulnerabilità aggiuntiva nel meccanismo di avanzamento dei caricamenti di PHP, identificata come CVE-2026-115560, che non è coperta dalle versioni correttive di PHP 8.5.12 e correlate che hanno chiuso PHP2Shell. La buona notizia: chi, durante l'emergenza, aveva applicato come contromisura il parametro session.upload_progress.enabled=0 e l'ha lasciata attiva è già coperto e non deve toccare nulla (fonte: bollettino GHSA-6wmf-4rv5-p3rp, ricostruito da Pasquale Pillitteri).

Questa piccola vicenda è un campione quasi perfetto della vita reale di chi fa sicurezza: le contromisure applicate in emergenza non si rimuovono il giorno dopo la correzione, perché (a) non sai mai cosa la correzione non copre e (b) le difese in profondità esistono esattamente per i casi in cui qualcosa ti sfugge. L'atteggiamento "adesso che è corretto tolgo il rimedio temporaneo" è il modo più economico per trasformare un'emergenza superata in un incidente evitabile.

Cosa fare ora: la checklist operativa

Ecco la parte che potete girare al vostro reparto informatico, al vostro fornitore di hosting o al cliente in panico. In ordine di priorità.

1. Inventario. Prima domanda: dove gira PHP?

Non si può correggere ciò che non si sa di avere. Ricompilate l'inventario di server, hosting, server virtuali, ambienti di prova dimenticati, pagine promozionali del 2019 e quel negozio online in manutenzione da tre anni. Versione PHP per ognuno. Se questa fase richiede più di un giorno, avete trovato il vero problema della vostra sicurezza.

2. Aggiornamento: l'unica soluzione completa.

Per il gruppo di sviluppo di PHP non esiste una contromisura totale: la versione correttiva dei rami supportati è l'unica risposta definitiva. Chi ospita il codice su infrastrutture gestite deve chiedere per iscritto conferma al fornitore dell'applicazione delle correzioni per entrambe le CVE — "conferma" nel senso di evidenza documentale, non di rassicurazione telefonica.

3. Verificare le versioni datate.

Rami tipo PHP 7.4 ricevono coperture tramite canali estesi (per esempio Ubuntu Pro) o direttamente dai fornitori di hosting. Se qualcosa gira su versioni non più supportate, PHP2Shell è solo l'occasione per pianificarne la dismissione: la prossima volta non ci sarà correzione disponibile.

4. Mantenere le contromisure di profondità.

Blocco o limitazione del multipart dove non serve, rispetto della dimensione decodificata delle richieste sul proxy davanti a PHP, session.upload_progress.enabled=0 dove compatibile. La correzione chiude la porta d'ingresso; le contromisure riducono la superficie che resterà esposta alla prossima falla.

5. Caccia alla compromissione.

Se gestivate PHP esposto prima del 21 ottobre: verificate la presenza di shell web, temi e componenti aggiuntivi non installati da voi, account amministrativi nuovi, attività pianificate sospette. Per WordPress, la via più semplice indicata dagli analisti è controllare Aspetto > Temi per evidenziare componenti installati da terzi. Un tentativo di attacco registrato non è una compromissione, ma l'unico modo di dormire sonni tranquilli è andare a guardare.

6. Isolamento se non si può aggiornare.

Dove l'aggiornamento non è immediatamente fattibile, le autorità di sicurezza informatica (tra cui il centro nazionale britannico NCSC) raccomandano di valutare isolamento o sospensione temporanea dei servizi esposti, in particolare quelli che trattano dati o funzioni sensibili. È la stessa logica che ha portato siti istituzionali europei offline: meglio un giorno fuori servizio che sei mesi di gestione di un incidente.

7. Comunicazione.

Se siete DPO o consulenti: la domanda giusta da porsi subito non è "siamo aggiornati?" ma "se fossimo stati compromessi, quali obblighi scattano?". Misure di sicurezza inadeguate in occasione di una vulnerabilità così pubblicizzata sono difficili da difendere davanti a un Garante. Ne parliamo sotto.

La lezione OSINT: leggere l'emergenza come un analista

Qui veniamo al cuore del valore per chi legge questo blog: PHP2Shell non è solo un incidente tecnico, è un esercizio di intelligence sulle minacce consumato in una settimana. Vediamo cosa insegna a chi fa analisi professionalmente.

Primo: i tempi della divulgazione si sono dissolti. Tra la fuga di notizie del 20 ottobre e la correzione del 21 è passato un giorno; tentativi di sfruttamento registrati su trappole informatiche quattro giorni prima della fuga. La finestra di opportunità tra "l'attaccante sa" e "il difensore sa" si è compressa fino quasi all'inversione. Chiunque gestisca il monitoraggio con cadenza settimanale sta giocando a scacchi in simultanea contro chi muove ogni ora. Le fonti primarie — bollettini, registri delle modifiche, repository pubblici, telemetrie — battono qualunque riepilogo via newsletter, purché si sappia dove guardare.

Secondo: l'intelligenza artificiale ha cambiato la geometria del gioco. La scoperta delle falle è stata supportata da sistemi di intelligenza artificiale, e nell'ecosistema criminale la scrittura degli strumenti d'attacco viene accelerata dagli stessi sistemi. L'impatto di modelli sempre più potenti sul ciclo di vita delle vulnerabilità — più falle trovate più in fretta, attacchi sviluppati più in fretta, finestre di difesa più corte — è uno dei temi strutturali della sicurezza di questi anni, e PHP2Shell ne è il caso di studio più recente.

Terzo: la disinformazione fa parte dell'evento. Nel giro di poche ore sono circolati punteggi gonfiati (10.0 contro 9.2 reale), orari errati e strumenti di verifica superficiali. Saper tornare alla fonte primaria — il bollettino, il repository, il comunicato del gruppo di sviluppo — e saper distinguere dato, stima e rumore è la differenza tra un analista e un ripetitore di post. È così che si lavora in contesti dove l'informazione corre più veloce della verifica: a ritroso, dalle sensazioni alle fonti.

Quarto: la geografia dell'impatto è essa stessa informazione OSINT. Perché l'Ungheria al 38%? Cosa dice di telefonia, hosting e parco server centro-europeo la distribuzione dei tentativi? Gli insiemi di dati sull'impatto geografico delle campagne — letti criticamente, con tutte le riserve sui bias di raccolta — sono materia prima preziosa per chi valuta il rischio di infrastrutture e clienti in un dato paese.

Chi fa questo mestiere sa che l'emergenza vera non è la falla: è il vuoto di competenze nel leggerne gli sviluppi. Ed è esattamente il terreno che coltiviamo quotidianamente in Zuretti Academy, dove il corso di Open Source Intelligence forma investigatori, analisti e professionisti della sicurezza a muoversi nell'era in cui il ciclo informativo si misura in ore.

Le implicazioni legali e di privacy: cosa cambia per DPO e avvocati

Chiusura di raggio, ma essenziale per parte del nostro pubblico.

PHP2Shell è anche un evento GDPR, in potenza. Se un'organizzazione che tratta dati personali è stata compromessa tramite queste vulnerabilità, scattano i meccanismi noti: notifica all'autorità di controllo entro 72 ore dalla presa di coscienza (art. 33), comunicazione agli interessati ove previsto (art. 34), documentazione della violazione interna.

Ma la questione più delicata è a monte: la responsabilità per non aver aggiornato. Una vulnerabilità che da una parte riceve copertura mediatica planetaria, bollettini congiunti e correzioni pubblicate per giorni non è "l'incidente imprevedibile". Per un titolare del trattamento o un responsabile della sicurezza che decidesse di non aggiornare, dimostrare le "misure tecniche e organizzative adeguate" di cui all'art. 32 diventa un esercizio di arrampicata sugli specchi. Lo stesso vale per chi delega a fornitori: la scelta del fornitore e la vigilanza su di esso restano responsabilità da documentare, non da presumere.

Per avvocati e DPO che assistono PMI: la finestra post-emergenza è il momento in cui costruire il pezzo di carta che può valere una causa. Messaggi di sollecito, evidenze di verifica, tempistiche di aggiornamento del fornitore. Tutta roba che si raccoglie adesso — sul sentiero dell'incidente — o mai più.

E una riflessione finale per chi fa indagini digitali: PHP2Shell genererà nei prossimi mesi una lunga coda di compromissioni, fughe di dati e frodi la cui analisi forense richiederà data di aggiornamento, versione dell'ambiente di esecuzione e ricostruzione precisa della finestra di esposizione. Saper stabilire se e quando un server era vulnerabile — dal fronte pubblico, con evidenze — è competenza OSINT e forense allo stesso tempo.

Conclusioni: il pavimento si è mosso, e si muoverà ancora

PHP2Shell conferma tre verità scomode che questo blog ripete da sempre:

  1. La catena di fornitura è il bersaglio. Il rischio più alto non è il tuo codice: è il codice sotto il tuo codice. Ambienti di esecuzione, librerie, dipendenze.
  2. La finestra di reazione è collassata. Tra fuga di notizie, correzione e attacco ora si misurano ore, non settimane. Chi non ha processi reagisce a cose già accadute.
  3. Le competenze di lettura valgono quanto quelle di esecuzione. Saper distinguere 9.2 da 10.0, tentativo da compromissione, contromisura da soluzione: è quello che trasforma un'onda di panico in una risposta efficace.

Se questa emergenza vi ha trovati impreparati — o se semplicemente volete imparare a leggerle con occhio professionale prima della prossima — vale la pena fare due cose. La prima è investire in formazione seria: il corso OSINT di Zuretti Academy copre esattamente le metodologie di raccolta, verifica e analisi che in settimane come questa valgono oro. La seconda è affidarsi a un'analisi della propria situazione specifica: le consulenze private di Privacy e Security di Zuretti nascono per trasformare il "speriamo bene" in un piano.

La prossima Shell è già in codice da qualche parte. L'unica domanda è se vi troverà pronti.