Missing Web Security Header: X-Content-Type-Options rilevato da un Web Vulnerability Assessment
Descrizione
La vulnerabilità nota come “Missing Web Security Header: X-Content-Type-Options” riguarda l’assenza dell’intestazione di sicurezza HTTP X-Content-Type-Options nelle risposte del server web. Questa intestazione è utilizzata per prevenire che i browser interpretino i file come un tipo diverso da quello dichiarato dal server e quindi prevenire attacchi legati a tecniche di “sniffing”.
Che cosa significa MIME type sniffing
Quando l’intestazione X-Content-Type-Options manca, i browser possono effettuare il “MIME type sniffing”, ovvero determinare il tipo di contenuto di una risposta HTTP analizzandone il contenuto piuttosto che fidarsi del tipo MIME dichiarato. Questo comportamento può essere sfruttato per eseguire attacchi di tipo Cross-Site Scripting (XSS) e altre iniezioni di contenuti malevoli.
Rischi Associati al Missing Web Security Header: X-Content-Type-Options
- Cross-Site Scripting (XSS)
Gli attaccanti possono sfruttare il “MIME type sniffing” per eseguire script malevoli in un contesto che dovrebbe essere sicuro. - Esecuzione di contenuti malevoli
File destinati a essere trattati come innocui (es. testo) potrebbero essere interpretati come script eseguibili. - Rischi di Sicurezza Generali
L’incapacità di imporre correttamente i tipi di contenuto dichiarati aumenta la superficie di attacco.
Come Mitigare la Vulnerabilità
Per mitigare questa vulnerabilità, è necessario aggiungere l’intestazione X-Content-Type-Options con il valore nosniff nelle risposte HTTP del server. Questo indica ai browser di utilizzare solo il MIME type dichiarato e non forzare alcuna interpretazione.
Come implementare l’intestazione X-Content-Type-Options e perché
Implementare l’intestazione X-Content-Type-Options è una buona pratica di sicurezza che aiuta a prevenire che i browser interpretino i contenuti in modo diverso da quanto dichiarato dal server. Questo riduce il rischio di esecuzione di contenuti malevoli e migliora la sicurezza complessiva del sito web.
Esempi di Configurazione
Apache
Aggiungi la seguente direttiva nel file di configurazione (httpd.conf o apache2.conf):
Header set X-Content-Type-Options "nosniff"
Nginx
Aggiungi la seguente direttiva nel blocco server del file di configurazione (nginx.conf):
add_header X-Content-Type-Options "nosniff";
Express.js (Node.js)
Utilizza il middleware helmet per configurare l'intestazione:
const helmet = require('helmet');
app.use(helmet.noSniff());