PHP2Shell.fyi Verifica un sito

PHP2Shell: cos’è e cosa fare

PHP2Shell è il nome di due gravi vulnerabilità in PHP stesso, il linguaggio di molti siti web. Un attaccante non autenticato può sfruttarle per eseguire codice sul server web o leggere dati dalla sua memoria. Un aggiornamento di PHP le corregge entrambe.

Ultima revisione: . Regole del . Sintesi in italiano delle guide in inglese.

Che cos’è PHP2Shell

Il 21 ottobre 2026 il progetto PHP ha pubblicato un avviso di sicurezza su due vulnerabilità critiche. Le vulnerabilità sono in PHP, non nel codice del sito. Ognuna ha il suo numero CVE:

Secondo php.net, è a rischio ogni installazione di PHP che gestisce richieste web, tra cui PHP-FPM, Apache con mod_php, php-cgi, FrankenPHP e LiteSpeed.

Aggiornare WordPress, un plugin, un tema o un’altra applicazione non cambia PHP. L’aggiornamento di PHP spetta al provider di hosting o all’amministratore del server.

Versioni corrette

Il ramo è dato dai primi due numeri della versione di PHP. Serve la versione corretta del proprio ramo o una più recente. Le quattro versioni sono uscite il 21 ottobre 2026 e correggono entrambe le vulnerabilità.

Fonte: avviso di php.net del 21 ottobre 2026. Regole del 22 ottobre 2026.
RamoVersione correttaStato
8.58.5.12Supportato.
8.48.4.27Supportato.
8.38.3.36Supportato.
8.28.2.35Supportato fino al 31 dicembre 2026. Pianificare il passaggio a un ramo più recente.
8.1nessunaFine del ciclo di vita. Vedere più avanti.
8.0nessunaFine del ciclo di vita. Vedere più avanti.
7.4nessunaFine del ciclo di vita. Vedere più avanti.

Alcune distribuzioni mantengono il vecchio numero

Le distribuzioni Linux e i provider di hosting pubblicano i propri pacchetti con la correzione. Alcune, come Ubuntu e il PHP predefinito di RHEL 9, aggiungono la correzione e mantengono il vecchio numero di PHP. Per esempio, Ubuntu 24.04 corregge PHP 8.3.6 con il pacchetto 8.3.6-0ubuntu0.24.04.13, e php -v mostra ancora 8.3.6.

Un numero basso non indica sempre un PHP senza correzione.

Confrontare la versione del pacchetto, non solo il numero di PHP. La pagina Fixed PHP packages on Linux (in inglese) indica il pacchetto con la correzione per ogni distribuzione.

Come vedere la versione di PHP

Su un hosting condiviso, controllare il pannello di hosting o chiedere al provider. WordPress, Drupal e applicazioni simili mostrano spesso la versione di PHP nell’area di amministrazione.

Sul proprio server, questo comando mostra la versione di PHP da riga di comando. Il sito web può usare un altro PHP, per esempio PHP-FPM.

php -v

Per vedere il PHP in uso sul sito, creare nella web root un file con un nome casuale che termina in .php, per esempio info-7f3k9q.php, con questo contenuto:

<?php phpinfo();

Aprirlo una volta nel browser e leggere la versione in alto. Poi eliminare subito il file: mostra molti dati riservati.

Cosa fare

  1. Aggiornare PHP. Installare 8.5.12, 8.4.27, 8.3.36 o 8.2.35, o una versione più recente dello stesso ramo. Va bene anche un pacchetto con la correzione della distribuzione Linux o del provider.
  2. Riavviare PHP. Riavviare Apache, ogni pool PHP-FPM e i processi PHP di lunga durata. I vecchi processi mantengono il vecchio codice finché non si fermano.
  3. Controllare di nuovo. Verificare la versione del PHP in uso sul sito, non solo quella da riga di comando.

Comandi per il proprio server

I comandi sono gli stessi delle guide in inglese, con i commenti in inglese.

Debian e Ubuntu (indicare il proprio ramo nel nome del servizio):

# show installed PHP packages and versions
dpkg -l | grep -E '^ii +(php[0-9.]*-(fpm|cgi|common)|libapache2-mod-php)'
# install the update
sudo apt update && sudo apt upgrade
# restart (use your branch, for example php8.3-fpm)
sudo systemctl restart php8.3-fpm
sudo systemctl restart apache2

RHEL, AlmaLinux e Rocky Linux:

# show the installed version (php8.4-common for PHP 8.4 on version 10)
rpm -q php-common
# show which module stream is enabled (marked [e])
dnf module list php
# install the update
sudo dnf upgrade 'php*'
# restart
sudo systemctl restart php-fpm
sudo systemctl restart httpd

Alpine, container e pannelli di hosting: vedere Linux e Platforms (in inglese).

Il nostro consiglio In un container, scaricare l’immagine di base aggiornata, ricostruire le proprie immagini e ricreare il container. Un semplice riavvio mantiene il vecchio PHP.

Su un hosting condiviso

Su un hosting condiviso non è possibile aggiornare PHP in autonomia: lo fa il provider. Copiare questo messaggio, aggiungere il dominio e inviarlo all’assistenza del provider:

Buongiorno,

potete confermare che il PHP del mio hosting includa le correzioni per PHP2Shell (CVE-2026-109618 e CVE-2026-109619)? Dominio: example.com

Quale versione e quale build esatte di PHP sono in uso sul mio dominio? È 8.5.12, 8.4.27, 8.3.36 o 8.2.35, o una versione successiva dello stesso ramo, oppure una build con la correzione in backport?

PHP-FPM, il server web e gli altri processi PHP sono stati riavviati dopo l’aggiornamento?

Grazie.

PHP 7.4, 8.0 e 8.1

Il progetto PHP non pubblica più versioni per questi rami. Il suo team di sicurezza ha pubblicato solo piccole patch del codice sorgente. Per i rami precedenti, il progetto PHP non ha pubblicato nulla. Chiedere al fornitore una build con la correzione o passare a un ramo supportato. Vedere PHP 7.4, 8.0 e 8.1 (in inglese).

Verificare il sito

Lo strumento di verifica di php2shell.fyi legge ciò che il sito mostra pubblicamente ed elenca i segnali PHP che trova. Non può vedere un pacchetto con la correzione dietro un vecchio numero. Confermare il risultato sul server o con il provider.

Lo strumento di verifica, il risultato e le guide dettagliate sono in inglese.

Apri lo strumento di verifica (in inglese)

Avviso ufficiale in italiano

Il CSIRT Italia dell’Agenzia per la cybersicurezza nazionale (ACN) ha pubblicato l’alert AL07/261021/CSIRT-ITA sulle due vulnerabilità: PHP2Shell: sanate vulnerabilità critiche in PHP.

Fonti