SSL/TLS – Skytales Blog https://skytal.es/blog Ειδήσεις, Αναλύσεις και άλλα από τον Ψηφιακό Κόσμο Tue, 15 Apr 2014 07:56:57 +0000 en-US hourly 1 https://wordpress.org/?v=6.1.1 Heartbleed https://skytal.es/blog/news/heartbleed/ https://skytal.es/blog/news/heartbleed/#comments Mon, 14 Apr 2014 17:21:45 +0000 https://skytal.es/blog/?p=594 ]]> heartbleedΣτις 7 Απρίλη 2014 ανακοινώθηκε δημόσια η ανακάλυψη μίας πολύ σοβαρής ευπάθειας στην βιβλιοθήκη λογισμικού OpenSSL. Το OpenSSL είναι μία δημοφιλής ανοιχτού κώδικα βιβλιοθήκη κρυπτογραφίας που υλοποιεί τα πρωτόκολλα SSL και TLS. Τα SSL/TLS χρησιμοποιούν κρυπτογραφία δημόσιου κλειδιού για να προστατέψουν τις διαδικτυακές επικοινωνίες προσφέροντας εμπιστευτικότητα των δεδομένων που ανταλλάσσονται και πιστοποίηση της ταυτότητας του παραλήπτη και αποστολέα. Τα χρησιμοποιούμε καθημερινά όταν επισκεπτόμαστε κάποια ιστοσελίδα (HTTPS), προστατεύουν την ανταλλαγή emails και instant messages καθώς και πολλές άλλες εφαρμογές και επικοινωνίες.

Η ευπάθεια οφείλεται σε ένα προγραμματιστικό λάθος (bug) το οποίο έγινε γνωστό ως Heartbleed (επίσημα CVE-2014-0160) και βρίσκεται στην υλοποίηση της επέκτασης Heartbeat των TLS και DTLS πρωτοκόλλων. Το Heartbleed bug επιτρέπει σε οποιονδήποτε στο διαδίκτυο να διαβάσει τα περιεχόμενα της μνήμης συστημάτων που προστατεύονται από τις προβληματικές εκδόσεις του OpenSSL. Αυτό συμπεριλαμβάνει μυστικά κλειδιά που χρησιμοποιούνται για πιστοποίηση και κρυπτογράφηση, ονόματα και κωδικούς χρηστών και κάθε είδους δεδομένα που βρίσκονται στη μνήμη. Αυτό επιτρέπει σε κάποιον να υποκλέψει επικοινωνίες, να κλέψει δεδομένα απευθείας από υπηρεσίες και να προσποιηθεί την ταυτότητα χρηστών και υπηρεσιών.

Η ευπάθεια εισήχθηκε στον κώδικα του OpenSSL στις 31 Δεκέμβρη 2011 και πέρασε σε ευρεία χρήση με την έκδοση 1.0.1 στις 14 Μαρτίου 2012. Ανακαλύφθηκε ανεξάρτητα από μηχανικό ασφαλείας της Google και τη φινλανδική Codenomicon που το δήλωσαν στο OpenSSL project στις 1 και 3 Απρίλη 2014 αντίστοιχα. Στις 7 Απρίλη βγήκε η έκδοση 1.0.1g που διορθώνει το Heartbleed bug και ανακοινώθηκε δημόσια η ύπαρξη του.

Πόσο κακό είναι:

Με τα λόγια του ειδικού στην κρυπτογραφία και την ασφάλεια Bruce Schneier:

Βασικά, ένα επιτιθέμενος μπορεί να αρπάξει 64KB μνήμης από ένα server. Η επίθεση δεν αφήνει ίχνη και μπορεί να επαναληφθεί πολλές φορές επιστρέφοντας ένα διαφορετικό τυχαίο κομμάτι 64KB μνήμης. Αυτό σημαίνει πως τα πάντα στη μνήμη — ιδιωτικά κλειδιά SSL, κλειδιά χρηστών, οτιδήποτε — είναι ευάλωτα. Και πρέπει να υποθέσουμε ότι έχουν εκτεθεί. Όλα.

“Καταστροφικό” είναι η σωστή λέξη. Σε κλίμακα από το 1 έως το 10, αυτό παίρνει 11.

[…]

Σε αυτό το σημείο, η πιθανότητα είναι κοντά στη μονάδα πως πολλαπλές υπηρεσίες πληροφοριών απέκτησαν τα ιδιωτικά κλειδιά όλων των στόχων.

Στις 7 Απρίλη όπου, μετά από 2 χρόνια ζωής, ανακοινώθηκε δημόσια το Heartbleed bug, εκτιμάται πως οι ευάλωτοι web servers ήταν γύρω στο 17% (περίπου μισό εκατομμύριο). Επιπλέον, το OpenSSL δε χρησιμοποιείται μόνο από web servers αλλά και για emails, instant messaging, κάποια VPN’s και πολλές άλλες εφαρμογές οπότε ο πραγματικός αριθμός των επηρεασμένων servers είναι ακόμα μεγαλύτερος.

Πως (δε) δουλεύει:

Το Heartbeat είναι μία επέκταση των TLS και DTLS πρωτοκόλλων που προσφέρει μία μέθοδο για να ελέγχονται και να διατηρούνται ανοιχτές συνδέσεις. Ο υπολογιστής στη μία μεριά της σύνδεσης στέλνει μία αίτηση Heartbeat που είναι απλά ένα αλφαριθμητικό (string) μαζί με το μήκος του. Ο άλλος υπολογιστής πρέπει τότε να απαντήσει με ακριβώς το ίδιο αλφαριθμητικό για να επιβεβαιωθεί πως η σύνδεση είναι ακόμα ενεργή. Το bug στις προβληματικές εκδόσεις του OpenSSL ήταν πως κατά την κατασκευή της απάντησης, δεν ελεγχόταν αν το μήκος που αναφερόταν μέσα στην Heartbeat αίτηση ταίριαζε όντως με το μήκος του αλφαριθμητικού της αίτησης. Το αποτέλεσμα είναι πως βάζοντας μία μεγαλύτερη της πραγματικής τιμή στο πεδίο του μήκους (64Κ το μέγιστο), μαζί με το αλφαριθμητικό που στείλαμε, παίρνουμε και ότι το ακολουθεί στη θέση του στη μνήμη, όπως φαίνεται στην παρακάτω εικόνα:

heartbleed_explanation

Τι μπορούμε να κάνουμε:

Διαχειριστές υπηρεσιών και servers

Κατ’αρχάς πρέπει να γίνει το security update στην OpenSSL. Τα ίδια τα κλειδιά του SSL/TLS βρίσκονται στη μνήμη και άρα ενδέχεται να έχουν διαρρεύσει, οπότε πρέπει να δημιουργηθούν νέα κλειδιά, να ανακληθούν τα υπάρχοντα πιστοποιητικά και να εκδοθούν καινούρια για τα νέα κλειδιά. Πρέπει να αλλαχθούν όλοι οι κωδικοί, API keys, tokens etc. Πρέπει να τερματίσουν όλα τα session keys και cookies για αποτροπή session hijacking. Τέλος πρέπει να γίνουν restart όλα τα processes που χρησιμοποιούν την OpenSSL (δεν είναι μόνο ο web server).

Χρήστες υπηρεσιών

Κωδικοί και αναγνωριστικά κάθε είδους ενδέχεται να έχουν διαρρεύσει. Για να προστατέψουμε τους λογαριασμούς και τα δεδομένα μας στο μέλλον, πρέπει άμεσα να αλλάξουμε κωδικούς σε όλες τις υπηρεσίες. Μπορούμε να δούμε αν οι υπηρεσίες που χρησιμοποιούμε είναι ευάλωτες στο Heartbleed bug από το https://filippo.io/Heartbleed/.

Τι δε μπορούμε να κάνουμε

Το πρόβλημα δυστυχώς δε σταματάει εκεί. Αλλάζοντας κωδικούς και κάνοντας τα update φυλασσόμαστε από μία τέτοια επίθεση στο μέλλον, αλλά αυτό δε μας προφυλάσσει αναδρομικά. Δε μπορούμε να ξέρουμε αν και τι έχει διαρρεύσει. Πρακτικά, όλες οι πληροφορίες που είχε στη διάθεση του κάποιος ευάλωτος server βρέθηκαν κάποια στιγμή στη μνήμη και άρα ενδέχεται να διέρρευσαν.

Σύμφωνα με τη σχετική ανακοίνωση του Linux Foundation:

[…] Με απλά λόγια, από τη μεριά ενός χρήστη του διαδικτύου, αυτή η ευπάθεια σημαίνει πως για τα τελευταία δύο χρόνια, κάθε ασφαλές site (με το λουκετάκι στο browser) που επισκεπτόσουν μπορεί να μην ήταν ασφαλές στην πραγματικότητα και ένας επιτιθέμενος θα μπορούσε να υποκλέπτει τους κωδικούς και τα ευαίσθητα δεδομένα σου, όπως μπορεί στην περίπτωση των “κανονικών” χωρίς SSL sites. Ή ένας επιτιθέμενος θα μπορούσε να ανακαλύψει πληροφορίες για ένα server που φιλοξενούσε κάποιο site με SSL, που στη συνέχεια θα τον βοηθούσαν να θέσει υπό τον έλεγχό του (να χακέψει) αυτό το server.

heartbleed

 

Πηγές/αναφορές:

]]>
https://skytal.es/blog/news/heartbleed/feed/ 1