Missing Web Security Header Tag Content-Security-Policy. Come implementare l’intestazione Content-Security-Policy e perché

Missing Web Security Header Tag Content-Security-Policy segnalato nel report di Web Vulnerability Assessment

In seguito a un Web Vulnerability Assessment  è stato segnalato “Missing Web Security Header Tag Content-Security-Policy”? La mancanza di header specifici lato server può essere corretta attraverso un’opportuna configurazione per migliorare la sicurezza di piattaforme e sistemi.

Missing Web Security Header Tag Content-Security-Policy: definisci quali risorse possono essere caricate e limita gli attacchi XSS

La vulnerabilità riguarda l’assenza dell’intestazione di sicurezza HTTP Content-Security-Policy (CSP) nelle risposte del server web. Questa intestazione è utilizzata per prevenire diversi tipi di attacchi, come il Cross-Site Scripting (XSS) e l’iniezione di dati, specificando quali risorse sono consentite per il caricamento e l’esecuzione sulla pagina web.

Quando l’intestazione Content-Security-Policy manca, il server non impone restrizioni su quali risorse (come script, stili, immagini) possono essere caricate ed eseguite nella pagina. Questo può permettere a un attaccante di iniettare codice dannoso che verrà eseguito nel contesto della pagina, compromettendo la sicurezza del sito e degli utenti.

La sicurezza delle applicazioni web è una preoccupazione crescente: cosa succederebbe se, al posto delle immagini che hai selezionato con cura per il blog, il tuo sito iniziasse a caricare immagini ambigue e non adatte al tuo pubblico? Se in seguito a un Web Vulnerability Assessment è stato segnalato “Missing Web Security Header Tag Content-Security-Policy”, significa che il sito potrebbe incappare in problematiche simili diventando il tramite per caricare risorse malevole. L’implementazione di questo header HTTP serve proprio per ridurre il rischio di attacchi come il Cross-Site Scripting (XSS), limitando le risorse che il browser può caricare o eseguire.

Rischi Associati

  • Cross-Site Scripting (XSS)
    Attacchi XSS possono essere eseguiti con maggiore facilità in assenza di una politica CSP.
  • Iniezione di Contenuti Malevoli
    Un attaccante può iniettare script, immagini o altri contenuti dannosi che possono eseguire operazioni non autorizzate.
  • Furto di Dati
    Script malevoli possono essere iniettati per rubare informazioni sensibili come cookie, token di sessione e dati personali.

Cos’è il Cross-Site Scripting (XSS)?

Ricordiamo che il Cross-Site Scripting (XSS) è una vulnerabilità di sicurezza comune che consente agli attaccanti di iniettare codice dannoso in una pagina web visualizzata degli utenti.

Come funziona l’header Content-Security-Policy?

Implementare correttamente l’header Content-Security-Policy (CSP) consente ai proprietari di siti web di controllare le risorse che possono essere caricate o eseguite all’interno del browser che visualizza il sito stesso. Vengono infatti specificate quali sorgenti di contenuti sono considerate sicure, impedendo al browser di eseguire script non autorizzati o di caricare risorse da fonti non fidate.

Implementazione della Content-Security-Policy

Per implementare una CSP, è necessario aggiungere l’intestazione HTTP Content-Security-Policy alla configurazione del server web. Ecco un esempio di come potrebbe apparire:

Esempi di configurazione

Apache

Aggiungi la seguente direttiva nel file di configurazione (conf o apache2.conf):
Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://trusted-scripts.example.com; style-src 'self' https://trusted-styles.example.com;"

Nginx

Aggiungi la seguente direttiva nel blocco server del file di configurazione (conf):
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://trusted-scripts.example.com; style-src 'self' https://trusted-styles.example.com;";

js (Node.js)

Utilizza il middleware helmet per configurare l’intestazione CSP:
const helmet = require('helmet');
app.use(helmet.contentSecurityPolicy({
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'", "'unsafe-inline'", "https://trusted-scripts.example.com"],
styleSrc: ["'self'", "https://trusted-styles.example.com"]
}
}));

Valori Comuni

  • default-src: la fonte predefinita per tutti i tipi di risorse.
  • script-src: fonti consentite per gli script.
  • style-src: fonti consentite per i fogli di stile.
  • img-src: fonti consentite per le immagini.
  • connect-src: fonti consentite per connessioni di tipo XMLHttpRequest, WebSocket ed EventSource.
  • font-src: fonti consentite per i font.
  • frame-src: fonti consentite per gli iframe.

Perché implementare la Content-Security-Policy e correggere la segnalazione Missing Web Security Header Tag Content-Security-Policy?

Implementare una CSP è cruciale perché:

  • Previene gli attacchi XSS
    Bloccando l’esecuzione di script non autorizzati, la CSP riduce drasticamente la possibilità di attacchi XSS.
  • Limita le risorse esterne
    La CSP permette di specificare quali sorgenti esterne sono consentite, riducendo la superficie di attacco.
  • Aumenta la sicurezza complessiva
    Con una configurazione CSP corretta, il sito web diventa molto più resistente a vari tipi di attacchi.

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.