PHP2Shell: due falle critiche di PHP consentono di eseguire codice sui server web senza autenticazione

Il 21 ottobre 2026 il progetto PHP ha pubblicato d’urgenza le versioni 8.5.12, 8.4.27, 8.3.36 e 8.2.35 per correggere CVE-2026-109618 e CVE-2026-109619, due falle di memoria che permettono a un attaccante non autenticato di eseguire codice con una richiesta HTTP costruita ad arte. Il CERT-FR ha emesso un’allerta: ogni installazione PHP che serve traffico web va aggiornata, comprese le vecchie versioni 7.x e 8.0–8.1.

Cosa è successo

Il 21 ottobre 2026 il progetto PHP ha rilasciato un aggiornamento di sicurezza critico, PHP 8.5.12, 8.4.27, 8.3.36 e 8.2.35, che chiude due falle di esecuzione di codice remoto soprannominate PHP2Shell, ciascuna valutata 9,2 in CVSS 4.0. Lo stesso giorno il CERT-FR ha pubblicato l’allerta CERTFR-2026-ALE-014. CVE-2026-109618 deriva dalla gestione dell’esaurimento della memoria: una richiesta può interrompersi quando i suoi dati interni sono solo in parte inizializzati, e la fase di pulizia usa poi quei dati non validi. Richieste multipart sovradimensionate sono uno dei modi per innescarla. CVE-2026-109619 è un use-after-free: lo stato lasciato da una richiesta sopravvive nel processo worker e viene riutilizzato da una richiesta successiva.

Chi è coinvolto

Secondo php.net, è interessata ogni installazione che serve richieste web: PHP-FPM, Apache con mod_php, php-cgi, FrankenPHP e LiteSpeed. Gli avvisi di PHP indicano che l’esecuzione completa di codice senza autenticazione è stata dimostrata su mod_php con configurazione predefinita e, per la seconda falla, su FPM. Il CERT-FR considera vulnerabili tutte le versioni 5.x, 6.x, 7.x, 8.0 e 8.1; in via eccezionale, il team PHP ha pubblicato patch minime in codice sorgente per i rami 7.4, 8.0 e 8.1, non più supportati. Al momento della stesura le fonti ufficiali non segnalavano sfruttamento attivo; secondo ZATAZ, dimostrazioni circolano su alcuni forum. WordPress, Drupal, Joomla e le applicazioni interne girano tutti su PHP.

Cosa fare ora

  1. Censite le versioni di PHP su ogni server e container: php -v, verificando la versione effettivamente usata dal server web (pool FPM, modulo Apache).
  2. Aggiornate a 8.2.35, 8.3.36, 8.4.27 o 8.5.12, oppure installate i pacchetti corretti della vostra distribuzione (apt update && apt upgrade, dnf upgrade 'php*'), poi riavviate PHP-FPM o Apache perché nessun vecchio processo resti attivo.
  3. Se non potete aggiornare oggi: impostate session.upload_progress.enabled = Off nel php.ini, come raccomanda il CERT-FR, e fatal_error_backtraces su Off; il team PHP avverte che queste impostazioni non coprono tutte le vie d’attacco.
  4. Su 7.4–8.1: applicate subito i backport o le patch del vostro fornitore e pianificate il passaggio a un ramo supportato (anche la 8.2 termina il 31 dicembre 2026).
  5. Controllate i log: crash dei processi PHP, errori di memoria esaurita e file inattesi nelle directory web.

Il nostro parere

PHP sta sotto gran parte dei siti aziendali, spesso in versioni che nessuno ricorda di aver installato. Queste falle ricordano che bisogna inventariare gli ambienti di esecuzione, non solo le applicazioni, e considerare un ramo PHP a fine vita come un rischio da eliminare, non un’eredità da sopportare.

Fonti

Come scegliamo, verifichiamo e scriviamo le nostre analisi →

Il vostro server è esposto? Fate un test gratuito — solo informazioni pubbliche, senza intrusione:

Verificare un server Verificare un sito

Temi che i tuoi server siano esposti? Il nostro team verifica, aggiorna e monitora infrastrutture Linux e cloud 24/7.

Parla con un esperto I nostri servizi di gestione server →