Την 1η Απριλίου 2014 συνέβη κάτι που δεν ήταν φάρσα. Ερευνητές ηλεκτρονικής ασφάλειας ανακάλυψαν ένα σοβαρό bug στο σύστημα κρυπτογράφησης που χρησιμοποιείται στα 2/3 ολόκληρου του Internet. Στο άρθρο αυτό θα εξηγήσουμε, απλά και κατανοητά, τι ακριβώς είναι το heartbleed bug και τι πρέπει να κάνουμε για αυτό.
Προτάσεις συνεργασίας
Τα νέα άρθρα του PCsteps
Γίνε VIP μέλος στο PCSteps
Προσοχή! Πριν συνεχίσετε με το άρθρο, μπείτε εδώ και τώρα σε αυτή την σελίδα. Θα βρείτε μια λίστα με γνωστές ιστοσελίδες.
Σε όλες τις σελίδες που έχουν πράσινο τσεκ, όπως οι παρακάτω, και στις οποίες έχετε λογαριασμό, κάντε log-in αυτή τη στιγμή και αλλάξτε το password σας.
To heartbleed bug είναι ίσως το χειρότερο κενό ασφαλείας στην ιστορία του Internet. Λόγω αυτού, υπάρχει περίπτωση κάποιοι να έχουν ήδη πρόσβαση στους κωδικούς μας!
Για να βοηθηθείτε με τη δημιουργία και διαχείριση password, δείτε το άρθρο:
Ισχυρά Password σε Κάθε Λογαριασμό με το LastPass.
Κρυπτογράφηση δεδομένων και OpenSSL
Όσοι έχετε διαβάσει το άρθρο μας για την κρυπτογράφηση δεδομένων γνωρίζετε ήδη για το Transport Layer Security (TLS), το κύριο πρωτόκολλο κρυπτογράφησης που χρησιμοποιείται στο Internet.
Με απλά λόγια, το TLS και ο προκάτοχός του, SSL (Secure Socket Layer), είναι ο λόγος που μπορούμε να χρησιμοποιήσουμε password οπουδήποτε στο Internet.
Χωρίς αυτή την κρυπτογράφηση, όποτε γράφαμε τον κωδικό για να μπούμε στο λογαριασμό του email, του facebook ή οποιονδήποτε άλλο, θα ήταν πολύ απλό για κάποιον τρίτο να διαβάσει τον κωδικό κατά τη μεταφορά του στο Internet.
Εξίσου απλό θα ήταν σε μια τρίτη σελίδα να παριστάνει πως είναι το Facebook, το Gmail, το Yahoo, με στόχο να κλέψει τον κωδικό μας.
Όταν μπαίνουμε σε οποιαδήποτε από τις παραπάνω σελίδες, παρατηρούμε πως ξεκινούν με https:// και έχουν ένα λουκέτο.
Αυτή είναι η πιστοποίηση πως η σελίδα είναι ασφαλής και πως είναι αυτή που λέει πως είναι, άρα μπορούμε να βάλουμε τον κωδικό μας.
Τι είναι το OpenSSL
To OpenSSL είναι ουσιαστικά μια υλοποίηση ανοιχτού κώδικα του πρωτοκόλλου TLS/SSL, και είναι διαθέσιμο δωρεάν.
Το OpenSSL είναι η κατεξοχήν επιλογή στους Web Servers ανοιχτού κώδικα, όπως ο Apache και ο nginx, που χρησιμοποιούνται στο 66% των server στο Internet.
Σε αυτόν τον κώδικα του OpenSSL, υπάρχει το κενό ασφαλείας που ονομάστηκε heartbleed bug. Μάλιστα, υπάρχει από το Δεκέμβριο του 2011, και ανακαλύφθηκε μόλις την 1η Απριλίου 2014.
Το heartbleed δεν είναι κάποιο πρόβλημα του πρωτοκόλλου TLS/SSL, των αλγορίθμων κρυπτογράφησης που εφαρμόζονται, ούτε καν της θεωρητικής λειτουργίας του OpenSSL.
Το heartbleed bug, πολύ απλά, είναι ένα ανόητο προγραμματιστικό λάθος.
Από το Heartbeat στο Heartbleed
Όταν ένας server και ο υπολογιστής μας είναι έτοιμοι να δημιουργήσουν μια ασφαλή σύνδεση μεταξύ τους, εφαρμόζουν μια διαδικασία που ονομάζεται heartbeat (κυριολεκτικά: χτύπος καρδιάς).
Ουσιαστικά οι δύο υπολογιστές ανταλλάσσουν μεταξύ τους κάποια συγκεκριμένα δεδομένα, για να δείξουν ο ένας στον άλλο πως εξακολουθούν να είναι σε λειτουργία και με πρόσβαση στο δίκτυο (“ζωντανοί”).
Αν συμβεί οτιδήποτε στον ένα από τους δύο υπολογιστές (σβήσει, πέσει το δίκτυο, εκραγεί κλπ), διακόπτεται αυτόματα η διαδικασία της σύνδεσης.
Το heartbeat είναι μία εξαιρετικά απλή διαδικασία, που γίνεται εκατοντάδες εκατομμύρια φορές κάθε μέρα, σε ολόκληρο τον κόσμο.
Και μία λάθος γραμμή κώδικα σε αρκετές εκδόσεις του OpenSSL, μήκους μόλις 24ων χαρακτήρων, έχει καταφέρει να πανικοβάλει ολόκληρο το Internet.
Η γραμμή είναι αυτή:
memcpy(bp, pl, payload);
Το heartbleed bug, απλά και κατανοητά
Στην ενότητα αυτή θα εξηγήσουμε όσο πιο απλά γίνεται το πρόβλημα που δημιουργεί η παραπάνω εντολή, το οποίο ονομάστηκε heartbleed.
Η εντολή memcpy είναι μια εντολή που αντιγράφει δεδομένα (από το “memory copy”). Έχει τρεις παραμέτρους που χρειάζεται για να λειτουργήσει:
- To bp περιγράφει σε ποια θέση μνήμης του Server θα γραφτούν τα δεδομένα του heartbeat.
- Το pl περιγράφει που βρίσκονται τα δεδομένα του heartbeat στον δικό μας υπολογιστή.
- Το payload είναι ένας αριθμός που δείχνει πόσο μέγεθος έχουν τα δεδομένα του heartbeat.
Με αυτή την εντολή, ο υπολογιστής μας ουσιαστικά λέει στο Server το εξής:
“Έχω τα δεδομένα για το heartbeat στη θέση pl. Έχουν μέγεθος payload. Σου τα στέλνω στη θέση bp στη μνήμη σου, φρόντισε να έχεις χώρο αρκετό για να χωρέσει το payload. Μόλις λάβεις τα δεδομένα, μου τα επιστρέφεις όπως είναι, για να ξέρω πως είναι εντάξει η σύνδεση”.
Εδώ είναι σημαντικό να κατανοήσουμε το εξής: Η μνήμη RAM σε έναν υπολογιστή ή ένα server που λειτουργεί, δεν είναι ποτέ εντελώς άδεια.
Τα δεδομένα που επεξεργάζεται ο υπολογιστής γράφονται στη μνήμη. Όταν όμως ο υπολογιστής τελειώσει με αυτά, τα δεδομένα δεν σβήνονται.
Παραμένουν στη μνήμη, απλά το σύστημα τα μαρκάρει σαν κενό χώρο, και επιτρέπει να γραφτούν νέα δεδομένα από πάνω τους.
Στην ιδανική λειτουργία της εντολής memcpy, αν ο υπολογιστής μας έχει δημιουργήσει ένα heartbeat 10ΚΒ, και δηλώνει πως το payload είναι 10KB.
Η εντολή παίρνει τα 10KB από τη θέση pl του υπολογιστή μας…
και τα βάζει μέσω δικτύου στη θέση bp του server, η οποία έχει χώρο ακριβώς 10KB (payload).
Ό,τι δεδομένα υπήρχαν πριν στη θέση bp διαγράφονται από τα δεδομένα του heartbeat.
Ύστερα ο server, με τη σειρά του, στέλνει τα δεδομένα του heartbeat πίσω στον υπολογιστή μας, και όλα λειτουργούν όπως πρέπει.
Τι γίνεται όμως αν το Payload λέει ψέματα?
Ας πούμε πως ένας hacker ρυθμίζει τον υπολογιστή του να στείλει ένα μηδενικό heartbeat, αλλά το Payload λέει πως είναι 64KB.
Ο Server θα ετοιμάσει ένα χώρο 64KB στη μνήμη του, στον οποίο θα υπάρχουν ήδη από πριν δεδομένα προς διαγραφή.
Όμως, επειδή το heartbeat έχει μηδενικά δεδομένα, τα άχρηστα δεδομένα στη RAM του Server δεν διαγράφονται.
Το χειρότερο? Ο server, για να επιβεβαιώσει τη σύνδεση, θα επιστρέψει 64KB στον υπολογιστή του hacker, όσα νομίζει πως έλαβε, με το περιεχόμενο της δικής του μνήμης.
Τι μπορεί να περιέχουν αυτά τα δεδομένα?
Μπορεί να μην περιέχουν τίποτα χρήσιμο, να είναι απλά σκουπίδια.
Μπορεί όμως να περιέχουν το username και το password του τελευταίου πελάτη που συνδέθηκε. Να περιέχουν email και προσωπικά μηνύματα. Να περιέχουν μέχρι και το κρυφό κλειδί της κρυπτογράφησης, που θα έδινε στον hacker τη δυνατότητα να βλέπει όλα τα δεδομένα που διακινούνται μέσω της “ασφαλούς” σύνδεσης!
Το χειρότερο?
Ακόμα κι αν το πρώτο πειραγμένο heartbeat δεν επιστρέψει κάτι χρήσιμο, κανείς δεν εμποδίζει τον hacker να στείλει 100, 1.000, 10.000 μηδενικά heartbeat, μέχρι τα δεδομένα που θα λάβει από τον server να είναι αυτά που χρειάζεται.
Και, από τη στιγμή που η συνεχής ανταλλαγή δεδομένων είναι φυσιολογική στα πλαίσια του heartbeat, δεν υπάρχει κανένας τρόπος για το διαχειριστή του server να γνωρίζει αν κάποιος εκμεταλλεύτηκε το heartbleed ή όχι.
Για να το καταλάβετε πιο παραστατικά, δείτε την καταπληκτική οπτική εξήγηση του κόμικ XKCD.
Τι σημαίνει το Heartbleed bug για εμάς
Ορισμένες από τις μεγαλύτερες ιστοσελίδες του διαδικτύου χρησιμοποιούσαν server με εκδόσεις OpenSSL που ήταν ευάλωτες στο heartbleed bug.
Αναφερόμαστε σε κολοσσούς όπως η Google (Gmail, YouTube, Google+), το Facebook, το Yahoo, το Tumbl, το Imgur και δεκάδες άλλες ιστοσελίδες στις οποίες είναι πιθανό να έχουμε λογαριασμούς.
To Mashable.com έχει δημοσιεύσει μια αναλυτική λίστα με τα σημαντικότερα Site που είχαν το heartbleed bug και το αν το έχουν διορθώσει ακόμα ή όχι.
Αυτό που πρέπει να κάνουμε, το ταχύτερο δυνατόν, είναι να αλλάξουμε το password μας σε οποιοδήποτε από τα παραπάνω sites είναι επιβεβαιωμένο πως ήταν ευάλωτο στο heartbleed και έχει κλείσει το κενό ασφαλείας.
Είναι βέβαιο πως κάποιος έχει αποκτήσει πρόσβαση στους κωδικούς μας?
Η απάντηση είναι πως είναι αδύνατον να γνωρίζουμε, καθώς οι επιθέσεις που εκμεταλλεύονταν το heartbleed bug δεν αφήνουν ίχνη.
Σε κάθε περίπτωση, η αλλαγή password είναι ένα απαραίτητο προληπτικό μέτρο.
Να σημειωθεί πως δεν έχει σημασία του πόσο ισχυρός ή αδύναμος ήταν ο κωδικός μας, καθώς το heartbleed bug παρέκαμπτε εντελώς αυτό το επίπεδο ασφάλειας.
Πώς δημιουργήθηκε το heartbleed
Η κατάσταση του OpenSSL
Ο οργανισμός OpenSSL Software Foundation, που συντηρεί και αναπτύσσει τη βιβλιοθήκη OpenSSL, ιδρύθηκε το 1998.
Παρ' όλο που το OpenSSL χρησιμοποιείται από τα 2/3 του Internet, καθώς είναι διαθέσιμο δωρεάν, ο οργανισμός δεν έχει κανένα σημαντικό κέρδος.
Τα μόνα έσοδα που έχει προέρχονται από κάποια συμβόλαια υποστήριξης για επιχειρήσεις, και ελάχιστες δωρεές. Τα έσοδα του οργανισμού δεν ξεπέρασαν ποτέ το 1 εκατομμύριο δολάρια το χρόνο, μεικτά.
Σαν αποτέλεσμα, από τους 11 ανθρώπους που ασχολούνται για την ανάπτυξη και συντήρηση του κώδικα, οι περισσότεροι είναι εθελοντές.
Ένας μόνο, ο Dr. Stephen Hanson, εργάζεται αποκλειστικά στο OpenSSL. Όλοι οι υπόλοιποι έχουν δουλειές πλήρους απασχόλησης αλλού, και ασχολούνται με το OpenSSL στον όποιο ελεύθερο χρόνο τους.
Η γέννηση του Heartbleed
Ο Γερμανός Robin Seggelmann είναι ένας ακαδημαϊκός που είναι ειδικός στα πρωτόκολλα του Internet, και ανήκει στους εθελοντές του OpenSSL.
Στις 31 Δεκεμβρίου του 2011 έστειλε στον Stephen Hanson τον κώδικα για το τμήμα heartbeat του OpenSSL, που περιείχε το μοιραίο σφάλμα. Λόγω της διαφοράς ώρας, ο Hanson έλαβε τον κώδικα στις 11 η ώρα το βράδυ, λίγο πριν την αλλαγή της χρονιάς.
Την ώρα που οι κάτοικοι της Νέας Υόρκης γιόρταζαν το 2012, ο Hanson είχε ελέγξει τον κώδικα και τον είχε ανεβάσει στα “repositories”, για να μοιραστεί σε ιστοσελίδες σε ολόκληρο το Internet.
Δεν είναι παράξενο το ότι ο Hanson δεν παρατήρησε το κενό στον κώδικα ασφαλείας, μία γραμμή ανάμεσα στις εκατοντάδες. Στο κάτω κάτω, σε κανονικές συνθήκες, ο κώδικας λειτουργούσε κανονικά.
Ακόμα και σε εταιρείες πολλών δισεκατομμυρίων, όπως η Microsoft και η Cisco, που διαθέτουν ολόκληρες ομάδες μηχανικών πλήρους απασχόλησης, λάθη και κενά ασφαλείας ξεφεύγουν στον κώδικα των προγραμμάτων τους.
To heartbleed bug παρέμεινε κρυφό από το ευρύ κοινό για περισσότερα από δύο χρόνια.
Το ανακάλυψαν ταυτόχρονα η Φιλανδική εταιρεία ψηφιακής ασφάλειας Codenomicon και ο ερευνητής Neel Mehta, που ανήκει στην ομάδα ασφαλείας της Google.
H Codenomicon ανέβασε και την ιστοσελίδα http://heartbleed.com/, στην οποία αναφέρει όλες τις λεπτομέρειες σχετικά με το heartbleed bug.
Όπως πάντως ανέφερε ο Steve Marquess, ο οποίος διαχειρίζεται τα οικονομικά του OpenSSL Software Foundation, “Το μυστήριο δεν είναι το πώς λίγοι βαρυφορτωμένοι εθελοντές δεν εντόπισαν το πρόβλημα. Το μυστήριο είναι γιατί δεν συμβαίνει κάτι τέτοιο συχνότερα”.
Το μέλλον της ψηφιακής ασφάλειας
Με τον πανικό που έφερε το heartbleed σε ολόκληρο το Internet, κολοσσοί της τεχνολογίας όπως η Google, το Facebook, η Dell, η IBM, η Intel, η Amazon, η Fujitsu και η Microsoft, και άλλοι, θα στηρίξουν ένα νέο οργανισμό με το όνομα Core Infrastraucture Initiative.
Πρόκειται για μια μη κερδοσκοπική οργάνωση η οποία θα παρέχει χρηματοδότηση σε ορισμένα από τα πιο σημαντικά Project του διαδικτύου, φροντίζοντας να ασχολούνται με αυτά μηχανικοί σε καθεστώς πλήρους απασχόλησης, και να γίνονται οι απαραίτητοι έλεγχοι ασφαλείας.
Ήδη έχουν συγκεντρωθεί 3.6 εκατομμύρια δολάρια, και το ποσό αναμένεται να αυξηθεί, καθώς και άλλες εταιρείες προστίθενται στους υποστηριχτές του.
Ας ελπίσουμε πως αυτή η πρωτοβουλία θα βοηθήσει σε βάθος χρόνου στην ηλεκτρονική ασφάλεια, και πως δεν θα ξεχαστεί μόλις καταλαγιάσει ο πανικός του heartbleed…