# Sicurezza Craft CMS dopo PHP2Shell: proteggere i siti delle agenzie

> Proteggere Craft CMS dopo PHP2Shell: verificare PHP nel report di sistema, tutelare .env e Security Key, disattivare devMode e allineare la Project Config.

Fonte: https://phpsos.de/it/plattformen/craft-cms/  
Stato: 25/10/2026  
Fornitore: PHP SOS, Assistenza di emergenza PHP e sicurezza dei server. Assistenza immediata su WhatsApp: https://wa.me/491736494914?text=Buongiorno%20PHP%20SOS%2C%20abbiamo%20bisogno%20di%20aiuto%20con%20il%20nostro%20server%20PHP.%20Azienda%3A%20%E2%80%A6%20Sito%20web%3A%20%E2%80%A6

**In breve:** dopo PHP2Shell la sicurezza di Craft CMS dipende dal PHP del server, non da Craft. Proprio le agenzie con molti siti Craft dovrebbero ora controllare ogni server singolarmente. Dopo patch e riavvio vanno verificati `.env`, Security Key, `devMode`, la document root e l'allineamento della Project Config.

## Che cosa significa PHP2Shell per i siti Craft

Craft CMS è apprezzato dalle agenzie perché offre modelli di contenuto flessibili e template puliti. Di conseguenza molte agenzie seguono decine di siti Craft su server e pacchetti di hosting diversi. Le vulnerabilità PHP CVE-2026-109618 e CVE-2026-109619 consentono, secondo il team PHP, di eseguire codice dannoso da remoto senza autenticazione, indipendentemente dalla versione di Craft.

Per le agenzie la domanda più importante è quindi organizzativa: quale sito gira dove, con quale PHP, e chi è responsabile dell'aggiornamento? Un elenco di tutte le installazioni con hoster, stato di PHP e referente è il primo passo. Come sosteniamo le agenzie in questo è descritto in [Partner di sicurezza per le agenzie](https://phpsos.de/it/branchen/agenturen-white-label/).

## Sicurezza di Craft CMS: verificare la versione di PHP

Nel Control Panel, **Strumenti > Report di sistema** mostra la versione di PHP, il database e i plugin installati. È la versione con cui il sito gira sul web. La console di Craft `php craft`, l'elaborazione della coda e i cronjob usano invece il PHP a riga di comando. Entrambi devono essere aggiornati.

Le versioni upstream corrette sono 8.5.12, 8.4.27, 8.3.36 e 8.2.35. Molti hoster applicano le correzioni come backport; il numero resta allora lo stesso. Quali versioni siano interessate lo mostra [Quali versioni di PHP sono interessate?](https://phpsos.de/it/php2shell/betroffene-php-versionen/). Quali versioni di PHP supporta la Sua versione di Craft, lo verifichi nei requisiti di sistema nella documentazione su craftcms.com.

Craft elabora le attività in background in una coda. Se gira come processo permanente sotto un gestore di processi, anche questo deve essere riavviato dopo l'aggiornamento di PHP.

## Directory e configurazione in Craft

| Posizione | Contenuto | Punto da controllare |
|---|---|---|
| `.env` | Accesso al database, `CRAFT_SECURITY_KEY`, altre chiavi | rinnovare i valori in caso di sospetto |
| `config/general.php` | `devMode`, `allowAdminChanges`, percorso del Control Panel | codice PHP aggiunto |
| `config/project/` | Project Config come YAML | confronto con Git |
| `web/` | Document root con `index.php`, `cpresources/`, spesso upload | file PHP aggiuntivi |
| `storage/` | Log, file di runtime, spesso backup del database | non raggiungibile dal web |
| `templates/` | Template Twig | JavaScript estraneo |
| `modules/`, `vendor/` | moduli e plugin propri | file modificati, `composer audit` |

Un punto spesso trascurato è `storage/backups/`. Craft vi deposita i backup del database, che possono contenere dati completi di clienti e moduli. Questa cartella non deve mai trovarsi sotto la document root.

Controlli non invasivi da riga di comando:

```bash
# Mostrare le differenze tra Project Config e database
php craft project-config/diff
# File PHP nella document root tranne index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
```

> **Importante:**
> In produzione `devMode` va impostato su `false`. Con `devMode` attivo Craft mostra messaggi di errore dettagliati con percorsi e estratti di codice, che facilitano il lavoro agli aggressori.

## Control Panel, utenti e plugin

Il Control Panel si trova per impostazione predefinita in `/admin`. Verifichi quali utenti abbiano diritti di amministratore e rimuova gli accessi di ex collaboratori e freelance. Craft supporta un'autenticazione a due fattori; la usi per tutti gli account con diritti elevati.

In produzione imposti `allowAdminChanges` su `false`. Allora campi, sezioni e impostazioni dei plugin si possono modificare solo tramite la Project Config versionata, e ogni scostamento emerge nel confronto con Git. I plugin del Plugin Store portano codice PHP proprio; verifichi se siano tutti ancora manutenuti e compatibili con la versione di PHP prevista.

```php
// config/general.php, estratto per l'ambiente di produzione
'devMode' => false,
'allowAdminChanges' => false,
```

## Che cosa può fare un aggiornamento di Craft e che cosa no

Un aggiornamento di Craft o di un plugin chiude errori in quel codice e può rendere possibili versioni di PHP più recenti. Non applica patch a PHP, non riavvia né PHP-FPM né la coda, non rinnova una Security Key trapelata e non rimuove file estranei da `web/` o `storage/`.

Per le agenzie con molte installazioni Craft, dopo la patch conta soprattutto la ripetibilità. Annoti per ogni sito quale versione di PHP giri sul web e da riga di comando, quando sia stato confermato il riavvio e se i controlli abbiano dato esiti anomali. Questa panoramica aiuta in caso di richieste dei clienti e di future segnalazioni. Pensi anche agli ambienti di staging e di sviluppo raggiungibili pubblicamente. Girano spesso con `devMode`, versioni più vecchie e dati reali dei clienti e negli aggiornamenti vengono volentieri dimenticati. Se ha dubbi che il sito di un cliente sia interessato, informi il cliente in modo oggettivo anziché aspettare.

## In che modo PHP SOS aiuta concretamente?

- Rileviamo con Lei tutte le installazioni Craft con hoster, stato di PHP e competenze.
- Ci facciamo confermare patch e riavvio per ogni server e mettiamo al sicuro i log a partire dal 20/10/2026.
- Controlliamo document root, `storage`, configurazione, utenti e l'allineamento della Project Config.
- Su richiesta ci occupiamo dell'assistenza continuativa alla sicurezza dei Suoi siti cliente nel [contratto di manutenzione della sicurezza](https://phpsos.de/it/leistungen/security-wartungsvertrag/), anche a Suo nome.


## Domande frequenti

**Craft CMS è interessato da PHP2Shell?**  
Craft CMS stesso non ha una nuova vulnerabilità. Ma gira su PHP, e PHP2Shell è in PHP. Ogni installazione di Craft su un server non aggiornato è quindi potenzialmente attaccabile, indipendentemente dalla versione di Craft.

**Dove mostra Craft la versione di PHP?**  
Nel Control Panel, in Strumenti > Report di sistema. Lì si trovano versione di PHP, database e plugin installati. Un backport applicato non si riconosce dal numero; lo conferma il Suo hoster.

**Che cos'è la Security Key in Craft e perché rinnovarla?**  
La Security Key nel file .env serve a firmare e cifrare dati. Chi la conosce può, in certe circostanze, falsificare sessioni o dati dei moduli. In caso di sospetto dovrebbe rinnovarla in accordo con la Sua agenzia.

**Che cosa porta allowAdminChanges impostato su false?**  
In questo modo campi, sezioni e impostazioni dei plugin non si possono più modificare in produzione tramite il Control Panel. Le modifiche passano solo dalla Project Config versionata, il che rende le manipolazioni più difficili e più visibili.

## Fonti

- [php.net: bollettini di sicurezza](https://www.php.net/)
- [Craft CMS](https://craftcms.com/)
- [OWASP Cheat Sheets](https://cheatsheetseries.owasp.org/)
- [Versioni di PHP supportate](https://www.php.net/supported-versions.php)
