PHP2Shell: la Sua infrastruttura PHP è a rischio?

Una guida pratica del SOC per verificare le vulnerabilità dei Suoi sistemi PHP, valutarne l’esposizione e adottare le misure giuste per proteggere l’infrastruttura.

PHP2Shell: la Sua infrastruttura PHP è a rischio?
In breve: cosa è successo e cosa fare

Due vulnerabilità critiche, CVE-2026-109618 e CVE-2026-109619 (CVSS v4.0: 9.2, punteggio assegnato da PHP), interessano il runtime di PHP e possono consentire l’esecuzione di codice da remoto senza autenticazione. PHP ha rilasciato le correzioni il 21 ottobre 2026: 8.2.35, 8.3.36, 8.4.27 e 8.5.12. Una terza vulnerabilità, CVE-2026-115560, divulgata il 23 ottobre, resta senza patch in tali versioni e presenta condizioni di sfruttamento specifiche.

La priorità è individuare la versione di PHP che serve effettivamente il traffico web, installare la versione che contiene le correzioni e riavviare o ricaricare i processi PHP. Non basta verificare con php -v: la CLI, PHP-FPM e il modulo PHP di Apache possono eseguire versioni diverse. Includa nel Suo inventario i container, gli ambienti di test e i prodotti che integrano PHP.

Parallelamente, monitori i segnali di sfruttamento: processi web che avviano shell, richieste multipart sospette, crash dei worker e nuovi file PHP nelle directory di upload.

In breve: cosa è successo e cosa fare

Perché è importante

Secondo W3Techs, al 21 ottobre 2026 PHP era utilizzato dal 69,2% dei siti web di cui è noto il linguaggio lato server, una statistica che Hadrian ha utilizzato nella propria analisi di PHP2Shell per illustrare la potenziale portata dell’esposizione. La percentuale non significa che il 69,2% dei siti sia vulnerabile; l’esposizione reale dipende dalla versione installata, dai pacchetti del distributore e dalla configurazione del sistema.

L’esposizione non è solo teorica. Wiz Research ha dimostrato l’esecuzione di codice senza autenticazione sulle attuali immagini container ufficiali di WordPress, Drupal e Joomla. Le installazioni standard dei CMS sono quindi bersagli diretti, senza che sia necessaria alcuna configurazione particolare.

Cosa sappiamo dello sfruttamento al 27 ottobre

Amazon Threat Intelligence ha osservato un tentativo nei propri honeypot MadPot il 17 ottobre, prima della pubblicazione delle vulnerabilità e delle patch. L’analisi retroattiva dei log dovrebbe quindi partire dal 17 ottobre 2026. In seguito sono stati segnalati tentativi di scansione e di sfruttamento, e alcuni PoC sono diventati pubblici.

Il 24 ottobre è emersa la prima conferma pubblica di alta qualità di uno sfruttamento riuscito: Adel Karimi, detection & response lead di Perplexity, ha registrato nei propri honeypot 35 shell avviate da due indirizzi IP, su Apache mod_php con PHP 8.4.26, tramite una catena HTTP in quattro fasi corrispondente a un PoC pubblico. Le evidenze includevano un dump di memoria di 800 KiB, che ha portato Karimi a concludere “RCE confermata con divulgazione di memoria sfruttabile”. Il risultato è stato convalidato in modo indipendente da Marcus Hutchins (Expel) come “di gran lunga la conferma di sfruttamento in the wild di più alta qualità finora”. Karimi ha tuttavia sottolineato che il test è stato eseguito su un profilo mod_php a singolo worker, volutamente favorevole, e non misura l’affidabilità con un numero diverso di worker, altre build o altre applicazioni.

Il 26 ottobre la CISA ha aggiunto entrambe le CVE al proprio catalogo Known Exploited Vulnerabilities (KEV), fissando al 29 ottobre il termine per la correzione da parte delle agenzie federali statunitensi. Separatamente, CYFIRMA ha segnalato, con un livello di confidenza moderato, una campagna di scansione e ricognizione attribuita all’ecosistema Lazarus, rivolta a 216 host PHP privi di patch o mitigati solo in parte, attività di ricognizione, non sfruttamento confermato.

La parte tecnica: individuare e correggere i sistemi vulnerabili
1. Censire tutti i punti in cui è in esecuzione PHP
  • Verifichi il CMDB, gli scanner di vulnerabilità, le configurazioni dei server, i repository e le immagini container.

  • Includa VM, App Service, Kubernetes, container, ambienti di staging/test, applicazioni on-premise e prodotti/appliance di terze parti che integrano PHP.

  • Dia priorità ai sistemi esposti su Internet, in particolare a quelli che eseguono Apache mod_php, e alle applicazioni che accettano upload.

  • Utilizzi l’header X-Powered-By o il fingerprinting esterno solo come indizi: non confermano la versione effettiva del runtime.

2. Verificare la versione che serve il traffico web

Non si basi soltanto sulla versione della CLI. La versione mostrata da php -v può differire da quella di PHP-FPM o del modulo Apache. Le verifichi separatamente:

Per i pacchetti forniti dalle distribuzioni Linux, verifichi se esiste un backport della patch. Un numero di versione apparentemente più vecchio non significa automaticamente che il pacchetto sia vulnerabile; consulti il changelog della distribuzione.

3. Determinare la modalità di esecuzione (SAPI) - il rischio varia

Il rischio non è lo stesso per ogni installazione. La tabella riassume ciò che è stato confermato dai ricercatori e ciò che emerge dall’analisi del codice. Se mod_php è caricato e serve applicazioni pubbliche, il sistema rientra nella categoria di rischio molto elevato.

4. Applicare la patch e confermare che sia in esecuzione il codice aggiornato

Installi la versione con le correzioni per il ramo in uso. Quindi riavvii o ricarichi i servizi PHP-FPM/Apache e i worker interessati, secondo le Sue procedure operative. Verifichi nuovamente la versione attraverso il percorso utilizzato dall’applicazione web. Aggiornare il pacchetto senza riavviare i processi può lasciare i worker esistenti ancora in esecuzione con il codice vulnerabile.

Per PHP 8.1 e versioni precedenti, verifichi se il Suo distributore fornisce patch con backport documentati. Se non esiste una correzione supportata, pianifichi una migrazione. Ricostruisca le immagini container a partire da immagini di base aggiornate e le ridistribuisca; aggiornare l’host non aggiorna PHP all’interno del container.

5. Verificare gli override INI per richiesta (consumer per CVE-2026-109619)

Gli avvisi generati durante l’applicazione delle impostazioni INI per directory possono fungere da “consumer” nella catena di CVE-2026-109619. Cerchi le direttive php_value / php_flag / php_admin_* in .htaccess e nella configurazione di Apache, nonché PHP_VALUE / PHP_ADMIN_VALUE inviati da nginx a FPM. Nascondere gli errori non protegge, perché si accede allo stato globale prima che PHP decida se visualizzare il messaggio. Sposti la configurazione in php.ini o nel pool FPM.

6. Mitigare temporaneamente CVE-2026-115560

CVE-2026-115560 è un vettore distinto, divulgato il 23 ottobre e ancora privo di patch al 27 ottobre — si prevede che PHP pubblichi il bollettino di sicurezza completo, con le versioni interessate e il punteggio CVSS, insieme alla prossima release, per la quale non è stata annunciata una data. Secondo l’avviso di PHP, il rischio sussiste solo quando si verificano contemporaneamente tre condizioni:

1.  session.serialize_handler è php_binary o php_serialize;

2.  l’applicazione imposta l’handler su php tramite ini_set() prima di session_start(); e

3.  session.upload_progress.enabled resta abilitato.

Le applicazioni che non cambiano l’handler di sessione in fase di esecuzione non sono esposte attraverso questo specifico vettore. Misura temporanea: impostare session.upload_progress.enabled=0 in php.ini o .user.ini, oppure tramite la configurazione del pool PHP-FPM. Verifichi l’effetto sulle funzionalità di upload, quindi ricarichi i servizi e confermi l’impostazione effettiva. Questa misura non sostituisce le patch per CVE-2026-109618 e CVE-2026-109619.

7. Controlli compensativi e relativi limiti

Se non può applicare subito le patch, valuti l’isolamento temporaneo del sistema esposto e controlli che riducano il traffico multipart. Ogni modifica deve essere approvata, testata e monitorata. Le regole WAF possono ridurre alcuni tentativi, ma non correggono il runtime e hanno un’efficacia limitata contro richieste formalmente valide.

Non consideri come una correzione le seguenti misure:

  • nascondere gli errori (display_errors=Off, error_reporting, log_errors=Off o l’operatore @)- l’attacco avviene prima dell’esecuzione del codice applicativo;

  • la modalità di manutenzione del CMS;

  • regole WAF basate su firme del payload (le richieste malevole sono formalmente valide).

L’assenza di errori nei log non dimostra che il sistema non sia stato preso di mira. Non testi i sistemi di produzione con PoC pubblici: molti sono inaffidabili, alcuni possono contenere codice non sicuro e un risultato negativo non dimostra che il server non sia vulnerabile.

Rilevamento e risposta

Oltre all’applicazione delle patch, il SOC raccomanda un’analisi retroattiva dei sistemi esposti almeno a partire dal 17 ottobre 2026, laddove esista telemetria. Correli gli accessi sospetti con l’esecuzione di processi, le modifiche ai file, le connessioni in uscita e gli eventi di autenticazione. L’assenza di telemetria o di alert non dimostra che lo sfruttamento non sia avvenuto.

1. Telemetria dei processi / EDR

Generi un alert per qualsiasi processo avviato da php-fpm, php-cgi, httpd o apache2 che lanci una shell o strumenti di download (sh, bash, dash, curl, wget, nc, python, perl). In condizioni normali questo comportamento è raro e va trattato come una possibile compromissione.

2. Log web e PHP

•   Raffiche di richieste POST multipart/form-data dalla stessa origine, in particolare con un numero insolito di parti o di header.

•   Nomi di campo annidati in profondità o richieste che includono PHP_SESSION_UPLOAD_PROGRESS, anche verso endpoint che non dovrebbero accettare upload.

•   Risposte HTTP 500 ripetute, crash o riavvii imprevisti dei worker PHP.

•   Cookie PHPSESSID malformati o insolitamente lunghi ed errori ripetuti (SIGSEGV, AH00052, zend_mm_heap corrupted, "Allowed memory size … in Unknown on line 0") nei log di PHP, Apache o FPM.

3. File system e persistenza

•   File PHP nuovi o modificati nelle directory di upload, di cache o accessibili via web; verifichi timestamp, proprietario e contenuto.

•   Nuovi cron job per l’utente del server web, chiavi SSH o account aggiunti di recente; connessioni in uscita insolite avviate dai worker web.

4. Come utilizzare gli indicatori di compromissione (IOC)

Tratti gli IOC come punti di partenza per la correlazione, non come prove a sé stanti: alcuni indirizzi potrebbero appartenere a infrastrutture di anonimizzazione o comparire nel traffico legittimo. Una corrispondenza non conferma una compromissione e non giustifica un blocco automatico. Convalidi la fonte, la data e il contesto di ciascun indicatore, confrontandolo con la telemetria host/di rete.

Risposta agli incidenti: se vi sono segnali credibili di compromissione

1.  Isoli il sistema interessato e limiti l’accesso di rete senza distruggere le evidenze.

2.  Conservi i log e, ove possibile, un’immagine del disco e gli artefatti rilevanti di memoria/processi.

3.  Ruoti tutte le credenziali accessibili al processo web: password dei database, chiavi API, token e segreti .env.

4.  Prosegua l’indagine alla ricerca di persistenza, esfiltrazione e movimento laterale. Il solo aggiornamento di PHP non rimuove l’accesso di un attaccante se il sistema era già stato compromesso.

5.  Effettui l’escalation al team SOC/IR e valuti gli obblighi di notifica applicabili (GDPR, NIS2).


Tabelle di riferimento

Versioni interessate e corrette

Le due CVE corrette a confronto
Piano d’azione consigliato

Fonti e riferimenti


[1]  PHP Security Advisory — GHSA-w8hw-w9fx-j79w (CVE-2026-109618) — https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w

[2]  PHP Security Advisory — GHSA-6wmf-4rv5-p3rp (CVE-2026-109619) — https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp

[3]  PHP official notice — Session upload progress (CVE-2026-115560), 23 ottobre — https://www.php.net/archive/2026.php#2026-10-23-1

[4]  Amazon Threat Intelligence — MadPot observations, 17–21 ottobre 2026 — https://aws.amazon.com/blogs/security/amazon-threat-intelligence-identifies-php2shell-exploitation-prior-to-public-disclosure-in-madpot/

[5]  Cloudflare — PHP2Shell: WAF mitigations and their limits — https://blog.cloudflare.com/php-vulnerabilities-waf-protection/

[6]  CISA — Critical Vulnerabilities in PHP Require Immediate Patching — https://content.govdelivery.com/accounts/USDHSCISA/bulletins/42ff5ac

[7]  VulnCheck — exploit research update, 23 ottobre 2026 — https://www.vulncheck.com/blog/php2shell-vulnerabilities

[8]  Wiz Research — PHP2Shell technical disclosure (RCE su container CMS) — https://www.wiz.io/blog/php2shell-php-rce

[9]  Censys — PHP2Shell services (dati dinamici, indicativi) — https://php2shell.censys.com/

[10]       Red Hat — RHSB-2026-013 (pacchetti/distribuzioni) — https://access.redhat.com/security/vulnerabilities/RHSB-2026-013

[11]       AWS Security Blog — WAF mitigating controls, 21 ottobre 2026 — https://aws.amazon.com/blogs/security/using-aws-waf-to-apply-mitigations-for-php2shell-rce-vulnerabilities-cve-2026-109618-and-cve-2026-109619/

[12]       Recorded Future News — exploitation attempts and corrections (incl. la revisione di Sophos) — https://therecord.media/php-php2shell-exploitation-attempts-pocs

[13]       Unit 42 / Palo Alto Networks — PHP2Shell Threat Brief (aggiornato, ritrattazione dell’associazione) — https://unit42.paloaltonetworks.com/cve-2026-109618-cve-2026-109619/

[14]       SecurityWeek — PHP2Shell Exploitation Moves From Probes to Working Shells (35 shell in un honeypot) — https://www.securityweek.com/php2shell-exploitation-moves-from-probes-to-working-shells/

[15]       securityonline.info — PHP2Shell added to CISA KEV; probing campaign attributed to Lazarus (CYFIRMA) — https://securityonline.info/php2shell-cisa-kev-confirmed-rce-dprk/

[16]       The Hacker News — Wordfence IOC lists and the Potassium botnet (fonte secondaria) — https://thehackernews.com/2026/10/php2shell-exploit-attempts-hit-millions.html

[17]       SOCRadar — exploitation report / observed infrastructure — https://socradar.io/blog/php2shell-cve-2026-109618-cve-2026-109619/

[18]       W3Techs — Usage statistics and market share of PHP (statistica al 21 ottobre 2026) — https://w3techs.com/technologies/details/pl-php

BleepingComputer — PHP2Shell security flaws now successfully exploited in the wild (RCE su honeypot, 26 ottobre) — https://www.bleepingcomputer.com/news/security/php2shell-security-flaws-now-sucessfully-exploited-in-the-wild/

Cloud image

30 giorni di difesa informatica di livello aziendale

Entri nel futuro della cybersicurezza con accesso completo a una piattaforma unificata e intelligente — gratis per 30 giorni. Potenzi il suo team di sicurezza con:

  • SIEM avanzato per visibilità in tempo reale, alert intelligenti e analisi forense approfondita in ambienti cloud, on-premise e ibridi

  • Gestione continua delle vulnerabilità per identificare, assegnare priorità e risolvere i rischi su tutti gli asset

  • Intelligence sulle minacce informatiche in tempo reale integrata direttamente nei suoi flussi di lavoro, con informazioni globali e profili degli attaccanti

  • Rilevamento delle minacce basato su IA che apprende dal suo ambiente, spiega gli alert in linguaggio semplice e suggerisce i passi successivi

  • Preparazione alla conformità integrata per NIS2, GDPR, ISO 27001 e altro, con reportistica automatizzata e strumenti di audit

Che gestisca un SOC snello o un team di sicurezza aziendale su larga scala, questa piattaforma le offre gli strumenti per rilevare più velocemente, rispondere in modo più intelligente e restare un passo avanti alle minacce in evoluzione, senza la complessità.

Scopra una protezione di livello aziendale, flussi di lavoro ottimizzati e controllo totale.

Il suo vantaggio di 30 giorni inizia ora.

Sblocchi la sua prova gratuita di 30 giorni