La sorveglianza caricamenti file del plugin CSDN annota chi carica file sul tuo sito, anche fuori dalla libreria media. Il controllo di integrità, invece, verifica che i file del plugin non siano stati toccati. Sono due difese diverse, ma entrambe cercano lo stesso scenario: un file malevolo che entra dove non dovrebbe.

Dove si trova
Attenzione al posto: il form non sta nella scheda “Hardening / IDS”. Apri Impostazioni > Cisilino Site Defense Network (punto 1), resta sulla scheda Generale (punto 2) e scorri fino in fondo. Dopo la whitelist trovi la sezione “Sorveglianza caricamenti file” (punto 3). Il controllo di integrità si legge invece nella scheda Test, spiegata nel capitolo Scheda Test.
A cosa serve la sorveglianza caricamenti file
La sezione dice: “Registra i file caricati sul sito, compresi quelli che non passano dalla libreria media: form di plugin, endpoint admin-ajax, upload arbitrari di un tema.” Da lì entra la maggior parte delle webshell. Un registro che guardi solo la libreria media non le vede.
Come si usa
- Apri la scheda Generale e scorri fino a “Sorveglianza caricamenti file”.
- Controlla la riga “Sorveglianza”: “Registra i caricamenti di file”.
- Controlla la riga “Blocco file eseguibili”: “Rifiuta i caricamenti con estensione eseguibile (.php, .phtml, .phar, .sh, .htaccess…)”.
- Clicca su “Salva sorveglianza caricamenti”.
- Leggi l’avviso: “Impostazioni della sorveglianza caricamenti salvate.”.
Registra i caricamenti di file
Questa opzione è attiva di default. Gli eventi finiscono nel gruppo “Caricamenti di file” del registro attività. Su una richiesta senza file il costo è nullo. Il plugin annota ogni richiesta che contiene un file, con il campo e l’indirizzo che l’ha ricevuta. Le azioni che vedrai nel registro sono:
- “File ricevuto in una richiesta POST”.
- “File caricato”.
- “ATTENZIONE: caricato file potenzialmente eseguibile”.
- “Caricamento BLOCCATO”.
Il registro locale tiene al massimo 500 righe, se non cambi il tetto nelle impostazioni del registro attività. Come leggerlo è spiegato nel capitolo Registro attività.
Blocco file eseguibili
Questa opzione è disattivata di default. Funziona solo se è attiva anche “Registra i caricamenti di file”: con la sorveglianza spenta il blocco non fa nulla, anche se la casella è spuntata. Se la attivi, WordPress rifiuta il file con il messaggio: “Tipo di file non consentito su questo sito (Cisilino Site Defense Network: caricamento di file eseguibili bloccato).” Il controllo riconosce anche le doppie estensioni, come immagine.php.jpg.
Le estensioni considerate pericolose sono: php, php3, php4, php5, php7, php8, phtml, phps, phar, pht, shtml, cgi, pl, py, rb, sh, bash, htaccess, htpasswd, jsp, asp, aspx, exe, so, dll, ini, svg e svgz.
Attenzione: l’elenco blocca anche .svg, quindi i loghi in SVG non si caricano più. Blocca anche .ini, .py, .exe e .dll, che compaiono in allegati e pacchetti. Il plugin guarda tutte le parti dopo il primo punto. Un nome come archivio.pl.zip viene quindi rifiutato. Il blocco vale solo per i caricamenti gestiti da WordPress (filtro wp_handle_upload_prefilter). Un plugin che salva il file per conto suo viene registrato (“File ricevuto in una richiesta POST”) ma non fermato. Chi scrive direttamente su disco, senza una richiesta con file, non lascia traccia in questo registro.
Il controllo di integrità
A differenza della sorveglianza caricamenti file, qui non guardi i nuovi upload ma i file già presenti. Il plugin confronta gli hash MD5 dei suoi file .php con quelli attesi. Cerca file modificati, mancanti o aggiunti. Esclude le cartelle tests e dist. I file che non sono PHP non vengono controllati.
Il controllo gira una volta al giorno, tramite il sistema di pianificazione di WordPress. Se il sito ha poche visite, può slittare. Il riferimento è il file checksums.json nella cartella del plugin, se presente. Altrimenti il plugin usa una fotografia dei file scattata all’attivazione e a ogni cambio di versione.
Come si legge l’esito
Lo trovi nella scheda Test, nel riquadro “Integrità dei file del plugin”, dove c’è anche il pulsante “Verifica adesso” per lanciare il controllo subito. Ci sono quattro casi:
- “Nessuna verifica ancora eseguita.”, se non è mai partito.
- Riquadro verde: “Tutti i N file verificati corrispondono. Ultimo controllo: data.”.
- Riquadro giallo: “Nessun riferimento disponibile: impossibile verificare. Riattiva il plugin per catturare una nuova fotografia dei file.”.
- Riquadro rosso: “ATTENZIONE: i file del plugin non corrispondono a quelli attesi.”, con tre elenchi: “Modificati”, “Mancanti”, “Non previsti”.
Nell’elenco compaiono al massimo 15 nomi. Se vedi il rosso e non hai toccato i file a mano, il plugin ti dice di trattare il sito come potenzialmente compromesso. Reinstalla il plugin da una copia attendibile e controlla il resto dell’installazione.
Se il riferimento è la fotografia, il riquadro verde lo scrive. Quel confronto trova le modifiche successive, non un plugin già compromesso al momento dell’installazione.
Attenzione: l’integrità è un rilevatore, non una barriera. Chi ha già scritto sui file può anche riscrivere gli hash o spegnere il controllo. Modifiche fatte a mano o un caricamento a metà producono un allarme rosso.
Cosa succede dietro le quinte
La sorveglianza caricamenti file e l’integrità usano lo stesso registro. Il controllo giornaliero scrive nel registro attività solo in due casi: quando trova un problema e quando, dopo un problema, torna tutto regolare. Quando va tutto bene non scrive nulla. Il registro viene poi inviato al pannello, così una copia dell’allarme sta fuori dal tuo server.
Se qualcosa non va
La sorveglianza caricamenti file resta utile anche con il blocco spento. Se un plugin legittimo smette di caricare file, spegni “Blocco file eseguibili” e riprova. Per capire quali caricamenti arrivano sul sito, lascia attiva la sorveglianza e consulta il registro. Per le regole sui file in uploads vedi anche il capitolo Hardening / IDS.
Il rischio che qui si cerca di ridurre è descritto da OWASP: leggi la pagina sul caricamento di file senza restrizioni, utile per capire perché gli upload sono un punto debole.
Capitolo precedente: Hardening / IDS: le regole per .htaccess. Capitolo successivo: Scheda Test: verificare che le protezioni funzionino. Indice: introduzione del manuale.
Lascia un commento