In sintesi
- Vulnerabilità:
CVE-2026-109618eCVE-2026-109619, note come PHP2Shell, pubblicate dal team di sicurezza di PHP il 21 ottobre 2026. - Gravità: critica, con un punteggio di 9.2 (CVSS v4.0) ciascuna. Entrambe possono consentire l’esecuzione di codice da remoto senza autenticazione.
- Sistemi interessati: le installazioni PHP che gestiscono richieste web. I ricercatori hanno individuato versioni vulnerabili risalenti fino a PHP 5.4.
- Soluzione: aggiorna PHP. Il progetto PHP afferma che non esistono mitigazioni complete e che l’aggiornamento è l’unica scelta sicura.
Cosa sono le vulnerabilità
Entrambe le falle sono errori di sicurezza della memoria nell’ambiente di esecuzione PHP, non in WordPress, Drupal, Laravel o in altre applicazioni basate su di esso. Un sito può essere esposto anche quando il suo codice e i suoi plugin sono completamente aggiornati.
- Corruzione per memoria esaurita,
CVE-2026-109618: l’esaurimento della memoria può interrompere PHP mentre i dati interni della richiesta sono inizializzati solo in parte. La pulizia della richiesta può quindi trattare quei dati non validi come validi. - Stato della richiesta obsoleto,
CVE-2026-109619: lo stato interno che appartiene a una richiesta può sopravvivere alla memoria che lo contiene. Una richiesta successiva gestita dallo stesso worker PHP può usare quello stato obsoleto, con il rischio di esporre la memoria del worker o di consentire l’esecuzione di codice.
I ricercatori hanno dimostrato l’esecuzione di codice da remoto senza autenticazione contro WordPress e Drupal e, per il primo problema, anche contro Joomla. Anche un’applicazione minima «Hello World» su un ambiente di esecuzione vulnerabile può essere esposta.
Chi è interessato
Secondo l’avviso di PHP, i problemi interessano tutte le installazioni PHP che gestiscono richieste web, compresi PHP-FPM, Apache con mod_php, php-cgi, FrankenPHP e LiteSpeed. Apache con mod_php comporta il rischio più elevato: un exploit dimostrato avvia l’attacco con una richiesta non autenticata prima che venga eseguito qualsiasi codice dell’applicazione.
PHP 8.1 e le versioni precedenti non ricevono più aggiornamenti dal progetto PHP. L’avviso rimanda a backport minimi del codice sorgente per PHP 7.4, 8.0 e 8.1, ma è preferibile migrare gli ambienti di esecuzione più vecchi a una versione supportata.
Versioni corrette
Le versioni precedenti di ciascun ramo supportato vanno considerate vulnerabili.
| Ramo di PHP | Vulnerabile | Corretto in |
|---|---|---|
| 8.5 | Precedenti alla 8.5.12 | 8.5.12 |
| 8.4 | Precedenti alla 8.4.27 | 8.4.27 |
| 8.3 | Precedenti alla 8.3.36 | 8.3.36 |
| 8.2 | Precedenti alla 8.2.35 | 8.2.35 |
PHP 8.2 raggiunge la fine del ciclo di vita il 31 dicembre 2026.
Pacchetti delle distribuzioni
Le distribuzioni Linux hanno ricevuto le correzioni in anticipo e pubblicano pacchetti corretti con i propri numeri di versione. Un pacchetto di una distribuzione può essere corretto anche se la sua versione sembra precedente a quella del rilascio originale. Su Ubuntu 24.04 LTS, ad esempio, il pacchetto corretto è 8.3.6-0ubuntu0.24.04.13, non 8.3.36.
| Versione di Ubuntu | Pacchetto | Versione corretta |
|---|---|---|
| 26.04 LTS | php8.5 | 8.5.4-0ubuntu1.5 |
| 24.04 LTS | php8.3 | 8.3.6-0ubuntu0.24.04.13 |
| 22.04 LTS | php8.1 | 8.1.2-1ubuntu2.28 |
Consulta l’avviso di sicurezza della tua distribuzione per le versioni esatte dei pacchetti. L’avviso di PHP chiede inoltre a chi usa il repository remirepo di passare ai pacchetti della distribuzione o di compilare dal codice sorgente, perché quel repository non disponeva degli aggiornamenti il giorno del rilascio.
Mitigazioni temporanee
Se non puoi aggiornare subito, l’avviso di PHP elenca alcune impostazioni che riducono l’esposizione a specifici percorsi di attacco. Non rendono sicura un’installazione e devono essere applicate in php.ini, nel pool PHP-FPM o nella configurazione del server, seguite dal riavvio di tutti i worker PHP.
- Disattiva l’avanzamento del caricamento nelle sessioni:
session.upload_progress.enabled = 0. Non fare affidamento suini_set()o.user.inia questo scopo. - Rimuovi il limite di memoria di PHP con
memory_limit = -1, impostato in modo che le applicazioni non possano sovrascriverlo, e usa invece un limite di memoria del container o del cgroup. Non usareRLIMIT_ASoRLIMIT_DATA; possono attivare il percorso vulnerabile. - Limita la dimensione delle richieste, ad esempio
post_max_size = 8M, oppure32Mse sono necessari caricamenti di file, e applica limiti alle richieste a livello di server web o proxy. - Su PHP 8.5, imposta
fatal_error_backtraces = 0.
Nascondere gli errori non serve. Considera queste impostazioni un breve ponte verso l’aggiornamento, non una soluzione.
Web application firewall
Cloudflare ha implementato regole WAF gestite per PHP2Shell prima della divulgazione pubblica, anche nel piano gratuito. Un WAF è un utile livello aggiuntivo mentre aggiorni, ma è stato osservato che gli aggressori modificano i payload per eludere il rilevamento, e aggiornare solo il codice o i plugin del sito non risolve una falla dell’ambiente di esecuzione. Aggiorna PHP anche se è presente un WAF.
Dopo l’aggiornamento
- Riavvia PHP: riavvia PHP-FPM, Apache o il server applicativo PHP affinché ogni worker carichi il codice corretto.
- Controlla l’ambiente di esecuzione che serve il sito: la versione di PHP da riga di comando può differire da quella che gestisce le richieste web, e spesso sui server funzionano più versioni di PHP in parallelo.
- Controlla ogni server e account di hosting: siti di staging, vecchie installazioni e server secondari sono facili da trascurare.
- Rivedi i limiti: la correzione aggiunge un limite di memoria rigido che termina il processo quando viene raggiunto, quindi rivedi le impostazioni di memoria e di dimensione delle richieste per le richieste pesanti legittime.
Con un hosting gestito, chiedi al tuo fornitore di confermare che l’ambiente di esecuzione corretto sia in uso.
Segnali da approfondire
I ricercatori elencano alcuni segnali che meritano un’analisi più attenta. Da soli, non dimostrano che un server sia stato attaccato.
- Cookie
PHPSESSIDinsolitamente grandi o malformati. - Richieste multipart seguite da errori di limite di memoria o da ripetute risposte HTTP 500.
- Arresti anomali inspiegabili dei worker PHP.
Se sospetti una compromissione, aggiornare PHP non rimuove ciò che un aggressore potrebbe aver lasciato. Per questo serve un’indagine separata.
Come possiamo aiutarti
La nostra verifica identifica l’ambiente di esecuzione PHP che serve effettivamente il tuo sito, controlla lo stato delle correzioni del fornitore e ti fornisce risultati scritti con un passo successivo chiaro. Nulla cambia sul tuo server finché non concordiamo l’ambito con te.
Fonti
- Avviso di sicurezza di PHP, 21 ottobre 2026
- Sintesi della ricerca su PHP2Shell
- Avviso di sicurezza Ubuntu USN-8948-1
- Cloudflare: protezione WAF per le vulnerabilità di PHP
Revisionato il 22 ottobre 2026. Questa sintesi è un’informazione di carattere generale, non una consulenza sui tuoi sistemi. Consulta l’avviso di PHP per i dettagli più recenti.