CSP bypass: self + 'unsafe-inline' with Iframes
Μια ρύθμιση όπως:
Απαγορεύει τη χρήση οποιωνδήποτε συναρτήσεων που εκτελούν κώδικα που μεταδίδεται ως συμβολοσειρά. Για παράδειγμα: eval, setTimeout, setInterval
θα αποκλειστούν λόγω της ρύθμισης unsafe-eval
Οποιοδήποτε περιεχόμενο από εξωτερικές πηγές αποκλείεται επίσης, συμπεριλαμβανομένων εικόνων, CSS, WebSockets και, ειδικότερα, JS
Μέσω Κειμένου & Εικόνων
Έχει παρατηρηθεί ότι οι σύγχρονοι περιηγητές μετατρέπουν εικόνες και κείμενα σε HTML για να βελτιώσουν την εμφάνισή τους (π.χ., ρύθμιση φόντων, κεντράρισμα κ.λπ.). Ως εκ τούτου, εάν ένα αρχείο εικόνας ή κειμένου, όπως το favicon.ico
ή το robots.txt
, ανοιχτεί μέσω ενός iframe
, αποδίδεται ως HTML. Σημαντικό είναι ότι αυτές οι σελίδες συχνά δεν έχουν επικεφαλίδες CSP και μπορεί να μην περιλαμβάνουν X-Frame-Options, επιτρέποντας την εκτέλεση αυθαίρετου JavaScript από αυτές:
Via Errors
Ομοίως, οι απαντήσεις σφάλματος, όπως αρχεία κειμένου ή εικόνες, συνήθως έρχονται χωρίς CSP headers και μπορεί να παραλείπουν τα X-Frame-Options. Τα σφάλματα μπορούν να προκαλούνται ώστε να φορτώνονται μέσα σε ένα iframe, επιτρέποντας τις εξής ενέργειες:
Μετά την ενεργοποίηση οποιουδήποτε από τα αναφερόμενα σενάρια, η εκτέλεση JavaScript μέσα στο iframe είναι εφικτή ως εξής:
Αναφορές
Last updated