Η ανάγκη για ένα ασφαλές διαδίκτυο γίνεται όλο και δυνατότερη μέρα με την μέρα. Συνέχεια όμως, παρακολουθούμε καινούργιες επιθέσεις, ευπάθειες και exploits χωρίς να εστιάζουμε στα απλούστερα διαδικτυακά προβλήματα που απασχολούν τους ανθρώπους του internet, μεγάλες εταιρείες και ιδιοκτήτες κοινωνικών site, e-shop κ.α. Ένα από αυτά τα “μεγάλα” θέματα ασφάλειας φαίνεται να έχει καταπολεμηθεί κατά πολύ στα μέσα της προηγούμενης δεκαετίας
Ο λόγος βέβαια για τα γνωστά προβλήματα του SSL/TLS. ( Did you say MITM?!).
Πως, που, πότε και γιατί;
Όσο ο κόσμος του διαδικτύου – εννοώντας κοινωνικά site, e-bankings, e-shops κ.α – άρχισε να γίνεται πιο γνωστός σε ολόκληρο τον κόσμο, έγινε τροφή για σκέψη για κάποιους -κακόβουλους και μη- η ιδέα της εξαπάτησης. Φτιάχτηκαν προγράμματα και θεμελιώθηκαν τρόποι εξαπάτησης όλων αυτών των χρηστών. Καφετέριες, “ξεκλείδωτα” δίκτυα wi-fi (evil twin) και ένας απλός packet sniffer, όπως ο Wireshark, ήταν το μόνο που κάποιος κακόβουλος χρήστης χρειαζόταν για να “κλέψει” τα προσωπικά μας στοιχεία.
Τότε, η κοινότητα ασφάλειας ήταν που κατάλαβε τα πρώτα -και όχι μοναδικά- προβλήματα του HTTP! Αρκετά αργότερα, περίπου στις αρχές του 2013, ήταν όταν το HTTPS, δημοσιευμένο RFC έγγραφο από το 2000, άρχισε να χρησιμοποιείται στα πιο δημοφιλείς site. Αρκετά προβλήματα, όπως η man-in-the-middle επίθεση, είχαν ξεπεραστεί. Ή μήπως όχι?! Δεν πέρασε πολύ μέχρι την ώρα που ένα άλλο πρόβλημα πάνω στο συγκεκριμένο πρωτόκολλο ανακαλύφθηκε.
Ο επιτιθέμενος είχε την δυνατότητα να κάνει downgrade την HTTPS σύνδεση σε HTTP. Έτσι, όλα άρχισαν ξανά από το την αρχή. Σχεδόν τουλάχιστον. Η αναζήτηση για επίλυση του προβλήματος, έφερε στην επιφάνεια ένα άλλο RFC του 2012, το οποίο έδινε μία σχετικά “απλή” και έξυπνη λύση για το μεγάλο πρόβλημα του downgrade.
Αυτό το περίεργο policy ακούει στο όνομα HSTS (HTTP Strict Transport Security). Ο τρόπος που λειτουργεί είναι απλά στέλνοντας μία κεφαλίδα στο HTTPS αίτημα. Η κεφαλίδα αυτή ονομάζεται “Strict-Transport-Security” και με την παράμετρο “max-age” καθορίζει το χρονικό διάστημα για το οποίο ο επισκέπτης της σελίδας θα μπορεί να επισκεφθεί την σελίδα ΜΌΝΟ με HTTPS. Έτσι, ο browser, δεν είναι ικανός να πραγματοποιήσει άλλη σύνδεση εκτός από HTTPS, για το χρονικό διάστημα που ορίζει η “max-age” παράμετρος. Ωραίο ε?!
Επί της ουσίας…
Καταλαβαίνουμε πως το HSTS έδωσε λύση σε διάφορα σημαντικά προβλήματα του HTTPS. Κάποια από τα οποία ήταν:
Dns spoof, MiTM attacks
Ο Bob, ο επιτιθέμενος βρίσκεται σε δημόσιο ή πολυσύχναστο χώρο και περιμένει για “κινήσεις” μέσα στο δίκτυο. Η Alice, που βρίσκεται στο ίδιο δίκτυο με τον Bob, αποφασίζει να συνδεθεί στο λογαριασμό της στην Τράπεζα Χ για να στείλει κάποια χρήματα.
Ο Bob, που εδώ και ώρα περίμενε για αυτή την κίνηση, βλέποντας το HTTPS αίτημα της Alice, επικοινωνεί με την Τράπεζα Χ μέσο HTTPS αλλά ο Bob επιστρέφει το αίτημα ως HTTP. Με αυτόν τον τρόπο, ο Bob θα μπορέσει να διαβάσει τα προσωπικά στοιχεία της χωρίς καμία δυσκολία
Fake certificate attacks
Έστω, πως ο Bob καταφέρνει και μέσω MiTM επίθεσης παραπέμπει την Alice ένα πλαστό πιστοποιητικό, ελπίζοντας να το αποδεχθεί -αγνοώντας το γνωστό σε όλους προειδοποιητικό μήνυμα που μοιάζει κάπως έτσι:
Χάρη στο HSTS όμως, η Alice θα ενημερωθεί πως δέχεται ένα πλαστό πιστοποιητικό και δεν θα έχει την δυνατότητα να συνεχίσει την πλοήγησή της μέχρι να δεχθεί ένα έγκυρο πιστοποιητικό:
Οπότε, σχεδόν όλα τα προβλήματα επικοινωνίας του Web λύθηκαν. Σωστά;
Δυστυχώς όχι. Υπάρχουν πολλά σφάλματα και προβλήματα που περιμένουν λύση ακόμα. Κάποια από αυτά είναι τα παρακάτω:
Legit certificates
Το HSTS, μπορεί να μας προστατεύει από πλαστά πιστοποιητικά, αλλά δεν μας προστατεύει από έγκυρα-πλαστά πιστοποιητικά (ΝΤΟΙΝΓΚ!). Ναι και όμως, εδώ περιγράφεται η επίθεση στην εταιρεία έκδοσης πιστοποιητικών DigiNotar: http://en.wikipedia.org/wiki/DigiNotar. Η επίθεση αυτή είχε ως αποτέλεσμα οι επιτιθέμενοι να έχουν την δυνατότητα να διανέμουν έγκυρα πιστοποιητικά σε χρήστες ανά τον κόσμο με αποτέλεσμα να έχουν πρόσβαση σε όλα τα προσωπικά στοιχεία των χρηστών του Gmail κ.α! Πιθανή λύση μπορεί να αποτελεί το TACK: http://tack.io/draft.html
Browser Exploit Against SSL/TLS (BEAST)
Παρόλο που το HSTS έδωσε λύση σε πολλά bugs και προβλήματα ασφάλειας, δεν έδωσε λύση και για την -πλέον- γνωστή ευπάθεια, το BEAST, η οποία αφορά παλαιότερες εκδόσεις του SSL/TLS.
First time (Τrust On First Use issue – TOFU)
Για να περιγράψουμε καλύτερα την παρακάτω επίθεση, θα χρησιμοποιήσουμε ένα ακόμα σύντομο παράδειγμα. Έστω πως η Alice, είναι ξανά σε μία καφετέρια και αποφασίζει να ψάξει στο διαδίκτυο για γνωστά eshops ώστε να κάνει τις αγορές της. Ο Bob, για άλλη μια φορά, περιμένει την Alice να “σερφάρει” βλέποντας στον αγαπημένο του packet sniffer να “πηγαινοέρχονται” δεδομένα.
H Alice από την άλλη, βρίσκει ένα καινούργιο φανταστικό e-shop -το οποίο όλος τυχαίως έχει υποστήριξη HSTS- και συνδέεται σε αυτό για πρώτη φορά για να δει τις προσφορές του! Ο Bob όμως, είχε ήδη προνοήσει και έκανε downgrade την σύνδεση από HTTPS σε HTTP αλλά και επίσης, τροποποίησε την κεφαλίδα του HSTS και στην συνέχεια μπορούσε να προχωρήσει σε περαιτέρω επιθέσεις! Αυτό συνέβη, επειδή το HSTS είναι μια απλή κεφαλίδα που στέλνεται στο HTTPS αίτημα. Η κεφαλίδα προφανώς αγνοείται αν γίνει downgrade της σύνδεσης και τροποποιηθεί το αίτημα κατά την πρώτη φορά που ο browser μας επισκέπτεται το site!
Συνοψίζοντας για το HSTS (HTTP Strict Transport Security)
Το HSTS μπορεί να μην δίνει λύση σε όλα τα προβλήματά μας αλλά είναι, χωρίς καμία αμφιβολία, ένα τεράστιο και χρήσιμο εργαλείο που θα μπορούσε να βελτιώσει την ασφάλεια στο διαδίκτυο σε μεγάλο βαθμό. Για του λόγου το αληθές, είναι η καλύτερη λύση που είναι διαθέσιμη προς το παρόν. Εναλλακτική λύση είναι το TACK!.
