in ,

Ασφαλή Cookies με HttpOnly και ασφαλή Flags


Όταν χρησιμοποιείται το πρωτόκολλο HTTP, η κυκλοφορία αποστέλλεται σε απλό κείμενο. Επιτρέπει στον εισβολέα να βλέπει / τροποποιεί την κίνηση (επίθεση man-in-the-middle).

Το HTTPS είναι μια ασφαλής έκδοση του HTTP – χρησιμοποιεί SSL / TLS για την προστασία των δεδομένων του επιπέδου εφαρμογής. Όταν χρησιμοποιείτε HTTPS, επιτυγχάνονται οι ακόλουθες ιδιότητες: έλεγχος ταυτότητας, ακεραιότητα δεδομένων και εμπιστευτικότητα.

Πώς σχετίζονται τα HTTP και HTTPS με ασφαλή Flags του cookie;

Ας εξετάσουμε την περίπτωση ενός cookie ελέγχου ταυτότητας. Όπως ειπώθηκε προηγουμένως, η κλοπή αυτού του cookie ισοδυναμεί με πλαστοπροσωπία του χρήστη. Όταν χρησιμοποιείτε HTTP, το cookie αποστέλλεται σαν απλό κείμενο. Αυτό είναι καλό για τον εισβολέα που παρακολουθεί το κανάλι επικοινωνίας μεταξύ του προγράμματος περιήγησης και του διακομιστή – μπορεί να πιάσει το cookie και να πλαστοπροσωπήσει τον χρήστη.

Ας υποθέσουμε τώρα ότι το HTTPS χρησιμοποιείται αντί του HTTP. Το HTTPS παρέχει εμπιστευτικότητα. Γι ‘αυτό ο εισβολέας δεν μπορεί να δει το cookie. Έτσι μπορείτε να στείλετε το cookie ελέγχου ταυτότητας μέσω ενός ασφαλούς καναλιού, ώστε να μην μπορεί να “πιαστεί’.

Το ερώτημα λοιπόν είναι: γιατί χρειαζόμαστε ένα ασφαλές flag εάν μπορούμε να χρησιμοποιήσουμε HTTPS;

Ας εξετάσουμε το ακόλουθο σενάριο για να απαντήσουμε σε αυτήν την ερώτηση. Ένας ιστότοπος είναι διαθέσιμος μέσω HTTP και HTTPS. Επιπλέον, ας υποθέσουμε ότι υπάρχει ένας εισβολέας στη μέση του καναλιού επικοινωνίας μεταξύ του προγράμματος περιήγησης και του διακομιστή. Δεν είναι δυνατή η παραβίαση του cookie που αποστέλλεται μέσω HTTPS.

Ωστόσο, ο εισβολέας μπορεί να εκμεταλλευτεί το γεγονός ότι ο ιστότοπος είναι επίσης διαθέσιμος μέσω HTTP. Ο εισβολέας μπορεί να στείλει το σύνδεσμο προς την έκδοση HTTP του ιστότοπου στον χρήστη. Ο χρήστης κάνει κλικ στον σύνδεσμο και δημιουργείται το αίτημα HTTP. Δεδομένου ότι η κυκλοφορία HTTP αποστέλλεται σε απλό κείμενο, ο εισβολέας παρακολουθεί το κανάλι επικοινωνίας και διαβάζει το cookie ελέγχου ταυτότητας του χρήστη.

Μπορούμε να επιτρέψουμε την αποστολή αυτού του cookie μόνο μέσω HTTPS; Εάν αυτό ήταν δυνατό, θα αποτρέψουμε τον εισβολέα να διαβάσει το cookie ελέγχου ταυτότητας στην ιστορία μας. Αποδεικνύεται ότι είναι δυνατό και ένα ασφαλές flag χρησιμοποιείται ακριβώς για αυτόν τον σκοπό – το cookie με ασφαλές flag θα σταλεί μόνο μέσω σύνδεσης HTTPS.

HttpOnly Flags

Είδαμε πώς να προστατεύσετε το cookie από έναν εισβολέα που παρακολουθεί το κανάλι επικοινωνίας μεταξύ του προγράμματος περιήγησης και του διακομιστή. Ωστόσο, η υποκλοπή δεν είναι ο μόνος τρόπος επίθεσης που αρπάζει το cookie.

Ας συνεχίσουμε την ιστορία με το cookie ελέγχου ταυτότητας και ας υποθέσουμε ότι μια ευπάθεια XSS (cross-site scripting) υπάρχει στην εφαρμογή. Στη συνέχεια, ο εισβολέας μπορεί να εκμεταλλευτεί την ευπάθεια και να κλέψει το cookie ελέγχου ταυτότητας.

Μπορούμε με κάποιο τρόπο να το αποτρέψουμε να συμβεί; 

Ένα flag HttpOnly μπορεί να χρησιμοποιηθεί για την επίλυση αυτού του προβλήματος. Όταν χρησιμοποιείται flag HttpOnly, το JavaScript δεν θα μπορεί να διαβάσει το cookie ελέγχου ταυτότητας σε περίπτωση επίθεσης XSS.

Όμως το πρόβλημα μπορεί να εξακολουθεί να υπάρχει όταν υπάρχει ευπάθεια cross-site tracing (XST) (αυτή η ευπάθεια θα εξηγηθεί στην επόμενη ενότητα του άρθρου) – ο εισβολέας μπορεί να εκμεταλλευτεί το XSS και να ενεργοποιήσει την μέθοδο TRACE για ανάγνωση του cookie ελέγχου ταυτότητας ακόμα και αν χρησιμοποιείται η HttpOnly flag.

Ας δούμε πώς λειτουργεί το XST.

XST για παράκαμψη του Flags HttpOnly

Το GET και POST είναι οι πιο συχνά χρησιμοποιούμενες μέθοδοι HTTP. Ωστόσο, δεν είναι τα μόνα. Μεταξύ άλλων είναι η μέθοδος HTTP TRACE που μπορεί να χρησιμοποιηθεί για σκοπούς εντοπισμού σφαλμάτων. Όταν το αίτημα TRACE αποστέλλεται στο διακομιστή, επαναλαμβάνεται στο πρόγραμμα περιήγησης (αν το TRACE είναι ενεργοποιημένο).

Το cookie ελέγχου ταυτότητας αποστέλλεται σε αιτήματα HTTP TRACE ακόμη και αν χρησιμοποιείται το Flag HttpOnly. Έτσι ο εισβολέας χρειάζεται έναν τρόπο να στείλει ένα αίτημα HTTP TRACE και μετά να διαβάσει την απάντηση.

Εδώ, μια ευπάθεια XSS μπορεί να είναι χρήσιμη. Ας υποθέσουμε ότι η εφαρμογή είναι ευάλωτη σε XSS. Στη συνέχεια, ο εισβολέας μπορεί να εισάγει το script που στέλνει το αίτημα TRACE. Όταν έρθει η απάντηση, το script εξάγει το cookie ελέγχου ταυτότητας και το στέλνει στον εισβολέα. Με αυτόν τον τρόπο, ο εισβολέας μπορεί να αρπάξει το cookie ελέγχου ταυτότητας ακόμα και αν χρησιμοποιείται το Flag HttpOnly. Όπως είδαμε, η μέθοδος HTTP TRACE συνδυάστηκε με XSS για να διαβάσει το cookie ελέγχου ταυτότητας, ακόμη και αν χρησιμοποιείται το Flag HttpOnly. Ο συνδυασμός της μεθόδου HTTP TRACE και XSS ονομάζεται επίθεση cross-site tracing (XST).

Tα σύγχρονα προγράμματα περιήγησης αποκλείουν τη μέθοδο HTTP TRACE στο XMLHttpRequest. Γι ‘αυτό ο εισβολέας πρέπει να βρει έναν άλλο τρόπο για να στείλει ένα αίτημα HTTP TRACE.

Κάποιος μπορεί να πει ότι το XST είναι αρκετά παλιό και δεν αξίζει να αναφερθεί. Κατά τη γνώμη μου, είναι καλό να γνωρίζουμε πώς λειτουργεί το XST. Aν ο εισβολέας βρει έναν άλλο τρόπο αποστολής HTTP TRACE, τότε μπορεί να παρακάμψει το HttpOnly Flag. Επιπλέον, η δυνατότητα / αδυναμία αποστολής αιτήματος HTTP TRACE εξαρτάται από το πρόγραμμα περιήγησης – θα ήταν καλύτερα να απενεργοποιήσετε το HTTP TRACE για να καταστήσετε το XST αδύνατο.

 


 

Εγγραφή στο Ιστολόγιο μέσω Email

Εισάγετε το email σας για εγγραφή στην υπηρεσία αποστολής ειδοποιήσεων μέσω email για νέες δημοσιεύσεις.

Διαβάστε τις Τεχνολογικές Ειδήσεις από όλο τον κόσμο, με την εγκυρότητα του iGuRu.gr

Ακολουθήσετε μας στο Google News iGuRu.gr at Google news