In breve: secondo i rapporti, CERT-EU consiglia di censire le installazioni PHP, applicare subito la patch e isolare le applicazioni raggiungibili pubblicamente se non possono essere aggiornate in tempi brevi. CERT-Bund e il BSI raccomandano nella loro allerta l'aggiornamento immediato e, se non è possibile, di scollegare temporaneamente dalla rete i server web interessati. Le raccomandazioni coincidono nel nucleo: prima l'aggiornamento, l'isolamento come soluzione d'emergenza, le misure transitorie solo come integrazione.
Chi avvisa, e per chi?
Con PHP2Shell diversi enti ufficiali hanno reagito nel giro di poche ore. Per le aziende in Germania il primo riferimento è il BSI (l'Ufficio federale tedesco per la sicurezza informatica) con il suo team di pronto intervento informatico CERT-Bund (il CERT del governo tedesco). CERT-EU è il servizio di cybersicurezza delle istituzioni dell'UE; le sue indicazioni si rivolgono innanzitutto a queste, ma sono lette in tutta Europa. Secondo BleepingComputer ha lanciato un avviso anche il britannico National Cyber Security Centre. Dal settore privato si sono fatte sentire, tra gli altri, Huntress e Cloudflare.
Per Lei come gestore l'origine conta meno della concordanza. Se più enti indipendenti consigliano la stessa cosa, è un segnale forte.
CERT-Bund, CERT-EU e altri: gli avvisi su PHP a confronto
| Ente | Raccomandazione principale | Particolarità |
|---|---|---|
| BSI / CERT-Bund | aggiornare subito, altrimenti scollegare temporaneamente i server web dalla rete | livello di allerta 3 / arancione |
| CERT-EU | censire le installazioni PHP, applicare subito la patch, altrimenti isolare le applicazioni pubbliche | secondo i rapporti riteneva possibili interessate le versioni a partire da PHP 5 |
| UK NCSC | aggiornare subito o scollegare dalla rete i sistemi interessati fino alla patch | secondo BleepingComputer |
| php.net | aggiornare a 8.5.12, 8.4.27, 8.3.36 o 8.2.35, misure transitorie solo come protezione parziale | fonte primaria per versioni e impostazioni |
Nessuno degli enti consiglia di affidarsi solo a un Web Application Firewall o a impostazioni nel php.ini. Tutti indicano l'aggiornamento come vera soluzione. Che cosa consigli il BSI oltre a questo, nel dettaglio, è nella pagina Cosa raccomanda il BSI su PHP2Shell.
La questione delle versioni: cosa significa «a partire da PHP 5»
Secondo i rapporti, CERT-EU riteneva possibile che fossero interessate le versioni a partire da PHP 5. Secondo i rapporti specializzati, l'ente si basava su informazioni che circolavano prima della segnalazione ufficiale. La stampa specializzata parla di quasi tutte le versioni fino a PHP 5.4.
In pratica il limite esatto cambia poco. Per PHP 8.1 e precedenti il progetto PHP non fornisce più aggiornamenti ufficiali. Esistono backport minimi del codice sorgente per 7.4, 8.0 e 8.1, ma nessun rilascio. Chi gestisce ancora PHP 5 o 7 dipende da distribuzioni, terze parti o da una migrazione. Se la Sua distribuzione abbia rilasciato una correzione lo mostrano le sue pagine di sicurezza, ad esempio il Debian Security Tracker, le Ubuntu Security Notices o le indicazioni di Red Hat. Esistono anche offerte commerciali di supporto a lungo termine per vecchie versioni di PHP; se coprano PHP2Shell, se lo faccia confermare per iscritto dal fornitore. I dettagli sui rami sono in Quali versioni di PHP sono interessate? e PHP 8.1 e precedenti.
Isolare: come attuare la raccomandazione
«Isolare» suona astratto. Si intende che le richieste da Internet non raggiungano più l'applicazione PHP vulnerabile. A seconda dell'applicazione esistono diversi livelli:
- Spegnere completamente: il sito viene sostituito da una pagina di emergenza statica senza PHP. È la variante più sicura.
- Limitare l'accesso: l'applicazione resta in esercizio, ma è raggiungibile solo via VPN o da indirizzi IP stabiliti, ad esempio per i portali interni.
- Autenticazione a monte: un'autenticazione a livello di server web o proxy davanti all'applicazione. Attenzione: con mod_php è stato dimostrato un exploit prima che giri il codice dell'applicazione. L'autenticazione deve quindi intervenire prima di PHP, non nell'applicazione.
- Bloccare l'accesso diretto all'origine: chi usa un servizio proxy o CDN dovrebbe assicurarsi che il server non sia raggiungibile anche direttamente.
Una limitazione nel server web può avere questo aspetto, come configurazione non rischiosa per Apache:
# Consentire l'accesso solo dalla rete interna (adattare l'intervallo di esempio)
<Location "/">
Require ip 192.0.2.0/24
</Location>
Verifichi l'effetto dall'esterno, ad esempio con una connessione mobile. Un isolamento verificato solo nella rete dell'ufficio non è un isolamento verificato.
Isolare è una soluzione ponte. Nel momento in cui isola, stabilisca subito entro quando arriverà l'aggiornamento e chi lo installa. Altrimenti la soluzione d'emergenza diventa uno stato permanente.
Ciò che le raccomandazioni richiedono in comune: un inventario
Tutti gli enti ufficiali presuppongono che Lei sappia dove gira PHP. Proprio qui in molte aziende si inceppa: micrositi di vecchie campagne, un portale clienti dimenticato, un sistema di test con indirizzo pubblico, un'applicazione su un NAS. CERT-EU indica espressamente il censimento delle installazioni PHP come primo passo.
I sistemi dimenticati si trovano più facilmente per tre vie: le zone DNS dei Suoi domini, l'elenco dei certificati TLS emessi e i contratti con agenzie, hoster e fornitori di software. Ogni voce di cui nessuno sa dire subito che cosa ci giri dietro va nell'elenco di verifica. Proprio questi sistemi sono pericolosi in una situazione come PHP2Shell, perché nessuno li aggiorna e nessuno li rimpiange se vengono compromessi.
Un inventario utilizzabile contiene per ogni sistema: indirizzo, scopo, gestore, versione PHP e modalità di esecuzione, origine dei pacchetti e il referente per gli aggiornamenti. Come costruirlo e tenerlo aggiornato lo mostra l'articolo Inventario di tutti i siti web e server.
Come aiuta concretamente PHP SOS?
- Censimento: individuiamo i Suoi sistemi PHP raggiungibili pubblicamente e li ordiniamo per rischio.
- Patch o isolamento: installiamo gli aggiornamenti oppure isoliamo le applicazioni che non possono essere aggiornate subito, e verifichiamo l'effetto dall'esterno.
- Versioni vecchie: per i sistemi con PHP 8.1 e precedenti pianifichiamo con Lei il percorso verso uno stato supportato.
- Prova: riceve una documentazione delle raccomandazioni attuate per ogni sistema.
Come portiamo le vecchie applicazioni a versioni supportate lo descrive il servizio Migrazione PHP per sistemi legacy.
Conclusione
CERT-EU, CERT-Bund, BSI e progetto PHP parlano con una voce sola: aggiornare e, dove non è subito possibile, isolare. Le differenze stanno nei dettagli, come il limite delle versioni. Per la Sua pratica conta il primo passo che tutti presuppongono: sapere dove gira PHP.
Domande frequenti
Qual è la differenza tra CERT-Bund e CERT-EU?
CERT-Bund è il team di pronto intervento informatico presso il BSI e avvisa in Germania sulle vulnerabilità. CERT-EU è il servizio di cybersicurezza delle istituzioni e degli organi dell'Unione europea. Entrambi pubblicano raccomandazioni utili anche per le aziende.
Che cosa significa isolare un'applicazione PHP?
Significa che l'applicazione non è più liberamente raggiungibile da Internet. È possibile con una pagina di emergenza, con un accesso solo via VPN o da determinati indirizzi IP, oppure con lo spegnimento completo. L'essenziale è che le richieste dall'esterno non raggiungano più il processo PHP vulnerabile.
Secondo CERT-EU sono interessate anche le versioni PHP 5?
Secondo i rapporti, CERT-EU riteneva possibile che fossero interessate le versioni a partire da PHP 5, basandosi su informazioni che circolavano prima della segnalazione ufficiale. La stampa specializzata cita quasi tutte le versioni fino a PHP 5.4. Per versioni così vecchie non esistono aggiornamenti ufficiali.
Esistono indicatori ufficiali per riconoscere gli attacchi?
No. Finora non sono stati pubblicati Indicators of Compromise confermati su PHP2Shell. Il riconoscimento si basa sull'analisi del comportamento, ad esempio su processi del server web che avviano shell o su nuovi file PHP nelle cartelle di upload.