Quali sono i limiti della politica di sicurezza dei contenuti?

5

Mi chiedo in che modo questa nuova non protezione ci protegga.

Come vedo, poiché gli script inline sono disabilitati (e presumo che includa i link javascript: ), risolvono il problema del furto nascosto di dati sensibili tramite JavaScript eseguito automaticamente.

Tuttavia, sarebbe ancora possibile modificare i dati sullo schermo in modi imprevisti e creare una truffa di Phishing convincente fornendo un collegamento a un altro sito Web.

Questo è accurato o anche i link esterni sono proibibili?

Potrebbero esserci modi complicati per acquisire dati sensibili in una chiamata di risorse esterne, poiché non conosco l'ambito di CSP.

Qual è lo scopo di un potenziale attacco XSS con la presenza di un CSP stretto?

Modifica: ipotesi aggiornate ai fini di questo post:

  • Gli utenti hanno un browser compatibile con CSP 2
  • In linea style= è ancora consentito dalla politica. %codice%
  • consentiremo il caricamento delle risorse solo dai domini che controlliamo. (nessuna immagine esterna)
  • Gestiamo la nostra CDN, in modo che il dominio non contenga contenuti di terze parti e soddisfi gli stessi standard di sicurezza del dominio principale.
posta George Bailey 27.07.2016 - 14:27
fonte

3 risposte

6

However, it would still be possible to alter the data on the screen in unexpected ways, and possible to create a convincing Phishing scam by providing a link out to another website.

Is this accurate, or are out-links prohibitable also?

Sì, è corretto con un avvertimento: le persone sul tuo sito eseguono browser moderni. Per questo motivo esatto, il mio team considera XSS senza un'iniezione del contenuto reale (ad esempio l'inserimento in un contesto di attributo tag non quotato) come priorità inferiore rispetto a un bug di injection content stesso a causa di CSP. Abbiamo la fortuna di non avere praticamente utenti sui browser che non supportano alcuna forma di strong CSP .

What is the scope of a would-be XSS attack with the presence of a tight CSP?

Perdonami qui se questo sembra soapbox, ma la tua domanda non definisce "CSP stretto", quindi lascia che elabori alcune cose che molti trascurano.

Per ragioni, diciamo che questo è un criterio che viene proposto (interruzioni di linea aggiunte per chiarezza, questa non è un'intestazione valida):

Content-Security-Policy: default-src 'self'; img-src https: data:; connect-src paypal.com api.example.com; script-src 'self' ajax.googleapis.com; style-src 'self' 'unsafe-inline'

Nota : rimuovere unsafe-inline da style-src non è pratico oggi.

Questa è una politica piuttosto buona con alcuni difetti evidenti e non così ovvi, ma non è consentito lo script inline. Ci sono molti altri accorgimenti da considerare con CSP, non si tratta solo di disabilitare eval e script inline (yes javascript: e on* gestori di eventi sono inclusi).

Blocco di terze parti per limitare effettivamente XSS

Esistono ancora molti altri vettori

Il viaggio CSP di GitHub contiene molti punti su come la politica è stata regolata per prevenire determinati attacchi.

È possibile abusare del tutto di seguito con la politica proposta.

  • Rimozione di 'self' da script-src per impedire XSS tramite JSONP
  • Esaminare i token CSRF tramite i tag img e form
  • Spostare file flash ospitati su un'origine diversa anziché 'self' perché il flash rovina tutto.
  • Utilizzo di criteri dinamici per impedire l'uso inaspettato di API che devono essere utilizzate solo da un insieme specifico di pagine.
  • Limitazione dell'uso di 'self' per frame-src / child-src
  • Abuso del tag base .

A volte, CSP non è applicabile.

È possibile aggirare completamente il CSP. Vedi Scorrimento del tipo di contenuto PDF per un esempio in cui i dati controllati dall'utente su una pagina possono davvero rovinare tutto.

Non c'è letteralmente nulla che possiamo fare a riguardo dal punto di vista di CSP.

E a volte Internet ti fa piangere

Vedi Rubare la torta senza toccare il davanzale dove i CSS possono essere usati per rubare e esfiltrare i dati su una pagina senza javascript.

Poiché la rimozione di 'unsafe-inline' non è pratica, questo attacco è possibile. Tuttavia, questo attacco è difficile da eseguire.

    
risposta data 27.07.2016 - 21:31
fonte
1

Dobbiamo considerare esattamente quale sia una politica rigorosa. Ho identificato tre livelli:

Livello 1 - Stop XSS

A questo livello, una politica ristretta bloccherà tutto l'XSS. Se il sito presenta difetti XSS, questi non saranno sfruttabili (supponendo che il browser dell'utente supporti CSP).

Un utente malintenzionato XSS può ancora fare riferimento a risorse sul proprio server, creando un beacon web . Possono vedere gli indirizzi IP degli utenti e consegnare contenuti dannosi (ad esempio sfruttando i bug di rendering delle immagini). Possono anche reindirizzare i moduli, creando potenzialmente un modulo di phishing estremamente realistico.

Livello 2 - Stop beacon

A questo livello, tutte le risorse incorporate possono essere caricate solo da fonti attendibili, quindi i web beacon non sono possibili. Anche le azioni form sono limitate, quindi il reindirizzamento diretto alla forma non è possibile.

Un utente malintenzionato XSS può ancora modificare il contenuto e il layout della pagina. Ciò include l'incorporamento di collegamenti dannosi. Non sono convinto che questo sia un grande rischio di phishing: gli utenti esperti controlleranno la barra degli indirizzi prima di inserire le credenziali e gli utenti non esperti cadrà per trucchi molto più semplici.

Livello 3 - Interrompi CSS in linea

Riduce la capacità di un utente malintenzionato di modificare il layout della pagina, sebbene possa controllare il contenuto e inserire i collegamenti.

Auditor CSP

Ho creato lo strumento Auditor CSP per aiutare a valutare le politiche. Valuta solo se le polizze soddisfano il livello 1. Si scopre che la maggior parte dei principali siti con CSP ha una politica che non raggiunge il livello 1. I livelli 2 e 3 saranno ancora più difficili da raggiungere, quindi non sto mettendo controlli nel revisore dei conti (almeno per ora).

    
risposta data 27.07.2016 - 22:24
fonte
0

CSP ti protegge da molti attacchi basati su script. La tua convinzione che "risolva il problema del furto nascosto di dati sensibili" non è accurata. Può risolvere il problema della minaccia nascosta tramite script in quella pagina, ma, ad esempio, non risolve problemi di tabulazione incrociata o manipolazione proxy.

Più in generale, non esiste un elenco completo di attacchi, quindi tentando di enumerare "Mi chiedo in che cosa questa nuova tecnica non ci protegga" è un insieme infinito.

    
risposta data 27.07.2016 - 22:35
fonte

Leggi altre domande sui tag