Rapporto di intervento
Verifica dell’intervento correttivo PHP2Shell
Punteggio di salute
BuonoDa migliorareA rischio
Prima 48
Prima 31
Prima 58
Prima 38
Prima 92
I punteggi riassumono le verifiche di questo report, ponderate al 40% sicurezza, 25% backup, 20% aggiornamenti e 15% prestazioni. Descrivono il rischio al momento rilevato e non costituiscono una certificazione.
1Sintesi
Il server web di produzione eseguiva PHP 8.3.35, versione interessata da entrambe le vulnerabilità PHP2Shell. Durante la finestra di manutenzione concordata abbiamo aggiornato PHP alla versione 8.3.36, riavviato tutti i worker PHP-FPM e confermato che l’applicazione ora gestisce il traffico con l’ambiente di esecuzione corretto. Tutti i controlli funzionali concordati sono stati superati e non sono stati registrati nuovi errori.
La revisione ha inoltre rilevato, al di fuori dell’ambito concordato, un gruppo di processi PHP 7.4 non più supportato, un riavvio del kernel in sospeso e lacune nella copertura delle copie di sicurezza. Questi aspetti non incidono sulla correzione di PHP2Shell, ma vanno risolti. Ciascuno è elencato con la relativa priorità nelle raccomandazioni.
- Stato PHP2Shell
- Corretto
- Controlli funzionali
- 8 su 8 superati
- Interruzioni
- Nessuna rilevata
- Azioni successive
- 6, di cui 2 ad alta priorità
2Ambito e metodo
Incluso nell’ambito
- Un server di produzione,
web-01 - Gruppo di processi PHP-FPM
wwwche esegue l’applicazione del negozio - PHP CLI utilizzato dalle attività pianificate
- Controlli concordati su accesso, ricerca, checkout, moduli, caricamenti e attività pianificate
Escluso dall’ambito
- Gruppo di processi PHP 7.4
legacy(segnalato, non modificato) - Componenti interni del server di database e codice dell’applicazione
- Ricerca di malware o indagine su compromissioni
- Ambienti di staging e di sviluppo
Metodo
Inventario in sola lettura via SSH con una chiave a validità limitata; provenienza dei pacchetti verificata rispetto al repository del fornitore e all’avviso di PHP; snapshot con avvio verificato prima di qualsiasi modifica; aggiornamento applicato tramite il gestore di pacchetti del sistema; riavvio dei worker; controlli funzionali con gli account di prova del cliente. L’accesso temporaneo è stato rimosso alle 22:31.
3Inventario del server
Rilevato all’inizio della finestra di lavoro, prima di qualsiasi modifica.
| Nome host | web-01.example-retail.test |
|---|---|
| Ruolo | Server web e applicativo di produzione |
| Hosting | Server privato virtuale, 4 vCPU, 8 GB di memoria |
| Sistema operativo | Ubuntu 24.04.3 LTS |
| Kernel in esecuzione | 6.8.0-85-generic Kernel più recente installato, riavvio in sospeso |
| Tempo di attività | 142 giorni |
| Disco | Volume di sistema da 80 GB, utilizzato al 61% |
| Server web | nginx 1.24.0 |
| Gruppi di processi PHP-FPM | www (PHP 8.3), legacy (PHP 7.4) |
| Database | MySQL 8.0.43 su un host gestito separato |
| Origine dei pacchetti PHP | ppa:ondrej/php |
| Aggiornamenti di sicurezza automatici | Disattivati |
| Sincronizzazione dell’ora | Attiva |
| Monitoraggio | Solo controllo di disponibilità; nessun avviso su risorse o errori dell’applicazione |
4Ambienti di esecuzione PHP
Sono stati identificati tutti i binari e i gruppi di processi PHP presenti sul server, compresi quelli esclusi dall’ambito concordato.
| Ambiente | Utilizzo | Prima | Dopo | Stato |
|---|---|---|---|---|
php8.3-fpm / www | Applicazione del negozio | 8.3.35 | 8.3.36 | Corretto |
php8.3-cli | Attività pianificate | 8.3.35 | 8.3.36 | Corretto |
php7.4-fpm / legacy | Negozio archiviato in /old-shop | 7.4.33 | 7.4.33 | Intervento necessario |
PHP 7.4 non è più supportato da novembre 2022 e non riceve correzioni di sicurezza dal progetto originale. Sulla sola base della versione non è stato possibile escludere l’esposizione del gruppo di processi legacy; vedi la raccomandazione R1.
Osservazioni sulla configurazione
expose_phpè disabilitato edisplay_errorsè disattivato in produzione.- OPcache è attivo con 128 MB di memoria, sufficienti per l’applicazione.
session.upload_progress.enabledè attivo ma non viene utilizzato dall’applicazione.- Ogni gruppo di processi viene eseguito con un proprio utente di sistema e un socket separato.
5Stato delle vulnerabilità
| Avviso | Ambiente interessato | Prima | Dopo | Prove |
|---|---|---|---|---|
CVE-2026-109618 | php8.3 | Vulnerabile | Risolto | Changelog del pacchetto e versione in esecuzione |
CVE-2026-109619 | php8.3 | Vulnerabile | Risolto | Changelog del pacchetto e versione in esecuzione |
CVE-2026-109618, CVE-2026-109619 | php7.4 | Non valutato | Non valutato | Escluso dall’ambito concordato |
Una correzione adattata dal fornitore a una versione precedente può avere un numero di versione diverso. Il rapporto effettivo utilizza l’avviso del fornitore pertinente. Il buon esito della verifica della correzione non dimostra che un ambiente non sia mai stato compromesso.
6Copie di sicurezza e ripristino
Le copie di sicurezza sono state esaminate prima di qualsiasi modifica. L’aggiornamento poteva iniziare solo dopo la creazione di uno snapshot verificato.
| Copia di sicurezza | Pianificazione | Ultimo esito positivo | Conservazione | Posizione | Test di ripristino |
|---|---|---|---|---|---|
| Dump del database | Giornaliera, 03:15 | 2026-10-22 03:16 | 14 giorni | Fuori sede, cifrata | Mai |
| File dell’applicazione | Giornaliera, 03:40 | 2026-10-22 03:52 | 14 giorni | Stesso fornitore, volume separato | Mai |
| Snapshot del server pre-intervento | Creato per questo intervento | 2026-10-22 21:04 | 7 giorni | Fornitore di hosting | Avvio verificato |
Rilievi
- La copia di sicurezza dei file esclude
/var/www/shop/uploads, dove sono archiviati circa 6,2 GB di documenti dei clienti. - Per nessuna delle due copie pianificate è stato registrato un test di ripristino. Una copia di sicurezza mai ripristinata non offre garanzie in caso di ripristino.
- I dump del database sono cifrati e conservati presso un altro fornitore, il che li protegge in caso di perdita del server o dell’account di hosting.
Piano di ripristino per questa modifica
Reinstallare i pacchetti PHP precedenti dalla cache locale dei pacchetti e ricaricare PHP-FPM, oppure avviare lo snapshot pre-intervento. Tempo di ripristino stimato: 15 minuti. Il ripristino non è stato necessario.
7Registro delle modifiche
| Ora | Azione | Esito |
|---|---|---|
21:00 | Accesso aperto; registrata la situazione iniziale di versioni, servizi e tempi di risposta | Completato |
21:04 | Snapshot del server pre-intervento creato e verificato all’avvio | Completato |
21:12 | Controlli funzionali iniziali eseguiti | 8 su 8 superati |
21:18 | Pacchetti PHP 8.3 aggiornati da 8.3.35 a 8.3.36 | Completato |
21:20 | PHP-FPM riavviato; nessun worker della versione precedente ancora attivo | Completato |
21:24 | Versione in esecuzione confermata tramite server web e CLI | Completato |
21:31 | Controlli funzionali post-intervento eseguiti | 8 su 8 superati |
21:55 | Log degli errori e tempi di risposta monitorati per 20 minuti | Nessun nuovo errore |
22:31 | Chiave di accesso temporanea rimossa e sessione chiusa | Completato |
8Verifica post-intervento
| Controllo | Metodo | Esito |
|---|---|---|
| Versione PHP servita alle richieste web | Script diagnostico temporaneo, rimosso dopo l’uso | 8.3.36 |
| Worker PHP-FPM | Elenco dei processi e stato del servizio | Superato |
| Accesso cliente | Account di prova del cliente | Superato |
| Accesso amministratore | Account di prova del cliente | Superato |
| Ricerca prodotti | Tre termini di ricerca concordati con il cliente | Superato |
| Checkout | Ordine di prova in modalità test del fornitore di pagamento | Superato |
| Modulo di contatto | Invio di prova, ricezione confermata dal cliente | Superato |
| Caricamento file | Documento di prova caricato e scaricato | Superato |
| Email di reimpostazione password | Account di prova, email ricevuta | Superato |
| Attività pianificate | Esecuzione pianificata successiva verificata nei log | Superato |
| Log degli errori | Confronto dei 30 minuti prima e dopo la modifica | Nessun nuovo errore |
| Tempo di risposta della home page | Mediana di 20 richieste | 182 ms → 176 ms |
9Rilievi e raccomandazioni
In ordine di priorità. Nessuno di questi elementi blocca la correzione di PHP2Shell.
| ID | Priorità | Rilievo | Raccomandazione |
|---|---|---|---|
R1 | Alta | Il gruppo di processi PHP 7.4 non è più supportato e potrebbe essere esposto. | Dismettere il negozio archiviato o limitarne l’accesso agli utenti autenticati. Se deve restare online, migrarlo a una versione di PHP supportata. Preventivo separato. |
R2 | Alta | È installato un kernel più recente, ma non è in esecuzione; il server non viene riavviato da 142 giorni. | Pianificare un riavvio nella prossima finestra di manutenzione e verificare poi il kernel in esecuzione. |
R3 | Media | Sono in sospeso 23 aggiornamenti del sistema operativo, tra cui OpenSSL e nginx. | Applicarli in una finestra pianificata e attivare gli aggiornamenti di sicurezza automatici. |
R4 | Media | Le copie di sicurezza non sono mai state sottoposte a test di ripristino e quella dei file esclude i caricamenti dei clienti. | Aggiungere la directory dei caricamenti alla copia di sicurezza dei file ed eseguire ogni trimestre un test di ripristino documentato. |
R5 | Bassa | Il monitoraggio dell’avanzamento dei caricamenti è attivo ma non utilizzato. | Disattivare session.upload_progress.enabled per ridurre la superficie di attacco. |
R6 | Bassa | Il monitoraggio copre solo la disponibilità. | Aggiungere avvisi per spazio su disco, saturazione di PHP-FPM ed errori dell’applicazione. |
10Prove e consegna
- Identificativi dell’ambiente e finestra di lavoro concordata
- Origine del pacchetto, versione completa e avviso pertinente del fornitore
- Riferimento alla copia di sicurezza, registro delle modifiche e prove del riavvio dei processi
- Controlli funzionali concordati, risultati e limiti
- Trascrizione completa dei comandi ed estratti del changelog dei pacchetti
11Limiti
Il rapporto copre l’ambiente e i controlli concordati al momento registrato. Non è una certificazione di sicurezza, una garanzia contro vulnerabilità future o una conclusione che escluda compromissioni precedenti. Una sospetta compromissione richiede un’indagine separata.