Per le falle PHP2Shell (CVE-2026-109618 e CVE-2026-109619) dal 21 ottobre 2026 esistono correzioni in 8.5.12, 8.4.27, 8.3.36 e 8.2.35. Su molti sistemi però i pacchetti arrivano dopo, per esempio sui NAS come Synology, dove PHP arriva dal Centro pacchetti. Il blog mariushosting descrive per Synology una soluzione tampone con poche impostazioni PHP. Qui le inquadro e mostro come impostarle anche su Plesk e su server normali.
Prima di tutto: questa non è una correzione
Secondo l'advisory di PHP solo l'aggiornamento protegge completamente. Impostazioni come le seguenti riducono singole vie d'attacco. Sono un cerotto per il periodo fino all'arrivo del pacchetto, non un sostituto. Appena il produttore rilascia una versione corretta (8.2.35, 8.3.36, 8.4.27 o successiva), installala e togli la soluzione tampone solo se l'applicazione lo richiede.
Le tre impostazioni
session.upload_progress.enabled = 0: disattiva la barra di avanzamento degli upload che passa dalla sessione. Quel meccanismo elabora dati già durante l'upload, quindi spegnerlo è la prima misura.session.use_only_cookies = 1esession.use_cookies = 1: gli ID di sessione vengono accettati solo tramite cookie, non da URL o campi di moduli.session.use_strict_mode = 1: PHP non accetta un ID di sessione che non ha emesso lui stesso.
Effetto collaterale: le applicazioni che costruiscono una barra di avanzamento dell'upload dalle sessioni PHP non la mostreranno più. L'upload in sé continua a funzionare.
Come impostarle
Synology Web Station: apri Web Station, a sinistra «Impostazioni linguaggio di script», scegli il profilo PHP, «Modifica», scheda «Core». Porta session.upload_progress.enabled da 1 a 0 e i tre valori session.use_* a 1. Poi verifica che il tuo sito usi davvero questo profilo (Servizio web nella barra laterale). Il blog di origine indica l'effetto per PHP 8.4, 8.3, 8.2, 8.0 e precedenti.
Plesk: dominio, «Impostazioni PHP», campo «Direttive aggiuntive»:
session.upload_progress.enabled=0
session.use_only_cookies=1
session.use_cookies=1
session.use_strict_mode=1
Server proprio: crea un file nella conf.d della versione PHP interessata (per esempio 99-php2shell.ini) e riavvia PHP-FPM o Apache.
Container: monta il file come ini nell'immagine (volume su /usr/local/etc/php/conf.d/) e riavvia il container.
Verifica che funzioni
php -i | grep -E "session.upload_progress.enabled|session.use_(cookies|only_cookies|strict_mode)"
Questo mostra solo i valori della CLI. Per il sito apri brevemente una pagina con phpinfo() e poi cancellala, oppure controlla le impostazioni del dominio in Plesk. Importante: riavvia PHP dopo la modifica.
Altre misure citate
Secondo il resoconto di The Hacker News, per CVE-2026-109618 il team PHP suggerisce inoltre di impostare memory_limit=-1 (così le applicazioni non possono sovrascriverlo), tenere basso post_max_size e imporre limiti di dimensione già sul web server. Leggi l'advisory e prova se le tue applicazioni reggono quei valori.
Il mio consiglio
- Prima controlla quale versione di PHP gira davvero e se esiste già una build corretta.
- Se non c'è: imposta la soluzione tampone, prova l'applicazione, lascia una nota con la data.
- Controlla regolarmente il Centro pacchetti o il tuo hoster e installa l'aggiornamento appena esce.
- Dove possibile passa a un handler con aggiornamenti tempestivi, come ho descritto nel mio articolo sulla patch urgente di PHP.
Fonte della guida per Synology: mariushosting.