Heartbleed

Το Heartbleed είναι ένα σφάλμα λογισμικού που προκαλεί κενό ασφάλειας (security bug) στην ανοιχτού κώδικα βιβλιοθήκη κρυπτογραφίας OpenSSL, που χρησιμοποιείται ευρέως στο πρωτόκολλο ασφάλειας επιπέδου μεταφοράς του Διαδικτύου TLS (Transport Layer Security). Πρόκειται για ένα τρωτό σημείο, που οφείλεται σε απουσία ελέγχου ορίων, στην επέκταση heartbeat του πρωτοκόλλου TLS. Μία διορθωμένη έκδοση του OpenSSL, διατέθηκε στις 7 Απριλίου 2014, ημερομηνία που αποκαλύφθηκε δημοσίως το Heartbleed. Τότε, περίπου 17% (σχεδόν μισό εκατομμύριο) από τους ασφαλείς εξυπηρετητές ιστού του Διαδικτύου, που είχαν πιστοποιηθεί από έμπιστες αρχές, θεωρήθηκε ότι ήταν τρωτοί σε επίθεση, επιτρέποντας την κλοπή των ιδιωτικών κλειδιών των εξυπηρετητών, καθώς και των συνθηματικών και των cookies των συνεδριών επισκέψεων των χρηστών του Διαδικτύου.  Τόσο το Ίδρυμα Ηλεκτρονικών Συνόρων (Electronic Frontier Foundation), όσο και η Ars Technica και ο Μπρους Σνάϊερ θεώρησαν το Heartbleed καταστροφικό. Ο αρθογράφος του Φόρμπς σε θέματα κυβερνοασφάλειας Τζόζεφ Στάινμπεργκ έγραψε: "Ορισμένοι θεωρούν ότι το Heartbleed αποδεικνύεται το σοβαρότερο κενό ασφάλειας (τουλάχιστον αναφορικά με τις εν δυνάμει επιπτώσεις του) που έχει ανακαλυφθεί αφότου ξεκίνησε η εμπορική χρήση του Διαδικτύου".  
Εκπρόσωπος της κυβέρνησης του Ηνωμένου Βασιλείου πραγματοποίησε την ακόλουθη σύσταση: "Οι άνθρωποι πρέπει να ακολουθούν τη συμβουλή να αλλάζουν τα συνθηματικά σε ιστοχώρους που επισκέπτονται... Οι περισσότεροι ιστότοποι έχουν διορθώσει το σφάλμα και οι εκπρόσωποί τους είναι οι πλέον αρμόδιοι για να συμβουλέψουν τους χρήστες". Την ημέρα της αποκάλυψης του σφάλματος, το Tor Project συμβούλεψε οποιονδήποτε αναζητά "ισχυρή ανωνυμία ή ασφάλεια στο Διαδίκτυο να το αποφύγει εντελώς για τις επόμενες ημέρες μέχρι να καταλαγιάσουν τα πράγματα." 
To Heartbleed έχει καταχωρηθεί στο Σύστημα Κοινών Αδυναμιών (Common Vulnerabilities and Exposures) ως CVE-2014-0160. Το ομοσπονδιακό Καναδικό Κέντρο Αντιμετώπισης Κυβερνοσυμβάντων εξέδωσε ανακοινωθέν προς διαχειριστές ασφαλείας σχετικά με το σφάλμα.

Εμφάνιση

Η επέκταση Heartbeat για τα πρωτόκολλα TLS (Transport Layer Security) και DTLS (Datagram Transport Layer Security) είναι προτεινόμενο πρότυπο RFC 6520, που δημοσιεύθηκε το Φεβρουάριο του 2012. Παρέχει έναν τρόπο για να ελέγχει και να διατηρεί ασφαλείς επικοινωνιακούς διαύλους, χωρίς να χρειάζεται επαναδιαπραγμάτευση της σύνδεσης.
To 2011, o Ρόμπεν Ζέγγελμαν (Robin Seggelmann), τότε υποψήφιος διδάκτορας στο Πανεπιστήμιο του Ντούισμπουργκ - Έσσης (Duisburg-Essen), υλοποίησε την επέκταση Heartbeat για το OpenSSL. Ο Στέφεν Ν. Χένσον, ένας από τους τέσσερις βασικούς προγραμματιστές του OpenSSL, επιθεώρησε την επέκταση και κατά τα φαινόμενα δεν πρόσεξε το σφάλμα στην υλοποίηση του Ζέγγελμαν και έτσι εισήγαγε τον προβληματικό προγραμματιστικό κώδικα στο αποθετήριο του πηγαίου κώδικα του OpenSSL στις 31 Δεκεμβρίου 2011. Ο τρωτός κώδικας τέθηκε σε ευρεία χρήση με τη διανομή της έκδοσης 1.0.1 του OpenSSL στις 14 Μαρτίου 2012. Επιπλέον το χαρακτηριστικό Heartbeat ενεργοποιήθηκε εξ' ορισμού, με αποτέλεσμα οι επηρεαζόμενες εκδόσεις να είναι εξ' ορισμού τρωτές στο κενό ασφάλειας.

Ανακάλυψη

Σύμφωνα με τον Μάρκ Τζ. Κόξ του OpenSSL, ο Νήλ Μεχτα (Neel Mehta) από την ομάδα ασφαλείας της Google ανέφερε το Heartbleed στις 1 Απριλίου 2014. Το κενό ασφάλειας επέτρεπε ένα σφάλμα διαχείρισης μνήμης βαρύνουσας σημασίας στην υλοποίηση της επέκτασης Heartbeat του TLS. Το ελάττωμα επιτρέπει να αποκαλυφθούν 64 kilobytes από τη μνήμη της εφαρμογής, με κάθε απόπειρα επαναδιαπραγμάτευσης της συνεδρίας του συνδεδεμένου χρήστη (heartbeat).  
Το όνομα που δόθηκε στο σφάλμα, επινοήθηκε από ένα μηχανικό της φίρμας Codenomicon, μιας Φινλανδικής εταιρείας κυβερνοασφάλειας, που δημιούργησε και το λογότυπο αλλά και το δικτυακό ιστότοπο heartbleed.com για να εξηγήσει το σφάλμα δημοσίως. Σύμφωνα με την Codenomicon, ο Νηλ Μεχτα ήταν ο πρώτος που ανέφερε το σφάλμα στο OpenSSL, αλλά τόσο η Google όσο και η Codenomicon, το ανακάλυψαν ανεξαρτήτως της αναφοράς του. H Codenomicon αναφέρει την 3η του Απρίλη ως την ημερομηνία ανακάλυψης του κενού ασφαλείας αλλά και ως ημερομηνία αναφοράς στην NCSC-FI (παλαιότερα γνωστή ως CERT-FI), προκειμένου να συντονιστεί η αντιμετώπιση του ζητήματος.  Ο Μεχτα επίσης συνεχάρη την Codenomicon, χωρίς να υπεισέλθη σε περισσότερες λεπτομέρειες.  
Η εφημερίδα Sydney Morning Herald δημοσίευσε ένα χρονοδιάγραμμα της ανακάλυψης στις 15 Απριλίου 2014, που εμφανίζει ορισμένους οργανισμούς να διορθώνουν το κενό ασφάλειας πριν τη δημόσια αποκάλυψή του. Σε ορισμένες περιπτώσεις δεν είναι ξεκάθαρο πως το είχαν ανακαλύψει.

Επίλυση

Στις 21 Μαρτίου 2014 ο Μπόντο Μέλλερ (Bodo Moeller) και ο Άνταμ Λάνγκλεϊ (Adam Langley) της Google έγραψαν μία λύση που επιλύει το σφάλμα. Η ημερομηνία επίλυσης είναι γνωστή από τον αρχειοθέτη της Red Hat. Η επόμενη ημερομηνία που είναι γνωστή στο κοινό, αφορά στον ισχυρισμό της εταιρείας ασφάλειας και επιδόσεων CloudFlare ότι κατάφεραν να επιδιορθώσουν το σφάλμα στα συστήματά τους στις 31 Μαρτίου 2014. Ο Στέφεν Ν. Χένσον εφάρμοσε την επίλυση στο σύστημα ελέγχου εκδόσεων του OpenSSL στις 7 Απριλίου. Η πρώτη διορθωμένη έκδοση, 1.0.1g, δόθηκε στο κοινό την ίδια μέρα.

Ανανέωση και ανάκληση πιστοποιητικών ασφαλείας

Σύμφωνα με τη Netcraft σχεδόν 30.000 από τα άνω των 500.000 πιστοποιητικών X.509 που ήταν ευάλωτα στο κενό ασφαλείας Heartbleed επανεκδόθηκαν ως τις 11 Απριλίου 2014 αν και πολύ λιγότερα ήταν όσα ανακλήθηκαν.
Ως τις 9 Μαϊου 2014, μόνο το 43% των ευπαθών ιστοσελίδων είχαν επανεκδόσει τα πιστοποιητικά ασφαλείας τους. Επιπρόσθετα, το 7% των επανεκδοθέντων πιστοποιητικών χρησιμοποιούσε δυνητικά κλεμμένα κλειδιά. «Χρησιμοποιώντας το ίδιο ιδιωτικό κλειδί, ένας ιστοχώρος που ήταν τρωτός στο Heartbleed εξακολουθεί να αντιμετωπίζει ακριβώς την ίδια απειλή, με όσους δεν είχαν αντικαταστήσει τα πιστοποιητικά SSL», δήλωσε η Netcraft. Σύμφωνα με την eWeek, το Heartbleed «πιθανόν να παραμείνει υπαρκτή απειλή για μήνες, αν όχι για χρόνια».

Εκμετάλλευση

Η Καναδέζικη εφορία ανέφερε την κλοπή αριθμών κοινωνικής ασφάλισης που ανήκαν σε 900 φορολογούμενους και δήλωσε ότι υπεκλάπησαν χρησιμοποιώντας αυτό το κενό ασφάλειας μέσα σε μία περίοδο 6 ωρών στις 8 Απριλίου 2014.  Η Υπηρεσία Εισοδήματος του Καναδά τελικώς παρείχε δωρεάν υπηρεσίες προστασίας του ηλεκτρονικού χαρτοφυλακίου τους στους παθόντες. Στις 16 Απριλίου η Καναδέζικη Αστυνομία (RCMP) ανακοίνωσε ότι απήγγειλαν κατηγορίες σε έναν φοιτητή σχτικά με την υποκλοπή, για «μη εξουσιοδοτημένη χρήση υπολογιστή» και «κακόβουλη χρήση δεδομένων».
Σε ένα άλλο συμβάν, ο Βρεττανικός ιστοχώρος Mumsnet, που παρέχει συμβουλές σε γονείς, υπέστη υποκλοπή αρκετών λογαριασμών χρηστών του, όπως και πλαστή μίμηση του διευθυντή του. Ο ιστοχώρος δημοσίευσε περιγραφή του συμβάντος.
Ερευνητές κατά των κακόβουλων λογισμικών κατόρθωσαν να εκμεταλλευτούν το κενό ασφαλείας Hearbleed, για να αποκτήσουν πρόσβαση σε μυστικούς χώρους συζήτησης (fora) που χρησιμοποιούνται από κυβερνοεγκληματίες.
Στις 12 Απριλίου 2014, τουλάχιστον δύο ανεξάρτητοι ερευνητές κατάφεραν να υποκλέψουν ιδιωτικά κλειδιά από έναν πειραματικό εξυπηρετητή,  χρησιμοποιώντας αυτό το κενό ασφαλείας. O εξυπηρετητής είχε εγκατασταθεί για αυτό το σκοπό από την Cloud Flare.
Στις 8 Απριλίου 2014, ένας καθηγητής του πανεπιστημίου του Μίσιγκαν, ανέφερε ότι πραγματοποιήθηκε επίθεση εναντίον ενός εξυπηρετητή του πανεπιστημίου, που προσπαθούσε να εκμεταλλευτεί το κενό ασφάλειας Hearbleed, μέσω ενός υπολογιστή στην Κίνα, που είχε χρησιμοποιηθεί και στο παρελθόν για κακόβουλες ενέργειες. Στην πραγματικότητα ο εξυπηρετητής λειτουργούσε ως δόλωμα, όντας εκτεθειμένος επίτηδες, προκειμένου να προσελκύσει επιθέσεις, που αργότερα θα μπορούσαν να αποτελέσουν αντικείμενο έρευνας.

Πιθανή γνώση και εκμετάλλευση πριν την αποκάλυψη

Πολλοί σημαντικοί ιστοχώροι επιδιόρθωσαν και αντιμετώπισαν το κενό ασφαλείας μέσα σε λίγες ημέρες από την ανακοίνωσή του , αλλά δεν είναι ξεκάθαρο αν ήταν νωρίτερα γνωστό σε δυνητικούς χάκερ και αν και σε ποιο βαθμό χρησιμοποιήθηκε αυτή η αδυναμία.
Βάσει εξέτασης μητρώων ελέγχου από ερευνητές, αναφέρθηκε ότι ορισμένοι χάκερ μπορεί να είχαν εκμεταλλευτεί το κενό ασφαλείας για τουλάχιστον πέντε μήνες πριν την αποκάλυψή του.
Η Errata Security παρατήρησε ότι το "Masscan", ένα κακόβουλο λογισμικό σε ευρεία χρήση, εμφανίσθηκε 6 μήνες πριν την αποκάλυψη του Heartbleed. Διακόπτει την ασφαλή σύνδεση εν μέσω της αποστολής δεδομένων, σε αναλογία με τα λογισμικά που ερευνούν σαρώνοντας για το Heartbleed, δημιουργώντας τα ίδια μητρώα. «Δύο νέα λογισμικά που παράγουν τα ίδια μητρώα σφαλμάτων, μπορεί να φαίνεται ότι συσχετίζονται, ενώ στην πραγματικότητα αυτό δε συμβαίνει».

Συμπεριφορά

Η επέκταση RFC 6520 (Heartbeat) ελέγχει τις ασφαλείς τηλεπικοινωνιακές ζεύξεις βάσει πρωτοκόλλων TLS/DTLS επιτρέποντας στον υπολογιστή στη μία άκρη της σύνδεσης να αποστείλει ένα «Αίτημα Heartbeat», που περιέχει το φορτίο, τυπικά μία συμβολοσειρά, μαζί με το μήκος της, εκφρασμένου ως ενός ακεραίου 16 ψηφίων. Ο άλλος υπολογιστής, πρέπει να αποστείλει πίσω στον αποστολέα το ίδιο ακριβώς μήνυμα.
Οι επηρεαζόμενες εκδόσεις του OpenSSL δεσμεύουν μία προσωρινή περιοχή στη μνήμη για το επιστρεφόμενο μήνυμα βάσει του πεδίου που ορίζει το μήκος στο μήνυμα αίτησης, χωρίς να ελέγχουν το πραγματικό μέγεθος του μηνύματος. Εξαιτίας αυτής της αποτυχίας ελέγχου ορίων, το επιστρεφόμενο μήνυμα περιέχει το αρχικό μήνυμα, που δυνητικά ακολουθείται από οτιδήποτε άλλο παρείσφρησε στη δεσμευμένη περιοχή μνήμης.
Μπορεί κάποιος να εκμεταλλευτεί το Heartbleed στέλνοντας ένα κλεψίτυπο αίτημα Heartbeat. Προϋπόθεση να έχει μικρό όγκο με πεδίο μήκους με μεγάλη δηλωμένη ψευδή τιμή. Έτσι, ο στόχος (συνήθως εξυπηρετητής) αποστέλει αίτημα απάντησης, επιτρέποντας στον επιτιθέμενο να διαβάσει ως και 64 kilobytes μνήμης από τον υπολογιστή - θύμα, που πιθανόν να περιέχουν χρήσιμες πρόσφατες πληροφορίες σύνδεσης μέσω OpenSSL.
Έτσι για παράδειγμα, εάν ένα αίτημα Heartbeat ζητά από έναν υπολογιστή να στείλει τη λέξη «πουλί», μήκους 5 χαρακτήρων, θα λάβει ως απάντηση ένα μήνυμα με το περιεχόμενο «πουλί». Αντίθετα, αν ένα πλαστό αίτημα Heartbleed αιτείται τη λέξη «πουλί», που δηλώνεται ως έχουσα μήκος 500 χαρακτήρων, ο υπολογιστής - θύμα θα επιστρέψει τη λέξη «πουλί», ακολουθούμενη από οποιουσδήποτε 495 χαρακτήρες τυχαίνει να βρίσκονται στη μνήμη του υπολογιστή. Έτσι, οι επιτιθέμενοι θα μπορούσαν να υποκλέψουν ευαίσθητα δεδομένα, υπονομεύοντας την εμπιστευτικότητα των επικοινωνιών του θύματος. Αν και ο επιτιθέμενος έχει μερικό έλεγχο στο μέγεθος του αποκαλυφθέντος τμήματος μνήμης, δεν μπορεί να επιλέξει τμήμα μνήμης, οπότε και δεν μπορεί να επιλέξει το περιεχόμενο των δεδομένων που θα του αποκαλυφθούν. Συνήθως το OpenSSL αποκρίνεται με εκείνα τα δεδομένα που βρίσκονται στα πιο πρόσφατα αποδεσμευμένα τμήματα μνήμης.

Ευπαθείς εγκαταστάσεις OpenSSL

Οι ευπαθείς εκδόσεις είναι από την 1.0.1 μέχρι και την 1.0.1f. Ύστερες εκδόσεις (1.0.1g και μετά) και προηγούμενες εκδόσεις (1.0.0 και παλαιότερες) δεν είναι τρωτές σε αυτό το κενό ασφάλειας.

Επίλυση

Το πρόβλημα επιλύθηκε απορρίπτοντας τα αιτήματα Heartbeat που ζητούν περισσότερα δεδομένα από ότι απαιτεί το μήκος τους. Η έκδοση 1.0.1g του OpenSSL έχει προσθέσει μερικούς ελέγχους ορίων για να αποτρέψει υπερχείλιση της προσωρινής περιοχής μνήμης.
Το σύστημα ελέγχου εκδόσεων περιέχει μία ενδελεχή λίστα αλλαγών.

Αντίκτυπος

Τα υποκλεμμένα δεδομένα μιας επίθεσης Heartbleed μπορεί να περιλαμβάνουν συναλλαγές μεταξύ συνδιαλλεγόμενων σε επίπεδο TLS, συμπεριλαμβονομένων δεδομένων απαιτήσεων χρηστών που αποστέλλονται μέσω φορμών με τη μέθοδο POST. Επιπρόσθετα τα εκτεθειμένα εμπιστευτικά δεδομένα μπορεί να συμπεριλαμβάνουν μυστικά αυθεντικοποίησης όπως συνθηματικά και cookies συνεδριών, που μπορεί να δώσουν σε επιτιθέμενους τη δυνατότητα να υποδυθούν το χρήστη μιας υπηρεσίας.
Μία έρευνα που διενεργήθηκε επί ενήλικων Αμερικανών τον Απρίλιο του 2014 έδειξε ότι το 60% είχε ακούσει για το Heartbleed. Ανάμεσα σε όσους ήταν χρήστες του Διαδικτύου, το 39% είχε προστατέψει τους διαδικτυακούς λογαριασμούς του, αλλάζοντας το συνθηματικό τους ή ακυρώνοντας το λογαριασμό τους. Το 29% πίστευαν ότι κινδύνευαν προσωπικές τους πληροφορίες λόγω του κενού ασφαλείας. Το 6% πίστευε ότι οι προσωπικές τους πληροφορίες είχαν υποκλαπεί.

Τρωτότητα από την πλευρά του τελικού χρήστη - πελάτη

Αν και το κενό ασφαλείας έλαβε περισσότερη έκταση στη δημοσιότητα λόγω του κινδύνου που αντιπροσωπεύει προς τους εξυπηρετητές, τελικοί χρήστες του TLS  που χρησιμοποιούσαν τα επίμαχα στιγμιότυπα του OpenSSL ήταν εξίσου τρωτοί.