Missing Web Security Header: X-Content-Type-Options. Come implementare l’intestazione X-Content-Type-Options e perché

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());

Disclaimer. Il codice e le indicazioni tecniche presenti in questo articolo sono forniti a scopo informativo. È fondamentale che qualsiasi codice venga verificato attentamente e testato in un ambiente sicuro prima di essere implementato in un contesto produttivo. Le configurazioni e le impostazioni descritte potrebbero non essere adatte a tutte le situazioni e potrebbero richiedere adattamenti specifici. Si consiglia di consultare un tecnico esperto o un consulente di fiducia per approfondire le informazioni fornite e garantire che siano applicate correttamente al proprio ambiente. Si declina ogni responsabilità rispetto all’uso di tali informazioni.