21 Ottobre 2026

PHP2Shell: due vulnerabilità critiche in PHP, esecuzione di codice da remoto. Aggiornate subito a PHP 8.5.12, 8.4.27, 8.3.36 e 8.2.35

L’avviso ufficiale di PHP conferma due vulnerabilità critiche, CVE-2026-109618 e CVE-2026-109619, che consentono l’esecuzione di codice da remoto senza autenticazione. Chi è a rischio, come aggiornare, le mitigazioni ufficiali e come stiamo facendo il patching con Ansible.

Allarme PHP: un braccio robotico applica le patch ai server su un nastro trasportatore, orologio alle 16:00 e sirena accesa

Il 20 ottobre 2026 il team di sicurezza di PHP ha pubblicato un avviso che raramente si vede: una release di sicurezza straordinaria, programmata per mercoledì 21 ottobre alle 14:00 UTC, cioè le 16:00 in Italia, per correggere due vulnerabilità critiche, entrambe con un punteggio CVSS v4.0 di 9.2. Poche ore prima, alcuni dettagli erano trapelati online prima della fine dell’embargo, e da allora le falle circolano tra i ricercatori con il nome di PHP2Shell.

Ne ha dato un resoconto molto completo TurboLab, e la notizia è stata ripresa dalle principali testate e società di sicurezza internazionali. In questo articolo mettiamo in ordine cosa è confermato, cosa non lo è ancora, cosa fare subito e cosa stiamo facendo noi.

Aggiornamento del 21 ottobre, ore 16:00. PHP ha pubblicato l’avviso ufficiale e le versioni corrette: PHP 8.5.12, 8.4.27, 8.3.36 e 8.2.35. Le due vulnerabilità consentono l’esecuzione di codice da remoto senza autenticazione e codici d’attacco sono già pubblici: aggiornate subito.

L’avviso ufficiale di PHP

Il 21 ottobre il progetto PHP ha rilasciato le versioni 8.5.12, 8.4.27, 8.3.36 e 8.2.35 insieme a un avviso dal titolo inequivocabile: Security advisory: Critical remote code execution vulnerabilities, update now. Le versioni correggono due vulnerabilità critiche che possono consentire l’esecuzione di codice da remoto senza autenticazione, e tutti gli utenti di PHP sono invitati ad aggiornare immediatamente.

Chi è a rischio

Secondo l’avviso, sono a rischio tutte le installazioni di PHP che servono richieste web: PHP-FPM, Apache con mod_php, php-cgi, FrankenPHP e LiteSpeed. Il rischio è considerato più alto per mod_php, per il quale esiste un exploit dimostrato in cui una richiesta non autenticata può innescare l’attacco prima che venga eseguito qualsiasi codice dell’applicazione.

Tradotto: non conta quanto siano aggiornati WordPress, i plugin o il CMS. Il problema è nell’interprete che li esegue.

Le due vulnerabilità

  • CVE-2026-109618, esecuzione di codice tramite corruzione in caso di memoria esaurita. La gestione dell’esaurimento della memoria può interrompere PHP mentre i dati interni della richiesta sono inizializzati solo in parte. La pulizia di fine richiesta può poi trattare quei dati non validi come se fossero validi.
  • CVE-2026-109619, esecuzione di codice tramite stato globale obsoleto. Uno stato interno legato a una richiesta può sopravvivere dopo che la memoria che lo conteneva è stata liberata. Una richiesta successiva gestita dallo stesso processo può usare quello stato prima che la normale inizializzazione lo azzeri.

Le analisi pubblicate in mattinata, che indicavano la funzione session.upload_progress, descrivevano quindi uno dei percorsi confermati per arrivare alla seconda vulnerabilità, non l’unico.

Come aggiornare

  • Aggiornate a PHP 8.5.12, 8.4.27, 8.3.36 o 8.2.35, a seconda del ramo in uso. Sorgenti e pacchetti per Windows sono disponibili nella pagina dei download di PHP.
  • Distribuzioni Linux e fornitori LTS hanno ricevuto le patch in anticipo: verificate la disponibilità dei pacchetti aggiornati presso il vostro fornitore.
  • PHP 8.1 e precedenti non ricevono più aggiornamenti dal progetto PHP. Alcune distribuzioni e fornitori LTS offrono correzioni portate sulle versioni vecchie: chiedete al vostro fornitore, oppure passate a una versione supportata. Data la gravità, il team di sicurezza di PHP ha comunque fornito correzioni minime dei sorgenti per PHP 7.4, 8.0 e 8.1, per chi compila PHP da sé o non ha accesso a un fornitore LTS.
  • Chi usa il repository rpms.remirepo.net, mantenuto da volontari e molto diffuso su Red Hat, AlmaLinux e Rocky Linux, è invitato da PHP a passare ai pacchetti della distribuzione o a compilare dai sorgenti per poter aggiornare subito: secondo l’avviso, il repository non avrà aggiornamenti in giornata.

Se non potete aggiornare subito

L’avviso è molto chiaro: solo l’aggiornamento è una soluzione completa. Le misure seguenti riducono l’esposizione a specifici percorsi d’attacco, ma non rendono un’installazione sicura.

Per CVE-2026-109618, corruzione in caso di memoria esaurita:

  • impostare memory_limit=-1 in un modo che le applicazioni non possano sovrascrivere, ad esempio con php_admin_value nel pool di PHP-FPM o nella configurazione di Apache, e verificare che nessun pool, cartella o applicazione reimposti un limite finito. Questo elimina il fallimento controllabile dovuto al limite di memoria di PHP, ma un errore di allocazione a un livello più basso può comunque raggiungere il percorso vulnerabile;
  • impostare un post_max_size basso: 8M per le applicazioni che non richiedono upload di file, 32M se gli upload sono necessari, mantenendo upload_max_filesize inferiore a post_max_size. Valutate anche limiti a livello di web server o proxy su dimensione della richiesta decodificata, numero di campi, parti multipart, numero di header e profondità di annidamento, validi anche per le richieste senza un Content-Length utilizzabile;
  • usare un limite di memoria a livello di container o di cgroup come barriera per la disponibilità del servizio, preferibilmente con una politica che termini solo il processo coinvolto. Non usare al suo posto RLIMIT_AS o RLIMIT_DATA, che possono provocare proprio il fallimento di allocazione vulnerabile.

Per CVE-2026-109619, stato globale obsoleto:

  • impostare session.upload_progress.enabled=0 e riavviare tutti i processi. L’impostazione va messa in php.ini, nel pool di PHP-FPM o nella configurazione del server, cioè dove si applica prima dell’elaborazione della richiesta: non con ini_set() né con i file .user.ini. Blocca i percorsi confermati legati alle sessioni, ma non altre varianti;
  • su PHP 8.5, impostare fatal_error_backtraces=0 e riavviare tutti i processi. Blocca solo il percorso confermato legato ai backtrace degli errori fatali;
  • rimuovere le impostazioni non valide o deprecate applicate per singola richiesta che generano messaggi diagnostici prima dell’inizializzazione. Nasconderli con error_reporting, display_errors o con l’operatore @ non serve;
  • correggere gli errori fatali e i timeout di esecuzione che un attaccante può provocare, compresi quelli nei callback, nell’elaborazione di upload e importazioni e nelle operazioni di pulizia.

Exploit già in circolazione

Già nella mattinata del 21 ottobre, prima del rilascio ufficiale, erano comparsi online codici dimostrativi in grado di sfruttare le vulnerabilità, ripresi da diverse testate di sicurezza informatica. L’avviso ufficiale conferma l’esistenza di un exploit dimostrato. Con le correzioni ora pubbliche, confrontare il codice prima e dopo la patch diventa ancora più semplice: è ragionevole aspettarsi scansioni e attacchi automatizzati su larga scala nelle prossime ore e nei prossimi giorni.

Le sezioni che seguono descrivono la situazione della mattina del 21 ottobre, prima dell’avviso ufficiale, e restano come cronaca di come si è sviluppata la vicenda.

Cosa era confermato prima del rilascio

La fonte ufficiale è una sola: l’avviso pubblicato sul sito di PHP. Dice esattamente questo:

  • esistono due vulnerabilità critiche, valutate entrambe 9.2 su 10 con il sistema CVSS v4.0;
  • la release che le corregge è prevista per il 21 ottobre 2026 alle 14:00 UTC;
  • il team si riserva di anticipare il rilascio se i dettagli dovessero diventare pubblici o se comparissero prove di sfruttamento attivo;
  • dettagli tecnici, versioni coinvolte e versioni corrette saranno pubblicati solo insieme alla release;
  • tutti gli utenti di PHP sono invitati a prepararsi ora per aggiornare non appena le patch saranno disponibili.

Un avviso preventivo di questo tipo, con data e ora del rilascio annunciate in anticipo, è una scelta che il progetto PHP riserva ai casi davvero seri. È il segnale che va preso sul serio.

Cosa si diceva prima del rilascio

Attorno all’avviso ufficiale si sono accumulate molte informazioni provenienti da fughe di notizie e da società di sicurezza. Sono utili per capire la portata del problema, ma vanno lette per quello che sono: anticipazioni non verificate dal progetto PHP.

  • Il nome PHP2Shell circola tra i ricercatori, ma non compare nel comunicato ufficiale.
  • Gli identificativi CVE-2026-109618 e CVE-2026-109619 sono stati riservati, ma al momento non hanno una descrizione pubblica e il comunicato di PHP non li cita.
  • La natura delle falle: secondo watchTowr si tratta di vulnerabilità di esecuzione di codice da remoto (RCE), cioè la possibilità per un attaccante di eseguire comandi sul server. La società dichiara di aver riprodotto una delle due, senza pubblicare dettagli.
  • Le versioni coinvolte: si parla di PHP 5, 7 e 8. Se fosse vero, il problema riguarderebbe praticamente ogni versione di PHP in uso negli ultimi quindici anni.
  • Il rischio per le versioni obsolete: le patch dovrebbero arrivare solo per i rami di PHP 8 ancora supportati. Chi usa PHP 5, PHP 7 o versioni di PHP 8 fuori supporto potrebbe restare senza una correzione ufficiale.
  • Il punteggio: alcune fonti parlano di CVSS 10, contro il 9.2 dichiarato da PHP.

Alla prima pubblicazione di questo articolo non risultavano sfruttamenti attivi né exploit pubblici. Nel giro di poche ore la situazione è cambiata: come spiegato più sopra, sono comparsi codici dimostrativi pubblici. E diversi analisti si aspettano attacchi automatizzati di massa a brevissima distanza dalla pubblicazione delle patch: una volta che le correzioni sono pubbliche, confrontarle con il codice precedente permette di capire dov’era il problema e di costruire un attacco in tempi molto brevi.

Cosa è confermato dall'avviso ufficiale di PHP e cosa è riportato ma non confermato sulle vulnerabilità PHP2Shell
Cosa sappiamo e cosa no sulle due vulnerabilità critiche di PHP, prima del rilascio delle patch.

Perché riguarda praticamente tutti

Se la vulnerabilità si trova nel motore di PHP e non in una singola applicazione, il perimetro è enorme. PHP fa girare WordPress, WooCommerce, PrestaShop, Magento, Joomla, Drupal, OpenCart, moltissimi gestionali, aree riservate, pannelli di controllo come cPanel e Plesk, e una quantità di software che nemmeno dichiara di usarlo.

Non importa quanto sia aggiornato WordPress o quanto siano curati i plugin: se il problema è nell’interprete che li esegue, la protezione deve arrivare dall’aggiornamento di PHP stesso. Ed è un aggiornamento che, per la maggior parte dei siti, non dipende da chi gestisce il sito ma da chi gestisce il server.

Il caso più delicato è quello dei server dimenticati: vecchie installazioni con PHP 5 o PHP 7, siti mai migrati, hosting condivisi non più seguiti, ambienti di test esposti su Internet. Sono proprio quelli che rischiano di non ricevere mai una correzione ufficiale, e che saranno i primi bersagli degli attacchi automatizzati.

Cosa fare, oltre ad aggiornare

L’aggiornamento resta la priorità assoluta. Intorno all’aggiornamento, ci sono alcune cose da fare subito.

  • Fate l’inventario. Censite ogni server e ogni sito che usa PHP, con la versione esatta e il modo in cui è installato: pacchetti della distribuzione, repository esterni, pannelli di controllo, container, versioni compilate a mano.
  • Preparate la procedura di aggiornamento. Chi aggiorna, su quali server, in quale ordine, con quali verifiche dopo l’aggiornamento e quale piano di ritorno indietro in caso di problemi.
  • Date la priorità ai sistemi esposti. Prima i siti pubblici, gli e-commerce e i server che ospitano molti siti; poi gli ambienti interni.
  • Verificate i backup. Che esistano, che siano recenti, che siano conservati fuori dal server e che si sappia come ripristinarli.
  • Affrontate le versioni obsolete. Se avete siti su PHP 5 o PHP 7, è il momento di pianificare la migrazione a una versione di PHP 8 supportata. Nel frattempo, valutate se limitarne l’esposizione.
  • Seguite solo le fonti ufficiali. L’annuncio di PHP, gli avvisi di sicurezza della vostra distribuzione Linux e del vostro fornitore. Non agite sulla base di voci o di presunti exploit pubblicati sui social.

Dopo il rilascio, oltre all’aggiornamento, conviene tenere d’occhio i segnali di una possibile compromissione: processi di sistema avviati dai processi di PHP, file nuovi nella cartella del sito, utenti o attività pianificate mai create.

Sei azioni da fare prima del rilascio delle patch di PHP: inventario, procedura, priorità, backup, versioni obsolete, fonti ufficiali
L’aggiornamento è l’unica soluzione completa: tutto il resto riduce il rischio.

Cosa stiamo facendo in Managed Server

Ci stiamo già adoperando con Ansible, lo strumento di automazione che usiamo per gestire la configurazione dei sistemi, per il patching di tutti i sistemi che gestiamo. I playbook sono pronti per distribuire le versioni corrette di PHP su tutti i server in modo coordinato, non appena saranno disponibili, senza dover intervenire macchina per macchina.

È proprio in situazioni come questa che si vede la differenza tra un’infrastruttura gestita in modo strutturato e una gestita a mano: quando una vulnerabilità critica coinvolge un componente presente ovunque, il tempo che passa tra il rilascio della patch e l’aggiornamento dell’ultimo server è ciò che separa un sistema protetto da un sistema esposto agli attacchi automatizzati.

Per i clienti con versioni di PHP non più supportate, valuteremo caso per caso le azioni da intraprendere e la migrazione verso un ramo di PHP 8 supportato.

Se il vostro sito non è ospitato da noi e non sapete con certezza chi aggiornerà PHP sul vostro server, e quando, è il momento di chiederlo. Se avete bisogno di aiuto per l’inventario, l’aggiornamento o la migrazione da versioni obsolete, la nostra assistenza sistemistica Linux è a disposizione.

Aggiornamenti

Il progetto PHP ha pubblicato la release e l’avviso ufficiale, riportati in apertura. Aggiorneremo questo articolo con eventuali nuove indicazioni ufficiali.

Fonti

Hai dei dubbi? Non sai da dove iniziare? Contattaci !

Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

DISCLAIMER, Note Legali e Copyright. Red Hat, Inc. detiene i diritti su Red Hat®, RHEL®, RedHat Linux®, e CentOS®; AlmaLinux™ è un marchio di AlmaLinux OS Foundation; Rocky Linux® è un marchio registrato di Rocky Linux Foundation; SUSE® è un marchio registrato di SUSE LLC; Canonical Ltd. detiene i diritti su Ubuntu®; Software in the Public Interest, Inc. detiene i diritti su Debian®; Linus Torvalds detiene i diritti su Linux®; FreeBSD® è un marchio registrato di The FreeBSD Foundation; NetBSD® è un marchio registrato di The NetBSD Foundation; OpenBSD® è un marchio registrato di Theo de Raadt; Oracle Corporation detiene i diritti su Oracle®, MySQL®, MyRocks®, VirtualBox® e ZFS®; Percona® è un marchio registrato di Percona LLC; MariaDB® è un marchio registrato di MariaDB Corporation Ab; PostgreSQL® è un marchio registrato di PostgreSQL Global Development Group; SQLite® è un marchio registrato di Hipp, Wyrick & Company, Inc.; KeyDB® è un marchio registrato di EQ Alpha Technology Ltd.; Typesense® è un marchio registrato di Typesense Inc.; REDIS® è un marchio registrato di Redis Labs Ltd; F5 Networks, Inc. detiene i diritti su NGINX® e NGINX Plus®; Varnish® è un marchio registrato di Varnish Software AB; HAProxy® è un marchio registrato di HAProxy Technologies LLC; Traefik® è un marchio registrato di Traefik Labs; Envoy® è un marchio registrato di CNCF; Adobe Inc. detiene i diritti su Magento®; PrestaShop® è un marchio registrato di PrestaShop SA; Shopware® è un marchio registrato di shopware AG; OpenCart® è un marchio registrato di OpenCart Limited; Automattic Inc. detiene i diritti su WordPress®, WooCommerce®, e JetPack®; Open Source Matters, Inc. detiene i diritti su Joomla®; Dries Buytaert detiene i diritti su Drupal®; Shopify® è un marchio registrato di Shopify Inc.; BigCommerce® è un marchio registrato di BigCommerce Pty. Ltd.; TYPO3® è un marchio registrato di TYPO3 Association; Ghost® è un marchio registrato di Ghost Foundation; Amazon Web Services, Inc. detiene i diritti su AWS® e Amazon SES®; Google LLC detiene i diritti su Google Cloud™, Chrome™, e Google Kubernetes Engine™; Alibaba Cloud® è un marchio registrato di Alibaba Group Holding Limited; DigitalOcean® è un marchio registrato di DigitalOcean, LLC; Linode® è un marchio registrato di Linode, LLC; Vultr® è un marchio registrato di The Constant Company, LLC; Akamai® è un marchio registrato di Akamai Technologies, Inc.; Fastly® è un marchio registrato di Fastly, Inc.; Let’s Encrypt® è un marchio registrato di Internet Security Research Group; Microsoft Corporation detiene i diritti su Microsoft®, Azure®, Windows®, Office®, e Internet Explorer®; Mozilla Foundation detiene i diritti su Firefox®; Apache® è un marchio registrato di The Apache Software Foundation; Apache Tomcat® è un marchio registrato di The Apache Software Foundation; PHP® è un marchio registrato del PHP Group; Docker® è un marchio registrato di Docker, Inc.; Kubernetes® è un marchio registrato di The Linux Foundation; OpenShift® è un marchio registrato di Red Hat, Inc.; Podman® è un marchio registrato di Red Hat, Inc.; Proxmox® è un marchio registrato di Proxmox Server Solutions GmbH; VMware® è un marchio registrato di Broadcom Inc.; CloudFlare® è un marchio registrato di Cloudflare, Inc.; NETSCOUT® è un marchio registrato di NETSCOUT Systems Inc.; ElasticSearch®, LogStash®, e Kibana® sono marchi registrati di Elastic N.V.; Grafana® è un marchio registrato di Grafana Labs; Prometheus® è un marchio registrato di The Linux Foundation; Zabbix® è un marchio registrato di Zabbix LLC; Datadog® è un marchio registrato di Datadog, Inc.; Ceph® è un marchio registrato di Red Hat, Inc.; MinIO® è un marchio registrato di MinIO, Inc.; Mailgun® è un marchio registrato di Mailgun Technologies, Inc.; SendGrid® è un marchio registrato di Twilio Inc.; Postmark® è un marchio registrato di ActiveCampaign, LLC; cPanel®, L.L.C. detiene i diritti su cPanel®; Plesk® è un marchio registrato di Plesk International GmbH; Hetzner® è un marchio registrato di Hetzner Online GmbH; OVHcloud® è un marchio registrato di OVH Groupe SAS; Contabo® è un marchio registrato di Contabo GmbH; IONOS® è un marchio registrato di IONOS SE; International Business Machines Corporation detiene i diritti su IBM® e IBM Cloud®; Terraform® è un marchio registrato di HashiCorp, Inc.; Ansible® è un marchio registrato di Red Hat, Inc.; cURL® è un marchio registrato di Daniel Stenberg; Facebook®, Inc. detiene i diritti su Facebook®, Messenger® e Instagram®. Questo sito non è affiliato, sponsorizzato o altrimenti associato a nessuna delle entità sopra menzionate e non rappresenta nessuna di queste entità in alcun modo. Tutti i diritti sui marchi e sui nomi di prodotto menzionati sono di proprietà dei rispettivi detentori di copyright. Ogni altro marchio citato appartiene ai propri registranti. MANAGED SERVER® è un marchio registrato a livello europeo da MANAGED SERVER SRL, con sede legale in Via Flavio Gioia, 6, 62012 Civitanova Marche (MC), Italia e sede operativa in Via Enzo Ferrari, 9, 62012 Civitanova Marche (MC), Italia.

SOLO UN ATTIMO !

Ti sei mai chiesto se il tuo Hosting faccia schifo ?

Scopri subito se il tuo hosting provider ti sta danneggiando con un sito lento degno del 1990 ! Risultato immediato.

Close the CTA
Torna in alto