Una cosa che emerge spesso nei test di penetrazione della sicurezza che tutti dobbiamo sopportare (purtroppo per una buona ragione) è la mancanza o l “incoerenza nel fornire l” intestazione HTTP X-Content-Type-Options nelle risposte del server web. Potrebbe essere una seccatura, ma più il nostro sito e i suoi visitatori sono sicuri, meglio è.
A cosa serve questa intestazione? È semplice: Chrome e Internet Explorer dispongono della cosiddetta funzione “MIME-Sniffing” che è abilitata per impostazione predefinita e rileva il tipo di contenuto presente nella risposta di un server web. Questo viene utilizzato per visualizzare meglio una pagina web, anche se il server web sbaglia qualcosa o se una pagina è scritta male e ha specificato un tipo di contenuto non corretto.
Ad esempio, un sito può inviare una risposta in cui il contenuto incluso è un testo, tramite l’intestazione Content-Type e un valore di text/plain. Il browser rileverà che si tratta di un PDF e lo visualizzerà correttamente. In caso contrario, potrebbe tentare di renderlo come testo, ottenendo una pagina maciullata o illeggibile. Per alcuni sviluppatori di browser, una bella pagina è meglio del rispetto degli standard.
Non sembra un problema? Beh, qualsiasi software che potresti utilizzare nel tuo browser per impedire il download, la visualizzazione o l’esecuzione di determinati tipi di contenuti può essere potenzialmente aggirato grazie a questa funzione. Ci sono molti motivi per cui potremmo voler bloccare gli eseguibili, i file zip, i file Word e simili. Su Windows è ancora possibile “possedere” un PC con una semplice immagine GIF.
Qualsiasi software che utilizziamo per proteggerci da tali minacce bloccando questo contenuto può solo ispezionare il valore dell’intestazione Content-Type e agire in modo appropriato in base al suo valore. Il browser che fa qualcosa di completamente diverso da quello che ci si aspetta non è utile e rappresenta un rischio.
Il bello di utilizzare un bilanciatore di carico è che dobbiamo farlo in un unico punto per poterlo distribuire a tutti i nostri server. Non dobbiamo affidarci a sviluppatori o a riconfigurazioni di Apache. Sul bilanciatore di carico edgeNEXUS dobbiamo solo importare un modello di configurazione jetPACK e assegnare una regola di traffico flightPATH al servizio virtuale che vogliamo proteggere.
La regola aggiunge l’intestazione solo se non esiste, quindi funzionerà anche se i nostri server web la inseriscono già o la inseriscono solo per pagine specifiche. Questa regola dovrebbe far parte della configurazione standard del tuo Servizio Virtuale: non hai nulla da perdere, qualunque sia il sito, anche se ovviamente è sempre consigliabile fare dei test. Puoi scaricare il jetPACK dal sito Github di edgeNEXUS qui.
Questa è una delle tante regole flightPATH che abbiamo sviluppato e che puoi implementare per migliorare la sicurezza del tuo sito e dei suoi utenti. Per saperne di più sulle intestazioni HTTP relative alla sicurezza, consulta questi articoli:
- Un “intestazione di sicurezza HTTP per combattere il ‘Clickjacking’ – Come migliorare la sicurezza del tuo sito con l” intestazione delle opzioni X-Frame
- Come proteggere il traffico HTTP e proteggere gli utenti con l’intestazione di sicurezza del trasporto HTTP Strict
Il bello di utilizzare un bilanciatore di carico è che dobbiamo farlo in un unico punto per poterlo distribuire a tutti i nostri server. Non dobbiamo affidarci a sviluppatori o a riconfigurazioni di Apache.