Missing Web Security Header Tag HTTP Strict-Transport-Security (HSTS). Come implementare l’intestazione HTTP Strict-Transport-Security e perché

Missing Web Security Header Tag HTTP Strict-Transport-Security (HSTS) segnalato nel report di Web Vulnerability Assessment

In seguito a un Web Vulnerability Assessment  è stato segnalata una vulnerabilità “Missing Web Security Header Tag HTTP Strict-Transport-Security (HSTS)”?
Questo significa che risulta mancante l’intestazione di sicurezza HTTP Strict-Transport-Security (HSTS) nelle risposte del server web.

Questa intestazione viene utilizzata per forzare i browser a utilizzare connessioni HTTPS sicure per tutte le comunicazioni con il server.

Implementando l’intestazione si prevengono attacchi di tipo man-in-the-middle (MITM) e di downgrade del protocollo.

Che Cosa Significa

Quando l’intestazione Strict-Transport-Security manca, il server non può garantire che le comunicazioni vengano effettuate solo tramite HTTPS. Ciò significa che un attaccante potrebbe intercettare o manipolare il traffico tra il browser dell’utente e il server, esponendo potenzialmente dati sensibili.

Rischi connessi alla mancanza dell’Header Tag HTTP Strict-Transport-Security

  • Attacchi Man-in-the-Middle (MITM)
    Gli attaccanti possono intercettare e alterare le comunicazioni tra il browser e il server.
  • Downgrade degli attacchi di protocollo
    Gli attaccanti possono forzare il browser a utilizzare connessioni HTTP non sicure.
  • Esposizione di dati sensibili
    Senza HTTPS, le informazioni trasmesse possono essere lette o modificate da terze parti.

Come intervenire sulla Vulnerabilità

Per mitigare questa vulnerabilità, è necessario aggiungere l’intestazione Strict-Transport-Security nelle risposte HTTP del server, specificando una politica che imponga l’uso di HTTPS.

Come implementare l’intestazione HTTP Strict-Transport-Security e perché

Come abbiamo visto, l’HTTP Strict-Transport-Security (HSTS) è un meccanismo di sicurezza web che fornisce una protezione contro attacchi di tipo man-in-the-middle, il protocol downgrade e il cookie hijacking. Questo header HTTP forza i browser a utilizzare esclusivamente il protocollo HTTPS per tutte le comunicazioni con il server, impedendo connessioni non sicure tramite HTTP.

Come Implementare HSTS

L’implementazione di HSTS è relativamente semplice e avviene attraverso la configurazione del server web per includere l’header Strict-Transport-Security nelle risposte HTTP.

1. Configurazione in Apache

Su un server web Apache, si può implementare l’HSTS aggiungendo la seguente direttiva nel file .htaccess o httpd.conf:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

  • max-age=31536000: specifica per quanto tempo (in secondi) il browser deve ricordare che solo le connessioni HTTPS sono permesse (qui è impostato a un anno).
  • includeSubDomains: forza l’applicazione della regola HSTS anche a tutti i sottodomini.
  • preload: consente di aggiungere il dominio alla lista di preload di HSTS gestita da Google, in modo che venga forzato HTTPS anche alla prima visita.

2. Configurazione in Nginx

Su un server Nginx, si può implementare l’HSTS aggiungendo la seguente direttiva nel file nginx.conf:
server {
listen 443 ssl;
server_name example.com;

add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload” always;

# Altre configurazioni SSL…
}

3. Configurazione in IIS

Se si utilizza utilizzando Microsoft IIS, si può configurare HSTS tramite il Web.config:

Esempio di Risposta HTTP con HSTS

Una volta configurato correttamente, le risposte del server dovrebbero includere un header simile al seguente:

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Considerazioni Finali

Implementare l’header HSTS è un passo cruciale per garantire che le comunicazioni tra il server e il client siano sempre sicure. È importante testare la configurazione su un ambiente di staging prima di attivarla in produzione, per assicurarsi che non ci siano problemi di compatibilità o errori di configurazione che potrebbero bloccare l’accesso al sito. Inoltre, l’opzione preload dovrebbe essere usata con cautela, poiché una volta aggiunti alla lista di preload HSTS, è difficile rimuovere il dominio, a meno di passaggi specifici e lunghi.

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.