SilentShield
← Torna al Blog
SicurezzaPHPAvviso

Vulnerabilità critiche in PHP (CVE-2026-109618 e CVE-2026-109619): cosa è successo e cosa fare

Marc Wagner·22 ottobre 2026·7 min lettura

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

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.

RamoInteressato sottoCorretto in
PHP 8.58.5.128.5.12
PHP 8.48.4.278.4.27
PHP 8.38.3.368.3.36
PHP 8.28.2.358.2.35
PHP 8.1 e precedentitutte le versioninessun 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ì:

  1. Arriva una richiesta a un indirizzo servito da PHP. Nessun accesso, nessun account.
  2. PHP comincia a leggere il corpo della richiesta. Il CERT-EU cita come esempio l’analisi dei caricamenti di file tramite moduli.
  3. PHP fa rispettare il proprio memory_limit con longjmp(). Quando il limite viene superato, abbandona di colpo ciò che stava facendo e conclude la richiesta.
  4. Se ciò avviene nel mezzo della preparazione dei dati interni della richiesta, tali dati restano costruiti solo in parte.
  5. 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.
  6. 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

  1. Verifichi quale versione di PHP serve davvero il Suo sito. php -v sulla riga di comando mostra la versione della riga di comando, che può differire da quella usata dal Suo server web. Controlli php-fpm -v, il Suo pannello di hosting o una pagina che richiami phpinfo(). Con un hosting condiviso, lo chieda al Suo fornitore.
  2. 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.
  3. 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.
  4. 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.
  5. 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=-1 in modo che le applicazioni non possano modificarlo, per esempio con php_admin_value nel gruppo di processi di FPM, e verifichi che nessun gruppo, directory o applicazione imposti di nuovo un limite finito. Imposti un post_max_size basso (8M senza caricamenti, 32M con) e mantenga upload_max_filesize al 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 non RLIMIT_AS né RLIMIT_DATA, che possono provocare il fallimento di allocazione vulnerabile.
  • Contro CVE-2026-109619: imposti session.upload_progress.enabled=0 in php.ini, nel gruppo di processi di FPM o in una configurazione del server che si applichi prima dell’analisi della richiesta (non con ini_set() né con .user.ini), e riavvii tutti i processi di lavoro. Con PHP 8.5 imposti inoltre fatal_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.

Fonti

Domande frequenti

Quali versioni di PHP sono interessate da CVE-2026-109618 e CVE-2026-109619?

PHP 8.5 sotto la 8.5.12, la 8.4 sotto la 8.4.27, la 8.3 sotto la 8.3.36 e la 8.2 sotto la 8.2.35, oltre a tutti i rami giunti a fine vita (8.1 e precedenti). Le correzioni sono state pubblicate il 21 ottobre 2026. Per 7.4, 8.0 e 8.1 il gruppo di sicurezza di PHP ha pubblicato correzioni minime riportate sul codice sorgente. Il CERT-EU cita PHP-FPM, Apache con mod_php, php-cgi, FrankenPHP e LiteSpeed.

Un CAPTCHA, un plugin di sicurezza per WordPress o un firewall proteggono da queste vulnerabilità di PHP?

Non in modo affidabile. L’attacco raggiunge il motore di PHP prima che venga eseguito il codice dell’applicazione, perciò un CAPTCHA o un plugin all’interno dell’applicazione non vede mai la richiesta. Il CERT-EU afferma che solo un aggiornamento risolve del tutto le falle; i limiti alla dimensione delle richieste sul server web o sul proxy e le impostazioni di PHP riducono il rischio, ma non rendono sicura un’installazione.

Le vulnerabilità di PHP CVE-2026-109618 e CVE-2026-109619 vengono sfruttate?

L’avviso del CERT-EU non conferma attacchi in corso. Afferma che i dettagli tecnici sono discussi pubblicamente e che ha iniziato a circolare un primo codice di prova di fattibilità, il che rende più probabile che gli aggressori stiano già sfruttando le falle. Aggiorni il prima possibile.

Pronto a eliminare i CAPTCHA?

Inizi a proteggere i suoi moduli — in modo invisibile. Nessuna carta di credito richiesta.