Il 21 ottobre 2026 il progetto PHP ha rilasciato le correzioni per due falle critiche e, lo stesso giorno, il CERT-EU ha pubblicato l’avviso 2026-018. Entrambe sono valutate 9,2 ed entrambe sono descritte come esecuzione di codice da remoto senza autenticazione. Se Lei gestisce un sito WordPress, un negozio online o qualsiasi altra applicazione PHP, la questione La riguarda, e la soluzione è un aggiornamento, non un’impostazione. Questo articolo spiega cosa si sa, come entra l’attacco e cosa fare. Situazione al 22 ottobre 2026, sulla base della versione 1.1 dell’avviso del CERT-EU.
Cosa è successo
- Versione di sicurezza annunciataPHP annuncia in anticipo una versione di sicurezza
- Correzioni pubblicate8.5.12, 8.4.27, 8.3.36 e 8.2.35
- Avviso 2026-018 del CERT-EUEntrambe le falle valutate 9,2
- Circola codice di prova di fattibilitàAttacchi non confermati, ma più probabili
PHP ha annunciato una versione di sicurezza il 20 ottobre e ha pubblicato le correzioni il 21 ottobre alle 13:30 UTC. Il CERT-EU ha intitolato il proprio avviso «Critical Vulnerabilities in PHP» ed elenca due CVE: CVE-2026-109618 e CVE-2026-109619, ciascuno con un punteggio di 9,2. Il CERT-EU scrive inoltre che i dettagli tecnici sono ormai discussi pubblicamente e che ha iniziato a circolare un primo codice di prova di fattibilità. L’avviso non conferma attacchi in corso, ma afferma che ciò rende più probabile che gli aggressori stiano già sfruttando le falle. Lo consideri urgente.
Chi è interessato
Le versioni interessate sono tutte quelle di PHP precedenti a quella corretta in un ramo supportato, e tutti i rami giunti a fine vita.
| Ramo | Interessato sotto | Corretto in |
|---|---|---|
| PHP 8.5 | 8.5.12 | 8.5.12 |
| PHP 8.4 | 8.4.27 | 8.4.27 |
| PHP 8.3 | 8.3.36 | 8.3.36 |
| PHP 8.2 | 8.2.35 | 8.2.35 |
| PHP 8.1 e precedenti | tutte le versioni | nessun aggiornamento regolare; il gruppo di sicurezza di PHP ha pubblicato correzioni minime riportate sul codice sorgente per 7.4, 8.0 e 8.1 |
Il CERT-EU cita PHP-FPM, Apache con mod_php, php-cgi, FrankenPHP e LiteSpeed. Secondo il gruppo di PHP, mod_php presenta il rischio più alto. Possono essere interessati anche i prodotti che incorporano PHP; il CERT-EU rimanda a un elenco dell’NCSC olandese in fondo a questo articolo. Conta qualsiasi installazione che risponda a richieste web, abbia o no un modulo per il caricamento di file.
Come un aggressore raggiunge la prima falla
Nessuno deve effettuare l’accesso. Secondo il CERT-EU, uno sfruttamento dimostrato prova che una sola richiesta non autenticata può innescare l’attacco prima che venga eseguito qualsiasi codice dell’applicazione. È il punto che i più trascurano: non importa se il Suo WordPress è aggiornato, se i Suoi plugin sono corretti o se il Suo modulo di contatto è protetto. La richiesta arriva prima al motore di PHP.
La prima falla, CVE-2026-109618, funziona così:
- Arriva una richiesta a un indirizzo servito da PHP. Nessun accesso, nessun account.
- PHP comincia a leggere il corpo della richiesta. Il CERT-EU cita come esempio l’analisi dei caricamenti di file tramite moduli.
- PHP fa rispettare il proprio
memory_limitconlongjmp(). Quando il limite viene superato, abbandona di colpo ciò che stava facendo e conclude la richiesta. - Se ciò avviene nel mezzo della preparazione dei dati interni della richiesta, tali dati restano costruiti solo in parte.
- La pulizia successiva tratta i dati non validi come validi e libera memoria che non è mai stata inizializzata. Quella memoria può contenere ancora dati di allocazioni precedenti che l’aggressore controllava.
- Da qui l’avviso descrive l’esecuzione di codice da remoto sul server.
Non descriviamo volutamente come l’aggressore guidi l’ultimo passaggio. Basta sapere che il punto d’ingresso non è la Sua applicazione, ed è per questo che nulla all’interno della Sua applicazione può fermarlo.
La seconda falla: uno stato che sopravvive alla propria memoria
CVE-2026-109619 è un meccanismo diverso con lo stesso risultato. PHP mantiene uno stato interno per ogni richiesta. Dopo alcuni errori, come un errore fatale, tale stato può rimanere anche se la memoria sottostante è già stata liberata. La richiesta successiva gestita dallo stesso processo di lavoro può allora usare questo stato obsoleto prima che venga ripristinato nel modo consueto. L’aggressore ha bisogno di due richieste che arrivino allo stesso processo di lavoro; il CERT-EU valuta l’esito come per la prima falla: esecuzione di codice da remoto.
Cosa fare oggi
Il PHP sul Suo server è precedente a 8.5.12, 8.4.27, 8.3.36 o 8.2.35, oppure è 8.1 o precedente?
- SìInteressato da entrambe le falle. Passi alla domanda successiva.
- NoCorretto per entrambe le falle, se questa è davvero la versione eseguita dal Suo server web.
Può aggiornare oggi?
- SìAggiorni, riavvii tutti i processi di lavoro di PHP e controlli la versione in esecuzione.
- NoTolga il server dalle reti pubbliche finché non è corretto. I limiti riducono soltanto il rischio.
- Verifichi quale versione di PHP serve davvero il Suo sito.
php -vsulla riga di comando mostra la versione della riga di comando, che può differire da quella usata dal Suo server web. Controlliphp-fpm -v, il Suo pannello di hosting o una pagina che richiamiphpinfo(). Con un hosting condiviso, lo chieda al Suo fornitore. - Aggiorni a una versione corretta: 8.5.12, 8.4.27, 8.3.36 o 8.2.35. Le distribuzioni spesso riportano le correzioni senza cambiare il numero di versione, quindi cerchi i numeri CVE nell’avviso di sicurezza del Suo fornitore. Nei container, ricostruisca l’immagine a partire da una base aggiornata. Il gruppo di PHP osserva che rpms.remirepo.net non aveva aggiornamenti il giorno del rilascio e raccomanda i pacchetti della distribuzione o una compilazione dal codice sorgente.
- Riavvii tutti i processi di lavoro di PHP. Un aggiornamento su disco non modifica i processi già in esecuzione. Riavvii PHP-FPM o il server web e controlli di nuovo la versione in esecuzione.
- Se oggi non può aggiornare, isoli il server dalle reti pubbliche finché la correzione non sia installata e verificata. Il CERT-EU è chiaro: solo un aggiornamento risolve del tutto queste falle.
- Se utilizza PHP 8.1 o precedente, chieda al Suo fornitore la correzione riportata o passi a un ramo supportato. Queste versioni non ricevono aggiornamenti regolari.
Misure di ripiego che riducono il rischio ma non lo eliminano
Il CERT-EU elenca misure che rendono più difficile un attacco. Afferma chiaramente che non rendono sicura un’installazione. Le utilizzi mentre prepara l’aggiornamento, non al suo posto.
- Contro CVE-2026-109618: imposti
memory_limit=-1in modo che le applicazioni non possano modificarlo, per esempio conphp_admin_valuenel gruppo di processi di FPM, e verifichi che nessun gruppo, directory o applicazione imposti di nuovo un limite finito. Imposti unpost_max_sizebasso (8M senza caricamenti, 32M con) e mantengaupload_max_filesizeal di sotto. Limiti la dimensione della richiesta, il numero di campi, le parti del modulo suddiviso in più sezioni, il numero di intestazioni e la profondità di annidamento sul server web o sul proxy. Usi un limite di memoria del container o del cgroup come confine di disponibilità, ma nonRLIMIT_ASnéRLIMIT_DATA, che possono provocare il fallimento di allocazione vulnerabile. - Contro CVE-2026-109619: imposti
session.upload_progress.enabled=0inphp.ini, nel gruppo di processi di FPM o in una configurazione del server che si applichi prima dell’analisi della richiesta (non conini_set()né con.user.ini), e riavvii tutti i processi di lavoro. Con PHP 8.5 imposti inoltrefatal_error_backtraces=0. Rimuova le impostazioni per richiesta non valide o obsolete che stampano diagnostica prima dell’inizializzazione, e corregga gli errori fatali e i tempi massimi di esecuzione che un aggressore può raggiungere.
Cosa può e cosa non può fare qui SilentShield
Questo non è un problema di bot, e preferiamo dirlo piuttosto che lasciare che una pagina di prodotto lasci intendere il contrario. L’attacco colpisce il motore di PHP prima che la richiesta arrivi a qualcosa di nostro, o a qualsiasi CAPTCHA, plugin o regola del firewall all’interno della Sua applicazione. Una protezione dai bot su un modulo non lo ferma, e nessuno dovrebbe dirLe il contrario. L’unica soluzione completa è l’aggiornamento di PHP.
L’API e la dashboard di SilentShield non sono scritte in PHP. Il plugin per WordPress e l’SDK per PHP girano dentro il Suo PHP, quindi per loro l’aggiornamento va eseguito sul Suo server. Dopo l’aggiornamento, la consueta protezione da bot e spam nei moduli è utile come prima; semplicemente non è mai stata la risposta a questo problema.