
The Free Software Foundation
Το 2021, ένας χάκερ ανακάλυψε μια θανατηφόρα ευπάθεια στο πιο σημαντικό λειτουργικό σύστημα του κόσμου, μια ανακάλυψη που θα μπορούσε να οδηγήσει σε καταστροφικά αποτελέσματα για εκατομμύρια διακομιστές στο διαδίκτυο. Η ευπάθεια αυτή αποκάλυπτε ένα «κλειδί» που επέτρεπε την πρόσβαση σε οποιονδήποτε διακομιστή, δημιουργώντας κίνδυνο κατασκοπείας, εκβιασμών ή ακόμα και κατάρρευσης κρατών.
Η Αρχή του Προβλήματος : Ο Εκτυπωτής Xerox 9700
Η ιστορία ξεκινά με ένα απλό πρόβλημα : έναν κολλημένο εκτυπωτή στο εργαστήριο AI, που χρησιμοποιούσαν ερευνητές. Ο Richard Stallman, ερευνητής στο εργαστήριο, προσπάθησε να λύσει το πρόβλημα μέσω προγραμματισμού, δημιουργώντας ένα πρόγραμμα που θα ενημέρωνε για τα κολλήματα, χωρίς όμως να διορθώνει το μηχανικό πρόβλημα.
Ωστόσο, το πρόβλημα ήταν ότι η Xerox δεν παρείχε τον πηγαίο κώδικα του εκτυπωτή, εμποδίζοντας τον Stallman να γράψει το απαραίτητο λογισμικό. Η άρνηση αυτή του προγραμματιστή να παραχωρήσει τον κώδικα του εκτυπωτή έγινε η αφορμή για να καταλάβει ο Stallman ότι η κατάσταση στον κόσμο του λογισμικού είχε αλλάξει δραματικά.
Η Μεταμόρφωση του Λογισμικού : Από Ελευθερία σε Κλειστό Κώδικα
- Τη δεκαετία του 1960, το Unix λειτουργικό σύστημα αναπτύχθηκε και μοιραζόταν ελεύθερα σε πανεπιστήμια και εργαστήρια.
- Στη δεκαετία του 1980, η ATT άρχισε να διεκδικεί πνευματικά δικαιώματα και να περιορίζει την ελεύθερη διανομή του Unix.
- Οι εταιρείες επέβαλαν συμφωνίες μη αποκάλυψης (NDA), περιορίζοντας τη δυνατότητα των προγραμματιστών να μοιράζονται τον κώδικα.
Η Ίδρυση του Free Software Foundation και το Κίνημα Ελεύθερου Λογισμικού
Ο Stallman αποφάσισε να ακολουθήσει διαφορετική πορεία, αποχωρώντας από το MIT το 1985 και ιδρύοντας το Free Software Foundation (FSF). Το FSF προωθούσε τέσσερις βασικές ελευθερίες για το λογισμικό :
- Ελευθερία να τρέχεις το λογισμικό για οποιονδήποτε σκοπό.
- Ελευθερία να μελετάς τον κώδικα.
- Ελευθερία να τροποποιείς το λογισμικό.
- Ελευθερία να μοιράζεσαι αντίγραφα με άλλους.
Για να προστατεύσει αυτές τις ελευθερίες, δημιούργησε την άδεια χρήσης General Public License (GPL), μια νομική άδεια που επέτρεπε στους προγραμματιστές να διανέμουν τον κώδικά τους με όρους που διασφάλιζαν την ελευθερία και την ανοιχτότητα.
Το Πρότζεκτ GNU : Η Αντίσταση στην Κλειστή Λογική
Για να ανταγωνιστεί την ATT, ο Stallman ξεκίνησε το πρότζεκτ GNU, που σημαίνει «GNU is Not Unix», με σκοπό να δημιουργήσει ένα λειτουργικό σύστημα από την αρχή, χωρίς να παραβιάζει δικαιώματα. Το GNU αναπτύχθηκε σε τρία επίπεδα :
- Τα βοηθητικά προγράμματα (utilities) : καθημερινά εργαλεία και εντολές.
- Το shell : το τερματικό που επιτρέπει την αλληλεπίδραση με το σύστημα.
- Ο πυρήνας (kernel) : ο πυρήνας που διαχειρίζεται το υλικό και τη μνήμη.
Σε επτά χρόνια, το πρότζεκτ GNU δημιούργησε τον μεταγλωττιστή GCC, το Bash shell και άλλα βασικά εργαλεία, όμως παρέμενε χωρίς έναν ολοκληρωμένο πυρήνα.
Why is Linux so popular?
Το φθινόπωρο του 1991, ο Richard Stallman επισκέφθηκε το Πανεπιστήμιο του Ελσίνκι για να παρουσιάσει το πρότζεκτ GNU. Στο ακροατήριο βρισκόταν ένας νεαρός φοιτητής πληροφορικής, ο Linus Torvalds, που είχε ξεκινήσει να αναπτύσσει το δικό του πυρήνα λειτουργικού συστήματος από το μηδέν.
Αρχικά, ο πυρήνας του Linus δεν ήταν ελεύθερος, αλλά μετά από την ομιλία του Stallman, αποφάσισε να υιοθετήσει την άδεια General Public License. Αρχικά ήθελε να ονομάσει το λειτουργικό “Free Unix” ή “Freax”, αλλά τελικά ο φίλος του πρότεινε το όνομα Linux, συνδυασμός του ονόματός του και του Unix.
Η Δημιουργία του Πλήρους Λειτουργικού Συστήματος Linux
Ο πυρήνας Linux σε συνδυασμό με τα εργαλεία του GNU δημιούργησαν ένα πλήρες λειτουργικό σύστημα. Ενώ τεχνικά ο όρος «Linux» αναφέρεται μόνο στον πυρήνα, ευρέως χρησιμοποιείται για να περιγράψει ολόκληρο το σύστημα, συχνά ως GNU/Linux.
Το Μοντέλο Ανοιχτού Κώδικα και η Ανάπτυξή του
- Ο ανοιχτός κώδικας επέτρεψε σε οποιονδήποτε να ελέγξει, να βελτιώσει και να διορθώσει τα προγράμματα.
- Αντιπαραβάλλεται με το κλειστό, ιδιόκτητο λογισμικό που ελέγχεται από εταιρείες.
- Η ελευθερία τροποποίησης είναι εξίσου σημαντική με το ότι το λογισμικό είναι δωρεάν.
Η Ευρεία Υιοθέτηση και Ποικιλία Εφαρμογών
Το Linux εξαπλώθηκε σε πολλαπλές συσκευές και εφαρμογές, από υπολογιστές μέχρι οικιακές συσκευές, καθώς και σε κρίσιμες υποδομές :
- Υπολογιστές : πάνω από 30 εκατομμύρια χρήστες Linux παγκοσμίως.
- Ηλεκτρονικές συσκευές : ηλεκτρικές σκούπες, κάμερες, τηλεοράσεις κ.ά.
- Υψηλής ασφάλειας συστήματα : στρατιωτικές και πυρηνικές υποδομές.
- Supercomputers : Όλοι οι κορυφαίοι 500 υπερυπολογιστές στον κόσμο τρέχουν Linux.
Η Δύναμη και το Μειονέκτημα της Κοινοτικής Ανάπτυξης
Η ασφάλεια του Linux βασίζεται στην υπόθεση ότι πολλοί προγραμματιστές ελέγχουν τον κώδικα, γνωστή ως “Ο Νόμος του Linus” : «Με αρκετά μάτια, όλα τα σφάλματα είναι ρηχά». Ωστόσο, το οικοσύστημα του ανοιχτού κώδικα αποτελείται από χιλιάδες μικρά εργαλεία και βιβλιοθήκες, πολλές από τις οποίες αναπτύσσονται από εθελοντές με περιορισμένους πόρους.
Αυτό σημαίνει ότι εκατομμύρια συστήματα μπορεί να βασίζονται σε ένα μικρό πρότζεκτ, που διατηρείται από έναν ή λίγους ανθρώπους, δημιουργώντας ένα σημείο ευπάθειας.
The XZ Weakness
Η ιστορία συνεχίζεται με τον Lasse Collin από τη Φινλανδία, ο οποίος από το 2005 συντηρεί το εργαλείο συμπίεσης δεδομένων XZ. Το XZ είναι ένα από τα πιο αποδοτικά εργαλεία συμπίεσης και χρησιμοποιείται σχεδόν σε κάθε μεγάλη διανομή Linux.
Η Προσωπική Προσπάθεια και τα Προβλήματα Συντήρησης
Ο Lasse έχει αφιερώσει πάνω από 20 χρόνια στην υποστήριξη και συμβατότητα του XZ με νέες τεχνολογίες, χωρίς να έχει λάβει χρηματική αποζημίωση. Πρόσφατα, όμως, αντιμετωπίζει σημαντική πίεση και κόπωση, με καθυστερήσεις στην αποδοχή ενημερώσεων και συνεισφορές από άλλους προγραμματιστές.
- Ο Lasse αναφέρει προβλήματα ψυχικής υγείας που περιορίζουν την ικανότητά του να διατηρεί ενεργά το έργο.
- Η κοινότητα εκφράζει ανησυχία για το μέλλον του πρότζεκτ, ζητώντας πιο ενεργή συντήρηση.
- Η αλληλογραφία δείχνει την προσπάθεια να βρεθεί νέος συντηρητής.
Η Εμφάνιση του «Βοηθού» και η Απειλή
Ο Jia Tan εμφανίζεται ως πολύτιμος βοηθός, που αναλαμβάνει να μοιραστεί το βάρος της συντήρησης. Ωστόσο, η πραγματική του πρόθεση αποδεικνύεται ύποπτη. Έχει εντοπίσει το πρότζεκτ XZ ως το πιο αδύναμο κρίκο στο οικοσύστημα Linux, που θα μπορούσε να του δώσει πρόσβαση σε σχεδόν όλους τους υπολογιστές του διαδικτύου.
Η Κρίσιμη Σημασία της Συντήρησης Εθελοντικών Έργων
| Πρόβλημα | Επίδραση | Παράδειγμα |
|---|---|---|
| Έλλειψη πόρων και χρηματοδότησης | Εθελοντές εξαντλούνται, καθυστερήσεις στην ενημέρωση | Ο Lasse Collin και τα προβλήματα ψυχικής υγείας |
| Εξάρτηση από λίγους συντηρητές | Μεγάλος κίνδυνος σε περίπτωση κακής πρόθεσης ή λάθους | Η ευπάθεια στο XZ που ανακαλύφθηκε από τον Jia Tan |
| Ελλιπής επικοινωνία με την κοινότητα | Δυσκολία στην εύρεση νέων συντηρητών | Αναμονές για συγχώνευση patches |
Η ιστορία αυτή αναδεικνύει την ευπάθεια ενός κρίσιμου συστήματος που βασίζεται στην αφοσίωση και την εθελοντική εργασία λίγων ανθρώπων, με σημαντικές συνέπειες για την ασφάλεια όλου του διαδικτύου.
End To End Encryption – SSH
Η σημερινή ασφάλεια στις απομακρυσμένες συνδέσεις θεωρείται δεδομένη, με το πρωτόκολλο SSH να λειτουργεί αξιόπιστα για πάνω από 30 χρόνια. Ωστόσο, η ιστορία του SSH ξεκίνησε το 1995 στο Helsinki University of Technology, όταν ένας χάκερ κατέγραψε χιλιάδες ονόματα χρήστη και κωδικούς που μεταδίδονταν απροστάτευτα σε απλό κείμενο στο δίκτυο του πανεπιστημίου. Το πρόβλημα ήταν προφανές εκ των υστέρων : τα αιτήματα σύνδεσης μεταφέρονταν χωρίς κρυπτογράφηση, καθιστώντας τα ευάλωτα σε υποκλοπή.
Η Ανάγκη για Ασφαλή Σύνδεση
Ο Tatu Ylonen, ερευνητής υπολογιστών, ανέλαβε να δημιουργήσει μια λύση ώστε να αποτραπούν τέτοιου είδους επιθέσεις. Η λύση του έπρεπε να καλύπτει δύο βασικές ανάγκες :
- Ασφαλής σύνδεση : Τα μηχανήματα πρέπει να δημιουργούν μια ασφαλή σύνδεση μέσω ενός κοινώς συμφωνημένου μυστικού κωδικού που θα κρυπτογραφεί τα δεδομένα.
- Αυθεντικοποίηση : Πρέπει να επιβεβαιώνεται η ταυτότητα του απομακρυσμένου χρήστη για να αποτραπούν επιθέσεις τύπου “άνθρωπος στη μέση”.
Η Μέθοδος Συμφωνίας Μυστικού Κλειδιού
Η πρόκληση ήταν να συμφωνήσουν τα δύο μέρη σε ένα μυστικό κλειδί χωρίς να έχουν συναντηθεί και ενώ κάποιος παρακολουθεί τη σύνδεση. Η ιδέα εξηγείται με ένα παράδειγμα με χρώματα :
- Κοινό δημόσιο χρώμα (π.χ. κόκκινο) γνωστό σε όλους.
- Το κάθε μέρος επιλέγει ένα ιδιωτικό χρώμα (π.χ. κίτρινο, μπλε).
- Αναμειγνύουν το ιδιωτικό τους χρώμα με το δημόσιο και ανταλλάσσουν το αποτέλεσμα.
- Κάθε πλευρά αναμειγνύει το λαμβανόμενο χρώμα με το δικό της ιδιωτικό, καταλήγοντας στο ίδιο τελικό μυστικό χρώμα.
Αυτή η διαδικασία, στην πραγματικότητα, υλοποιείται με αριθμητικά δεδομένα και μαθηματικά που βασίζονται στο πρόβλημα των διακριτών λογαρίθμων, καθιστώντας πρακτικά αδύνατη την ανάκτηση των ιδιωτικών κλειδιών από τρίτους.
Αντιμετώπιση της Επίθεσης “Άνθρωπος στη Μέση”
Ένα επιπλέον πρόβλημα ήταν η πιθανότητα ένας επιτιθέμενος να παρεμβληθεί ανάμεσα στα δύο μέρη και να δημιουργήσει δύο ξεχωριστές συνδέσεις με τα ίδια μέρη, αναμεταδίδοντας και ενδεχομένως αλλοιώνοντας τα μηνύματα. Για να αντιμετωπιστεί αυτό, εφαρμόστηκε η αυθεντικοποίηση μέσω κρυπτογραφίας RSA :
- Ο κάθε χρήστης δημιουργεί δύο μεγάλους πρώτους αριθμούς και κρατά μυστικούς τους παράγοντες.
- Δημοσιεύει το γινόμενο των δύο πρώτων, το οποίο χρησιμοποιείται ως δημόσιο κλειδί.
- Τα μηνύματα κρυπτογραφούνται με το δημόσιο κλειδί και αποκρυπτογραφούνται μόνο με τους μυστικούς παράγοντες.
Έτσι, διασφαλίζεται ότι η σύνδεση είναι αυθεντική και δεν πρόκειται για επίθεση “άνθρωπος στη μέση”.
Η Δημιουργία του SSH
Συνδυάζοντας την κρυπτογραφημένη σύνδεση και την αυθεντικοποίηση, ο Tatu Ylonen δημιούργησε το πρωτόκολλο Secure Shell (SSH) για ασφαλείς απομακρυσμένες συνδέσεις μέσω τερματικού. Το SSH υιοθετήθηκε γρήγορα από τα Linux συστήματα, ειδικά επειδή πολλά από αυτά λειτουργούσαν ως διακομιστές χωρίς φυσικό πληκτρολόγιο ή οθόνη, καθιστώντας απαραίτητο τον απομακρυσμένο έλεγχο.
Η Σημασία του OpenSSH και οι Κίνδυνοι Ασφαλείας
Το OpenSSH είναι η πιο δημοφιλής υλοποίηση του πρωτοκόλλου και η ασφάλειά του είναι κρίσιμη για το διαδίκτυο. Είναι ένα από τα πιο ελεγχόμενα έργα ανοιχτού κώδικα, καθώς μια παραβίαση σε αυτό ισοδυναμεί με κλοπή του “κύριου κλειδιού” για όλες τις διακομιστικές μηχανές που το χρησιμοποιούν.
Ωστόσο, ορισμένες εξαρτήσεις του OpenSSH, όπως το εργαλείο συμπίεσης XZ, δεν έχουν την ίδια αυστηρή εξέταση, και αυτό αποτέλεσε σημείο εισόδου για κακόβουλους επιτιθέμενους.
How To Compress Data
Η συμπίεση δεδομένων είναι μια διαδικασία που μειώνει το μέγεθος των αρχείων διατηρώντας παράλληλα την ακεραιότητά τους. Ο στόχος της lossless συμπίεσης είναι να επιτρέπει την ακριβή αποκατάσταση των δεδομένων μετά την αποσυμπίεση.
Βασικές Αρχές της Συμπίεσης
- Αρχική αναπαράσταση δεδομένων ως ροή χαρακτήρων, όπου κάθε χαρακτήρας έχει σταθερό μήκος κώδικα (π.χ. 8-bit).
- Αναγνώριση συχνοτήτων εμφάνισης χαρακτήρων για αποδοτικότερη κωδικοποίηση.
Η Μέθοδος Huffman
Η τεχνική Huffman βασίζεται στην κατασκευή ενός δέντρου για την κωδικοποίηση χαρακτήρων με βάση τη συχνότητα εμφάνισής τους :
- Καταμέτρηση της συχνότητας κάθε χαρακτήρα και ταξινόμηση από τον πιο συχνό στον πιο σπάνιο.
- Συνένωση των δύο λιγότερο συχνών συμβόλων σε ένα νέο “συμβολικό ζεύγος” με άθροισμα συχνότητας.
- Επανάληψη της διαδικασίας μέχρι να δημιουργηθεί ένα πλήρες δέντρο Huffman.
- Ανάθεση κωδικών : βήμα προς τα δεξιά = 1, βήμα προς τα αριστερά = 0.
Τα πιο συχνά σύμβολα λαμβάνουν μικρότερους κωδικούς, ενώ τα λιγότερο συχνά μεγαλύτερους.
Περιορισμοί και Βελτιώσεις
Η Huffman κωδικοποίηση δεν αναγνωρίζει επαναλαμβανόμενα μεγαλύτερα μοτίβα όπως φράσεις ή τμήματα λέξεων. Για αυτό αναπτύχθηκαν αλγόριθμοι που βασίζονται σε επαναλαμβανόμενα τμήματα :
- Η μέθοδος LZ77 (Lempel-Ziv 1977) χρησιμοποιεί ένα “ρολλινγκ λεξικό” για την αναζήτηση επαναλαμβανόμενων τμημάτων.
- Αντί να αποθηκεύει ξανά τα ίδια τμήματα, αποθηκεύει κώδικες που δείχνουν πόσο πίσω να κοιτάξει και πόσους χαρακτήρες να αντιγράψει.
- Στην αποσυμπίεση, οι κώδικες αυτοί αναπαράγουν τα αρχικά δεδομένα ακριβώς.
Συνδυασμός LZ77 με Huffman
Για βελτιωμένη συμπίεση, οι κώδικες και οι δείκτες του LZ77 κωδικοποιούνται περαιτέρω με Huffman, δημιουργώντας ένα δεύτερο επίπεδο συμπίεσης. Έτσι, το μέγεθος του αρχείου μειώνεται σημαντικά (έως και 85% στην επίδειξη με το τραγούδι “Never Gonna Give You Up”).
Προχωρημένοι Αλγόριθμοι : LZMA
Για ακόμα καλύτερα αποτελέσματα, χρησιμοποιείται το Lempel Ziv Markov chain algorithm (LZMA), που :
- Χρησιμοποιεί μεγαλύτερα παράθυρα αναζήτησης για να βρει μεγαλύτερα τμήματα που επαναλαμβάνονται.
- Εφαρμόζει μοντέλα Markov chain για την πρόβλεψη πιθανοτήτων επόμενων τμημάτων, δίνοντας μικρότερο κόστος στα πιο πιθανά.
- Αναπτύχθηκε από τον Igor Pavlov το 1998 και προσφέρει συμπίεση που συχνά φτάνει το 70% του μεγέθους του αρχικού αρχείου.
Το XZ και η Εφαρμογή του σε Linux
Ο Lasse Collin δημιούργησε το εργαλείο XZ βασισμένο στον LZMA αλγόριθμο, με στόχο την αξιόπιστη και αποδοτική συμπίεση σε Linux συστήματα. Το XZ έγινε γρήγορα η προτιμώμενη επιλογή για lossless συμπίεση σε πολλά έργα, λόγω της μεγάλης μείωσης μεγέθους και της διατήρησης της ακεραιότητας των δεδομένων.
How The .XZ Hack Worked
Το Φεβρουάριο του 2024, ο Jia Tan ξεκίνησε να στέλνει προτεινόμενες αλλαγές στον κώδικα του XZ, κερδίζοντας την εμπιστοσύνη των υπευθύνων, όπως ο Rich, υπεύθυνος διαχείρισης του έργου.
Προσέγγιση Εισαγωγής Κακόβουλου Κώδικα
- Ο Jia Tan προωθούσε μικρές βελτιώσεις και αλλαγές που έδειχναν υπεύθυνες και χρήσιμες.
- Αυτή η εμπιστοσύνη επέτρεψε την ένταξη των αλλαγών του σε σημαντικά Linux distributions, όπως Fedora και Debian.
Τρία Στάδια του Σχεδίου του Jia Tan
- Τρώας Άλογο (Trojan Horse) : Ο κώδικας του Jia κρύβει το κακόβουλο payload μέσα σε δυαδικά blobs δοκιμών, τα οποία θεωρούνται αμέσως μη αναγνώσιμα και αβλαβή.
- Η Ζώνη Χρυσόμαλλου Δέρατος (Goldilocks) : Χρησιμοποιώντας IFUNC resolvers και audit hooks, ο Jia εκμεταλλεύεται το σημείο όπου γεμίζει ο Global Offset Table (GOT) για να αντικαταστήσει τη λειτουργία RSA Decrypt με το δικό του κώδικα, επιτρέποντας πρόσβαση χωρίς αυθεντικοποίηση.
- Ο Διάρρηκτης (Cat Burglar) : Ο κακόβουλος κώδικας ελέγχει για ένα κρυφό master key, πραγματοποιώντας μια μίνι κρυπτογραφική ανταλλαγή, και αν το κλειδί συμφωνεί, επιτρέπει την πρόσβαση χωρίς να αφήνει ίχνη στα logs.
Τεχνικές Λεπτομέρειες
- IFUNC Resolver : Επιτρέπει την εκτέλεση προσαρμοσμένου κώδικα νωρίς κατά τη φόρτωση βιβλιοθηκών, αξιοποιείται για να τοποθετηθεί ο audit hook.
- Audit Hook : Εκτελείται όταν ο linker γεμίζει το GOT, επιτρέποντας την αντικατάσταση της πραγματικής διεύθυνσης της RSA Decrypt.
- Εύρεση του Audit Hook : Ο Jia αναζητά και αποκωδικοποιεί τη θέση του hook σε μνήμη μέσω ανάλυσης δυαδικού κώδικα.
Συμπέρασμα
Η επίθεση χρησιμοποιεί μια πολυσύνθετη και έξυπνη εκμετάλλευση αδυναμιών στη διαδικασία φόρτωσης κοινόχρηστων βιβλιοθηκών και στο σύστημα συμπίεσης XZ, δημιουργώντας ένα αόρατο backdoor στο OpenSSH, δίνοντας πλήρη έλεγχο στον επιτιθέμενο χωρίς να ανιχνεύεται.
A Bug In Jia’s Code
Καθώς ο Jia Tan προχωρούσε στην εισαγωγή του κακόβουλου κώδικα, μια πρόταση για την αφαίρεση της εξάρτησης του XZ από το OpenSSH απείλησε το σχέδιό του, δημιουργώντας πίεση για γρήγορη ένταξη του κώδικα σε μεγάλες διανομές Linux.
Προώθηση του Κακόβουλου Κώδικα
- Ο Jia ενσωματώθηκε σε δοκιμαστικές εκδόσεις του Debian και υπέβαλε αίτηση για προσθήκη στο Ubuntu.
- Έκανε συνεχείς πιέσεις στον Rich για ένταξη της νέας έκδοσης του XZ στο Fedora.
- Η επιμονή του και η καλή του φήμη ως προγραμματιστής τον βοήθησαν να περάσει το κακόβουλο κώδικα αργά αλλά σταθερά.
Η Εμφάνιση του Σφάλματος Μνήμης
Όμως, η κακόβουλη έκδοση του XZ περιείχε ένα σημαντικό σφάλμα στη διαχείριση μνήμης :
- Πρόκειται για memory leak, όπου η μνήμη δε γίνεται σωστή αποδέσμευση.
- Η εκτέλεση του κακόβουλου κώδικα προκαλούσε λάθη invalid writes, που σημαίνει εγγραφή εκτός ορίων μνήμης.
- Το εργαλείο Valgrind, ειδικό για ανίχνευση τέτοιων σφαλμάτων, ανέφερε έντονα τα προβλήματα αυτά.
Η Εξήγηση και η Κάλυψη του Σφάλματος
Για να καλύψει το πρόβλημα, ο Jia :
- Ισχυρίστηκε ότι τα αρχικά δυαδικά δεδομένα δοκιμών δεν ήταν αναπαραγώγιμα και τα αντικατέστησε με καινούργια.
- Έκανε αλλαγές στον κώδικα IFUNC με σχόλια και μικρές παραλλαγές που δεν επηρέαζαν τη λειτουργικότητα, για να δικαιολογήσει την “επισκευή” του σφάλματος.
Αυτή η έξυπνη διαχείριση των αλλαγών απέτρεψε την υποψία, καθώς τέτοιες διορθώσεις θεωρούνται συνηθισμένες σε έργα ανοιχτού κώδικα.
Η Αντίδραση του Διαχειριστή Rich
Ο Rich, υπεύθυνος για το Fedora, θεωρούσε τον Jia αξιόπιστο και προγραμματιστή υψηλού επιπέδου. Έτσι, αναθέτοντας σε αυτόν την επίλυση των σφαλμάτων, δεν υποψιάστηκε την ύπαρξη κακόβουλου κώδικα και προώθησε την ένταξη των αλλαγών χωρίς περαιτέρω αμφιβολίες.
Henry Hacks Derek
Σε αυτό το τμήμα του βίντεο, παρουσιάζεται μια εντυπωσιακή επίδειξη hacking από τον Henry, ο οποίος εκμεταλλεύεται μια παραλλαγή του XZ project, βασισμένη στην έκδοση του Jia Tan, αλλά με μια δική του μυστική κωδικοποίηση. Σκοπός του Henry είναι να αποκτήσει έλεγχο πάνω στον ιστότοπο veritasium.com, και να εφαρμόσει ένα μικρό κόλπο στο Derek, χωρίς να προκαλέσει πραγματική ζημιά στο λειτουργικό site.
Κύρια σημεία της επίθεσης
- Χρήση παραλλαγής του XZ με δικό του κρυφό κώδικα αντί του κώδικα του Jia Tan
- Κλωνοποίηση του Veritasium website σε παρόμοιο URL για αποφυγή προβλημάτων με την πραγματική κίνηση
- Άνοιγμα θύρας στον server και αποστολή κακόβουλου script για απομακρυσμένο έλεγχο
- Αλλαγή του περιεχομένου της ιστοσελίδας με βίντεο και μηνύματα που ο Derek συνήθως δεν εγκρίνει
- Δυνατότητα πλήρους ελέγχου, αντιγραφής, τροποποίησης και διαγραφής αρχείων στον server
Περιγραφή της διαδικασίας hacking
Ο Henry ξεκινάει με την εκτέλεση ενός script που ανοίγει μια θύρα στον server του Veritasium. Μετά, από άλλη κονσόλα, στέλνει αρχεία και κώδικα μέσω αυτής της θύρας, αποκτώντας τελικά root πρόσβαση στο μηχάνημα. Αυτό σημαίνει ότι μπορεί να θεωρηθεί ιδιοκτήτης του server, με όλες τις εξουσίες που αυτό συνεπάγεται.
Για να μην προκαλέσει άμεση αναστάτωση, ο Henry είχε προνοήσει να κλωνοποιήσει την ιστοσελίδα σε ένα παρόμοιο URL, ώστε οι αλλαγές να γίνουν σε περιβάλλον δοκιμής και όχι στο πραγματικό site. Αυτό δεν το γνωρίζει ο Derek, ο οποίος αντιδρά με ανησυχία και έκπληξη βλέποντας το περιεχόμενο που έχει αλλάξει.
Σοβαρές επιπτώσεις της επίθεσης
- Πλήρης έλεγχος της ιστοσελίδας, δυνατότητα τροποποίησης περιεχομένου
- Απόκτηση ευαίσθητων δεδομένων, όπως κρυπτονομίσματα, έγγραφα, επικοινωνίες
- Κίνδυνος υποκλοπής δεδομένων ή αλλαγής τους χωρίς να γίνει αντιληπτό
- Δυνατότητα εκβιασμού μέσω κρυπτογράφησης ή άλλων επιθέσεων ransomware
Συμπεράσματα
Αυτή η επίδειξη δείχνει πόσο εύκολα μπορεί να παραβιαστεί ένας Linux server μέσω μιας προσεκτικά σχεδιασμένης backdoor. Αν και εδώ η επίθεση ήταν εμφανής και ενδεικτική, σε πραγματικές συνθήκες, οι αλλαγές θα ήταν διακριτικές, ώστε να περνούν απαρατήρητες για μεγάλο χρονικό διάστημα.
The Back Door Is Exposed
Σε αυτή την ενότητα, η ιστορία μεταφέρεται σε έναν Γερμανό προγραμματιστή της Microsoft, τον Andres Freund, ο οποίος ανακαλύπτει τυχαία την ύπαρξη μιας ύποπτης καθυστέρησης σε server με Debian. Αυτό τον οδηγεί να αποκαλύψει μια προσεκτικά κρυμμένη backdoor στο XZ project.
Η αρχική υποψία
- Ανίχνευση μικρής καθυστέρησης 400-500 ms σε συνδέσεις server
- Παρατήρηση καθυστερήσεων παρόμοιων με αυτές που εμφανίζονταν στην έκδοση του XZ με backdoor
- Έρευνα σε πρόσφατες αλλαγές του OpenSSH και σύνδεσή τους με την ενημέρωση του XZ
- Ανακάλυψη μη χρησιμοποιημένων binary test αρχείων και παράξενων υποψιών
Ανακάλυψη της backdoor
Με προσεκτική διερεύνηση, ο Andres συνειδητοποιεί ότι πρόκειται για μια εξαιρετικά προσεγμένη backdoor που :
- Αναζητά στον μνήμη audit hooks
- Διαβάζει κωδικοποιημένα δεδομένα με ειδικό decoder
- Χρησιμοποιεί κρυπτογράφηση και ελέγχους ασφαλείας ώστε να ενεργοποιείται μόνο σε συγκεκριμένες συνδέσεις
- Καμουφλάρει τα δικά της strings για να μην εντοπιστεί εύκολα
Αντίδραση της κοινότητας
Ο Andres, μη έχοντας σχέση με το XZ, προχωράει σε αναφορά του προβλήματος στην ομάδα ασφαλείας του Debian και σε δημόσιο mailing list, προκαλώντας άμεση κινητοποίηση.
- Η Red Hat ανακαλεί την τελευταία έκδοση του Fedora και συμβουλεύει επαναφορά της προηγούμενης
- Η κοινότητα ανοικτού κώδικα ξεκινά ενδελεχή έρευνα για να κατανοήσει το μέγεθος και τη φύση του προβλήματος
- Ο Andres λαμβάνει δημόσια αναγνώριση, ακόμα και από τον CEO της Microsoft
Η αντίδραση των μέσων και το πραγματικό μέγεθος της απειλής
Παρά τη σοβαρότητα της ανακάλυψης, η κάλυψη από τα mainstream μέσα ήταν περιορισμένη, κάτι που εξέπληξε τους εμπλεκόμενους. Η backdoor είχε τη δυνατότητα να παραβιάσει εκατομμύρια συστήματα, με επιπτώσεις που κυμαίνονται από κατασκοπεία και εκβιασμό μέχρι ακόμα και την κατάρρευση χωρών.
Who is Jia Tan?
Η ταυτότητα και οι προθέσεις του δημιουργού της backdoor, Jia Tan, παραμένουν ένα μεγάλο μυστήριο. Από τις διαθέσιμες πληροφορίες και την ανάλυση των δεδομένων, προκύπτουν ενδιαφέροντα συμπεράσματα και υποθέσεις.
Χαρακτηριστικά και συμπεριφορά
- Η προσωπικότητα του Jia Tan πιθανότατα καλύπτει μια ομάδα ανθρώπων, όχι μόνο ένα άτομο
- Η ομάδα δούλευε επί περίπου δύο και μισό χρόνια πάνω στην backdoor
- Χρήση πολλών ψεύτικων λογαριασμών (sock puppets) για πίεση και κοινωνική μηχανική
- Προσεκτική και μεθοδική διαδικασία που δείχνει υψηλό επίπεδο σχεδιασμού
Υποψίες για το ποιος βρίσκεται πίσω
Παρά τα στοιχεία που δείχνουν προς ασιατικές χώρες, και συγκεκριμένα την Κίνα (π.χ. ονόματα, ζώνη ώρας UTC+8), η υπερβολική προφανής ένδειξη θεωρείται πιθανό να αποτελεί παραπλάνηση. Επίσης, αλλαγές που σχετίζονται με ζώνες ώρας UTC+2 (Ισραήλ, Δυτική Ρωσία) έχουν οδηγήσει κάποιους ειδικούς στο να υποθέσουν εμπλοκή του APT29, μιας ρωσικής ομάδας κυβερνοκατασκοπείας γνωστής ως Cozy Bear.
Η σημασία της ανωνυμίας και οι συνέπειες
- Ο Jia Tan εξαφανίστηκε αμέσως μετά τη δημόσια αποκάλυψη της backdoor
- Η ταυτότητα του παραμένει άγνωστη και πιθανότατα θα μείνει έτσι
- Η προέλευση δεν αλλάζει την ανάγκη για αυστηρή προστασία ενάντια σε τέτοιες απειλές
- Η υπόθεση λειτουργεί ως προειδοποίηση για την αυξανόμενη σοβαρότητα και πολυπλοκότητα των κυβερνοεπιθέσεων
Μελλοντικές ανησυχίες
Η κοινότητα ανοικτού κώδικα ερεύνησε πολλά παρόμοια έργα, χωρίς όμως να εντοπίσει άλλες backdoors παρόμοιας κλίμακας. Ωστόσο, υπάρχει ανησυχία ότι πολλές τέτοιες απειλές παραμένουν κρυμμένες, καθώς υπάρχουν πολλοί παράγοντες με κίνητρα να τοποθετούν backdoors, όπως κράτη, στρατοί, και ιδιωτικές εταιρείες.
Open Vs Closed Source
Η αποκάλυψη της backdoor φέρνει στο προσκήνιο τη συζήτηση για τα πλεονεκτήματα και μειονεκτήματα των ανοιχτού και κλειστού κώδικα λογισμικών.
Επιχειρήματα υπέρ του ανοικτού κώδικα
- Η backdoor αποκαλύφθηκε χάρη στην κοινότητα που εξέτασε και ανέλυσε τον κώδικα δημοσίως
- Η διαφάνεια επιτρέπει την ανίχνευση και διόρθωση προβλημάτων που σε κλειστά συστήματα θα παρέμεναν κρυφά
- Προστατεύει από κακόβουλες ενέργειες που μπορεί να προέρχονται ακόμα και από «εσωτερικούς» παράγοντες
Προβλήματα και περιορισμοί
- Η επίθεση απέδειξε πως ακόμα και το ανοικτό λογισμικό δεν είναι απρόσβλητο από προσεκτικά σχεδιασμένες backdoors
- Η πίεση και η απαίτηση για δωρεάν συντήρηση βάζει μεγάλο βάρος σε εθελοντές δημιουργούς όπως ο Lasse
- Υπάρχει φόβος ότι το σύστημα δεν υποστηρίζει επαρκώς τους δημιουργούς ανοιχτού κώδικα
Η πλευρά του κλειστού κώδικα
Αν και κάποιοι θεωρούν πως το κλειστό λογισμικό θα ήταν ασφαλέστερο, υπάρχουν σοβαρές ενδείξεις ότι και εκεί υπάρχουν backdoors, συχνά με εντολές δικαστηρίων ή εταιρικές πολιτικές που καλύπτουν παραβιάσεις. Σε αυτά τα συστήματα δεν υπάρχει κοινότητα που να ελέγχει τον κώδικα και να ανιχνεύει τέτοιες απειλές.
Συμπέρασμα
Η περίπτωση του XZ υπογραμμίζει την ανάγκη για ισχυρή υποστήριξη και προστασία των δημιουργών ανοιχτού κώδικα, καθώς και την αναγκαιότητα για συνεχή επιθεώρηση και βελτίωση των ασφαλείας σε όλα τα επίπεδα. Η ασφάλεια δεν βασίζεται μόνο στον κώδικα, αλλά και στους ανθρώπους που τον φροντίζουν και στηρίζουν.


