CSP bypass: self + 'unsafe-inline' with Iframes
Una configurazione come:
Proibisce l'utilizzo di qualsiasi funzione che esegue codice trasmesso come stringa. Ad esempio: eval, setTimeout, setInterval
saranno tutti bloccati a causa dell'impostazione unsafe-eval
.
Anche i contenuti provenienti da fonti esterne vengono bloccati, inclusi immagini, CSS, WebSockets e, soprattutto, JS.
Tramite testo e immagini
Si osserva che i browser moderni convertono immagini e testi in HTML per migliorarne la visualizzazione (ad esempio, impostando sfondi, centratura, ecc.). Di conseguenza, se un'immagine o un file di testo, come favicon.ico
o robots.txt
, viene aperto tramite un iframe
, viene renderizzato come HTML. È importante notare che queste pagine spesso non hanno intestazioni CSP e potrebbero non includere X-Frame-Options, consentendo l'esecuzione di JavaScript arbitrario da esse:
Attraverso gli errori
Allo stesso modo, le risposte di errore, come i file di testo o le immagini, di solito non contengono gli header CSP e potrebbero omettere X-Frame-Options. Gli errori possono essere indotti a caricarsi all'interno di un iframe, consentendo le seguenti azioni:
Dopo aver attivato uno dei scenari menzionati, l'esecuzione di JavaScript all'interno dell'iframe è possibile come segue:
Riferimenti
Last updated