Hybrid Taint Analysis for Vulnerability Detection of XSS & SQL Injection in Django

Πτυχιακή Εργασία uoadl:2933192 245 Αναγνώσεις

Μονάδα:
Τμήμα Πληροφορικής & Τηλεπικοινωνιών
Πληροφορική
Ημερομηνία κατάθεσης:
2021-01-26
Έτος εκπόνησης:
2021
Συγγραφέας:
Κουρσιούνης Γεώργιος
Στοιχεία επιβλεπόντων καθηγητών:
Αλέξιος Δελής, Καθηγητής, Τμήμα Πληροφορικής και Τηλεπικοινωνιών, ΕΚΠΑ
Πρωτότυπος Τίτλος:
Hybrid Taint Analysis for Vulnerability Detection of XSS & SQL Injection in Django
Γλώσσες εργασίας:
Αγγλικά
Μεταφρασμένος τίτλος:
Υβριδική Aνάλυση για Ανίχνευση XSS & SQL Injection στο Django
Περίληψη:
Στην παρούσα πτυχιακή εργασία υλοποιούμε έναν επόπτη εκτέλεσης (execution monitor) που συνδυάζει Υβριδική Ανάλυση και Συντακτική Ανάλυση πλευράς Διακομιστή προκειμένου να ανακαλύψουμε ευπάθειες XSS σε template rendering, ευπάθειες XSS σε απλές
αποκρίσεις HTTP και πιθανά SQL injections σε ακατέργαστα ερωτήματα SQL σε διαδικτυακές εφαρμογές Django.

Παρατηρείται ότι πολλές βιομηχανικές λύσεις εφαρμόζουν αυτο-απολύμανση χωρίς ευαισθησία περιβάλλοντος (context-insensitive auto-sanitization) ως κύρια στρατηγική άμυνας. Ωστόσο, αυτό παρέχει μια λανθασμένη αίσθηση ασφάλειας, καθώς τα μη αξιόπιστα δεδομένα πρέπει να απολυμανθούν διαφορετικά με βάση το περιβάλλον τους (browser context). Επομένως, η αναγκαιότητα ελέγχου context-sensitive ευπαθειών είναι έκδηλη. Επιπλέον, πρέπει να δοθεί μέριμνα τόσο σε απλές αποκρίσεις HTTP καθώς δεν υπάρχει αντίστοιχη πολιτική auto-sanitization όσο και σε ακατέργαστα επερωτήματα SQL (raw SQL queries) που χρησιμοποιούνται όταν το Django ORM αποδεικνύεται ανεπαρκές.

Παρέχουμε ένα εργαλείο ανάλυσης μέσω μιας βιβλιοθήκης εξ ολοκλήρου γραμμένης σε Python με βάση την προσέγγιση των Conti & Russo [2], αργότερα υιοθετηθείσα από τους Steinhauser & Tůma [1]. Δεν απαιτούνται τροποποιήσεις στον διερμηνέα. Επιστρατεύουμε Python decorators προκειμένου να ανακοπούν οι πηγές εισαγωγής ευαίσθητων δεδομένων (taint sources), οι καταβόθρες που καταλήγουν τα δεδομένα (taint sinks), οι απολυμαντές (sanitizers) και οι συντακτικοί αναλυτές (parsers) κατά την εκτέλεση της εφαρμόγης. Ένας decorator είναι μια μορφή μετα-προγραμματισμού που επιστρέπει στον προγραμματιστή να επεκτείνει τη λειτουργικότητα υπάρχοντος κώδικα κατά τον χρόνο εκτέλεσης.

Χρησιμοποιώντας δυναμική ανάλυση εποπτεύουμε τη ροή πληροφοριών κατά το χρόνο εκτέλεσης και καταγράφουμε όλους τους εφαρμοσθέντες απολυμαντές. Μια ευπάθεια αναφέρεται αμέσως αν τα μολυσμένα δεδομένα έχουν φθάσει σε μια απλή απόκριση HTTP ή σε ένα raw SQL query. Ωστόσο, αν μολυσμένα δεδομένα έχουν φτάσει σε ένα Django template καλούμε τον συνακτικό αναλυτή πλευράς διακομιστή. Αναλυτικότερα, καλούμε τις λειτουργικές μονάδες Model Browser & Sanitization Verifier, προσδιορίζουμε το browser context των μολυσμένων μεταβλητών και επαληθεύουμε τα αποτελέσματα.

Στην προσπάθεια μας ανακαλύψαμε ένα ζήτημα στην προσέγγιση των Conti & Russo. Σε ορισμένες περιπτώσεις, η προσημείωση μολυσματικότητας των δεδομένων (taintedeness) μπορεί να ανακληθεί καθώς οι μολυσμένες πληροφορίες ρέουν από μια πηγή προς μια καταβόθρα. Ως αποτέλεσμα, δεδομένα χαρακτηρισμένα ως μη μολυσμένα θα φτάσουν στο καταβόθρα και δεν θα αναφερθεί καμία ευπάθεια παρόλο που μπορεί να υπάρχει.

Για την αντιμετώπιση του προβλήματος, εισάγουμε μια νέα προσαρμοσμένη έκδοση στατικής ανάλυσης που δημιουργεί ένα Abstract Syntax Tree (AST) ενός αρχείου κώδικα και το αναλύει γραμμή γραμμή. Σύμφωνα με το θεώρημα του Rice, η στατική ανάλυση είναι μη επιλύσιμη οπότε συμβιβαζόμαστε μεταξύ ακρίβειας και μη επιλυσιμότητας και χρησιμοποιούμε επιλύσιμες κατά προσέγγιση απαντήσεις.

Τελικώς, αναπόφευκτα η στατική ανάλυση τείνει εγγενώς να παρουσιάζει κάποια ψευδώς θετικά αποτελέσματα. Εντούτοις, βασιζόμενοι στα τεστ και τα σενάριο που διεξήγαμε, υποστηρίζουμε ότι το εργαλείο μας αναφέρει επιτυχώς την πλειόνοτητα των ευπαθειών.
Κύρια θεματική κατηγορία:
Τεχνολογία – Πληροφορική
Λέξεις-κλειδιά:
ασφάλεια, cross-site scripting (xss), sql injection, δυναμική ανάλυση, στατική ανάλυση
Ευρετήριο:
Ναι
Αρ. σελίδων ευρετηρίου:
5
Εικονογραφημένη:
Ναι
Αρ. βιβλιογραφικών αναφορών:
35
Αριθμός σελίδων:
47
BscThesis_Koursiounis_Georgios_v2_final.pdf (2 MB) Άνοιγμα σε νέο παράθυρο