ΕΛ/ΛΑΚ | creativecommons.gr | mycontent.ellak.gr |
freedom

Ο πυρήνας Linux, τα «υποκριτικά commits» και η ασφάλεια

Ο πυρήνας του Linux διαθέτει, αναμφίβολα, υψηλό επίπεδο ασφάλειας, και σίγουρα υψηλότερο από άλλα έργα λογισμικού αντίστοιχου βεληνεκούς, ελεύθερα ή μη. Αποτελεί το αρτιότερο παράδειγμα του τι μπορεί να πετύχει το ΕΛ/ΛΑΚ όταν όλοι και όλα δουλεύουν όπως πρέπει. Αυτό το χαρακτηριστικό, άλλωστε, είναι ένας από τους κύριους λόγους που ένα λογισμικό το οποίο ξεκίνησε ως χόμπι πριν από 30 ολόκληρα χρόνια έφτασε σήμερα να είναι ριζωμένο στις υποδομές ολόκληρου του πλανήτη αλλά και έξω από αυτόν.

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

Πριν από μερικές ημέρες, όμως, είχαμε τη σπάνια ευκαιρία να παρακολουθήσουμε σχεδόν «ζωντανά» τα γρανάζια του πυρήνα Linux να γυρνούν και τις διαδικασίες που εγγυώνται την υγιή ανάπτυξη και την ασφάλειά του να λειτουργούν στην εντέλεια, με αφορμή μια -κατά τα φαινόμενα- πανεπιστημιακή έρευνα.

Μια έρευνα για την ασφάλεια με περίεργη μεθοδολογία

Η όλη ιστορία άρχισε στο Πανεπιστήμιο της Minnesota, όπου δύο διδακτορικοί φοιτητές και ένας επιβλέπων καθηγητής στο Τμήμα Επιστήμης και Μηχανικής Υπολογιστών θέλησαν -όπως ισχυρίζονται- να βελτιώσουν τη διαδικασία ανάπτυξης του λογισμικού ανοιχτού κώδικα και, πιο συγκεκριμένα, τον τομέα της ασφάλειας.

Για τον σκοπό αυτόν ξεκίνησαν μια έρευνα με τίτλο «On the Feasibility of Stealthily Introducing Vulnerabilities in Open-Source Software via Hypocrite Commits» (PDF) (ελλ. «Σχετικά με την εφικτότητα της λαθραίας εισαγωγής ευπαθειών σε λογισμικό ανοιχτού κώδικα μέσω υποκριτικών commits»).

Στην πράξη, αυτό σήμαινε ότι θα υποδύονταν τους συνεισφέροντες και θα έστελναν κώδικα ο οποίος εν μέρει θα επιδιόρθωνε κάποιο πρόβλημα αλλά θα περιείχε και κρυμμένα κακόβουλα στοιχεία, με απώτερο στόχο την ενσωμάτωσή του, κάτι που θα καταδείκνυε την ύπαρξη αδύναμων σημείων στη διαδικασία ανάπτυξης του λογισμικού και της επιθεώρησης του ανοιχτού κώδικα. Αυτές τις συνεισφορές τις ονόμασαν «υποκριτικά commits».

Η κοινότητά μας δεν εκτιμά το να γίνονται πειράματα σε βάρος της και το να «δοκιμάζεται» με την υποβολή γνωστών επιδιορθώσεων που είτε δεν κάνουν τίποτα σκόπιμα είτε εισαγάγουν σφάλματα σκόπιμα.

Greg Kroah-Hartman – προγραμματιστής πυρήνα Linux

Θα συμφωνήσετε, θεωρώ, ότι οι ενέργειες που θέτουν υπό δοκιμασία την ασφάλεια του λογισμικού ανοιχτού κώδικα είναι πάντα καλοδεχούμενες και σίγουρα μπορούν να προσφέρουν στη βελτίωσή του. Άλλωστε, ο κόσμος της τεχνολογίας έχει θεσπίσει ορθές πρακτικές και κανόνες που επιτρέπουν τέτοιες ενέργειες, οι οποίες περιγράφονται διεθνώς με τους όρους «ethical hacking» και «penetration testing». Όμως, η συγκεκριμένη έρευνα αγνόησε όλα τα παραπάνω.

Για κακή τους τύχη, οι φοιτητές επέλεξαν να στοχεύσουν τον ίδιο τον πυρήνα Linux. Εικάζω ότι αυτό έγινε για λόγους δημοσιότητας, καθώς μια ενδεχόμενη επιτυχία τους εναντίον του μεγαλύτερου έργου ΕΛ/ΛΑΚ στον πλανήτη θα απέφερε φήμη τόσο στους ίδιους όσο και στο πανεπιστήμιο. Θα ήταν, επίσης, ενδεικτική της κατάστασης για άλλα, μικρότερα έργα.

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

Οι προγραμματιστές του πυρήνα παρακολουθούν άγρυπνοι

Οι επαναλαμβανόμενες απόπειρες των δύο φοιτητών να εισαγάγουν «περίεργο» κώδικα στον πυρήνα Linux φαίνεται να κορυφώθηκαν στα τέλη του περασμένου Απριλίου, προκαλώντας αρχικά την αντίδραση ορισμένων προγραμματιστών του και την παρέμβαση του Greg Kroah-Hartman, ο οποίος τους ζήτησε σε αυστηρό μεν, ευγενικό δε, τόνο να σταματήσουν.

Παρακαλώ σταματήστε να υποβάλλετε γνωστές μη έγκυρες επιδιορθώσεις. Ο καθηγητής σας παίζει με τη διαδικασία αναθεώρησης προκειμένου να πετύχει ένα χαρτί (Σ.τ.Μ. εννοεί το έγγραφο της έρευνας) με έναν ασυνήθιστο και παράξενο τρόπο.

Αυτό δεν είναι εντάξει, σπαταλά τον χρόνο μας και θα πρέπει να το αναφέρουμε ΞΑΝΑ στο πανεπιστήμιό σας…

Παρατηρήστε τη φράση «γνωστές μη έγκυρες επιδιορθώσεις» που δείχνει ότι οι προγραμματιστές του πυρήνα είχαν αντιληφθεί από νωρίς ότι κάτι δεν πάει καλά, καθώς και το «ΞΑΝΑ» (η ορθογραφία εδώ διατηρήθηκε) που δηλώνει ότι δεν ήταν η πρώτη φορά και πως το Πανεπιστήμιο της Minnesota είχε ήδη ενημερωθεί για την ενόχληση που προκαλούσε ο τρόπος διεξαγωγής αυτής της έρευνας.

Αν έχετε τον χρόνο να παρακολουθήσετε τη συζήτηση στη σχετική λίστα ηλεκτρονικού ταχυδρομείου του πυρήνα Linux, θα διαπιστώσετε ότι οι δύο φοιτητές δε φάνηκαν δεκτικοί απέναντι στις συστάσεις, με αποτέλεσμα ο Kroah-Hartman να προχωρήσει στον αποκλεισμό όλων των μελλοντικών συνεισφορών από το πανεπιστήμιο -που, στο μεταξύ, δεν είχε αντιδράσει- καθώς και στην αφαίρεση όσων είχαν τυχόν ενσωματωθεί στον κώδικα του πυρήνα. Αυτό έγινε, φυσικά, για την προστασία του πυρήνα αλλά έπαιξε ως είδηση σε πολλές ιστοσελίδες και σχολιάστηκε ποικιλοτρόπως.

Η αποτελεσματική διαδικασία της ασφάλειας στο ΕΛ/ΛΑΚ

Μπορεί κάποιος να σκεφτεί εδώ ότι το γεγονός πως ορισμένα κακόβουλα commits είναι πιθανό να ενσωματώθηκαν στον πυρήνα δείχνει ότι όντως υπάρχουν αδυναμίες στη διαδικασία επιθεώρησης του κώδικα. Αυτή, όμως, είναι μια λανθασμένη θεώρηση.

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

Όπως έχω αναφέρει σε παλιότερο άρθρο, σε τέτοιες περιπτώσεις συναντάμε τον όρο «mitigation» (ελλ. «μετρίαση») και τα σχετικά περιστατικά δεν έχουν καμία απολύτως διαφορά μεταξύ τους, είτε πρόκειται για πολυεθνικό κολοσσό με δισεκατομμύρια σε πόρους είτε για έναν ταπεινό δημιουργό μιας εφαρμογής ΕΛ/ΛΑΚ. Πιο απλά, το ζήτημα δεν είναι να αποκλείσουμε την ύπαρξη κακού κώδικα (γιατί δε μπορούμε) αλλά το τι θα κάνουμε εφόσον τον εντοπίσουμε, πόσο γρήγορα και αποτελεσματικά θα αντιδράσουμε.

Αυτό που δε φαίνεται άμεσα κατά την ανάγνωση της προαναφερθείσας συζήτησης και, επιπλέον, αποκρύπτεται ακόμα περισσότερο με την επιλεκτική αναφορά αποσπασμάτων από τις δημοφιλείς ιστοσελίδες τεχνολογίας, είναι ένα από τα βασικά χαρακτηριστικά που έκαναν τον πυρήνα Linux αυτό που είναι σήμερα: η άμεση αντίδραση απέναντι σε ευπάθειες.

Η ασφάλεια δεν είναι προϊόν· είναι διαδικασία

Βεβαίως, έχουν υπάρξει εξαιρέσεις, όμως το χαρακτηριστικό αυτό είναι εγγενές στο ΕΛ/ΛΑΚ και ενδυναμώνεται ακόμα περισσότερο από τις εσωτερικές διαδικασίες ανάπτυξης του πυρήνα.

Διαβάζοντας, λοιπόν, τη συνομιλία, ένας προσεκτικός αναγνώστης θα παρατηρήσει ότι η πρώτη αναφορά σε κώδικα που δημιουργεί κενά ασφάλειας γίνεται στις 21/04/2021, 5:10, το πρώτο βήμα για την προστασία του πυρήνα (ο αποκλεισμός των συνεισφορών του πανεπιστημίου) επιβεβαιώνεται τρεις ώρες αργότερα και ο κώδικας που αναιρεί τις ενσωματώσεις που εντοπίστηκαν είναι ήδη έτοιμος στις 13:34 της ίδιας ημέρας.

Συνοψίζοντας, χρειάστηκαν μόλις 8 ώρες και 24 λεπτά για να αναιρεθούν 190 συνεισφορές κώδικα που προέρχονταν από το Πανεπιστήμιο της Minnesota και είχαν ήδη ενσωματωθεί στον πυρήνα, χωρίς αυτό να σημαίνει ότι ήταν όλες κακόβουλες. Στο σημείο αυτό είναι απαραίτητη η διευκρίνιση ότι η αποδοχή συνεισφορών κώδικα στο ΕΛ/ΛΑΚ, και δη στον πυρήνα Linux, επ’ ουδενί δε σημαίνει ότι ο κώδικας αυτός περνάει άμεσα στις τρέχουσες εκδόσεις του λογισμικού (σ.σ. αυτό προσπάθησαν να παρερμηνεύσουν οι δύο φοιτητές) ή ότι η επιθεώρησή του σταματάει εκεί.

Επιπλέον, ο κώδικας του πυρήνα αποτελείται από πολλαπλά «δέντρα» αλλά το τελικό αποτέλεσμα που δημιουργεί την κάθε έκδοση προκύπτει αποκλειστικά από ένα και μόνο «δέντρο», αφότου ολοκληρωθούν όλες οι σχετικές διαδικασίες. Αυτό προσθέτει επίπεδα στον τομέα της ασφάλειας.

Η ασφάλεια του λογισμικού, όπως πολύ σωστά έχουν τονίσει κατά καιρούς αρκετοί ειδικοί στον τομέα, δεν είναι ένα προϊόν ή μια στιγμιαία ενέργεια· είναι μια συνεχής διαδικασία. Στη συγκεκριμένη περίσταση, οι προγραμματιστές του πυρήνα Linux απλά επιβεβαίωσαν την καλή φήμη του(ς) αλλά και το πρακτικό αποτέλεσμα των διαδικασιών υπό τις οποίες αναπτύσσεται το ΕΛ/ΛΑΚ. Ευτυχώς, κάποιες ιστοσελίδες το διαπίστωσαν.

Ο πυρήνας Linux δεν είναι παιχνίδι

Η ιστορία συνεχίστηκε με δηλώσεις επί δηλώσεων, αναπαράχθηκε από διάφορες ιστοσελίδες και μεταφέρθηκε στα μέσα κοινωνικής δικτύωσης, ώσπου ο θόρυβος έφτασε στα αυτιά των επικεφαλής του Τμήματος Επιστήμης και Μηχανικής Υπολογιστών του πανεπιστημίου, οι οποίοι δημοσίευσαν μια επίσημη δήλωση όπου αναγνώριζαν τις αθέμιτες μεθόδους που ακολούθησε η έρευνα.

Μερικές ημέρες αργότερα, η τριμελής ομάδα που πραγματοποίησε την έρευνα ανάρτησε μια ανοιχτή επιστολή προς την κοινότητα του Linux, η οποία μοιάζει περισσότερο με απόπειρα να διασκεδάσουν τις εντυπώσεις παρά με απολογία. Αυτό ανάγκασε τον Kroah-Hartman να τους υπενθυμίσει την εμπλοκή του Linux Foundation, μέσω του οποίου οι προγραμματιστές του πυρήνα εξέφρασαν ένα και μοναδικό αίτημα:

Παρακαλούμε παρέχετε στο κοινό, με γρήγορο τρόπο, όλες τις απαραίτητες πληροφορίες για τον προσδιορισμό όλων των προτάσεων γνωστού ευάλωτου κώδικα από οποιοαδήποτε πείραμα του Πανεπιστημίου της Minnesota. Οι πληροφορίες πρέπει να περιλαμβάνουν το όνομα κάθε στοχευμένου λογισμικού, τις πληροφορίες των συνεισφορών, το όνομα του προτείνοντα, τη διεύθυνση ηλεκτρονικού ταχυδρομείου, την ημερομηνία/ώρα, το θέμα ή/και τον κώδικα, ούτως ώστε όλοι οι προγραμματιστές λογισμικού να μπορούν να εντοπίσουν γρήγορα αυτές τις προτάσεις και ενδεχομένως να λάβουν μέτρα αποκατάστασης για τέτοια πειράματα.

Το αίτημα αυτό δεν ήταν τίποτα περισσότερο από μια σύνοψη της ορθής διαδικασίας που ακολουθείται κατά την αναφορά ευπαθειών στο λογισμικό. Στο μεταξύ, οι προγραμματιστές του πυρήνα είχαν ήδη ξεκινήσει την επανεξέταση όλων των συνεισφορών από το Πανεπιστήμιο της Minnesota, από όπου προέκυψε ότι οι περισσότερες -πλην τριών που προέρχονταν από την «ερευνητική» ομάδα- έγιναν «καλή τη πίστει» και δεν περιείχαν κακόβουλο κώδικα.

Την τελευταία εβδομάδα του Απριλίου είχαμε την εκπλήρωση του παραπάνω αιτήματος με τη δημοσίευση όλων των σχετικών πληροφοριών (PDF) και, εφόσον ακολούθησε μια συζήτηση αλλά και το κείμενο της έρευνας αποσύρθηκε από το επερχόμενο «Συμπόσιο για την Ασφάλεια και την Ιδιωτικότητα» του IEEE όπου επρόκειτο να παρουσιαστεί, το θέμα φαίνεται να είναι λήξαν.

Κριτική κατόπιν εορτής, παραλογισμοί και συμπεράσματα

Περιέργως, ενώ οι προγραμματιστές του πυρήνα Linux προσπαθούσαν να προστατέψουν το έργο τους αλλά και το «όνομα» του ΕΛ/ΛΑΚ, η αξιαγάπητη κοινότητα δεν έδειξε την ίδια ομοθυμία. Ορισμένοι επέκριναν -κατόπιν εορτής- τη σφοδρότητα του αποκλεισμού ολόκληρου πανεπιστημίου από τη συνεισφορά (έστω και αν αυτός ήταν προσωρινός, όπως αποδείχτηκε) αλλά και τις πρακτικές που ακολουθούνται.

Για τις δεύτερες μπορείτε να ανατρέξετε παραπάνω στο κείμενο, οπότε δε θα επεκταθώ. Θα προσπαθήσω, όμως, να σας δώσω μια εναλλακτική οπτική στα γεγονότα.

Καταρχάς, είχαμε μια ομάδα φαινομενικά επιτιθέμενων, η οποία εμφάνισε χαρακτηριστικά «red teaming».1 Αυτοί παραβίασαν όλους τους σχετικούς κανόνες και απέφυγαν να ενημερώσουν τους προγραμματιστές για τις απόπειρές τους. Πέραν τούτου, δημοσιοποίησαν τμήμα της έρευνας στο Twitter και το πλήρες κείμενο αυτής είναι γεμάτο από ανυπόστατα συμπεράσματα. Ακόμα και αν δεχτούμε ότι είχαν αγνές προθέσεις, οι πράξεις τους δείχνουν το εντελώς αντίθετο.

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

Theodore Ts’o – προγραμματιστής πυρήνα Linux

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

Δε νομίζω ότι υπάρχει κάποιος που θα προτιμούσε να το συζητήσουν ενδελεχώς, επιμηκύνοντας έτσι τον χρόνο αντίδρασης ενώ παρέμενε πιθανό το ενδεχόμενο ύπαρξης κακόβουλου κώδικα στον πυρήνα. Υπενθυμίζω ότι η ταχύτητα απόκρισης σε τέτοιες περιπτώσεις είναι εξέχουσα ιδιότητα του ΕΛ/ΛΑΚ και -παρότι δεν είναι πάντα άρτια- η αποτελεσματικότητά της έχει διαπιστωθεί πέρα από κάθε αμφισβήτηση.

Με δεδομένο, δε, το γεγονός ότι από την τελευταία συζήτηση προκύπτει άγνοια των δύο φοιτητών για τα εργαλεία και τις διαδικασίες που χρησιμοποιούνται από τον πυρήνα Linux στον τομέα της ασφάλειας (το γνωστό αναληθές επιχείρημα ότι η ανοιχτότητα του λογισμικού επιφέρει κινδύνους) αλλά και το ότι κάνουν παράλογους ισχυρισμούς, όπως αυτός της προληπτικής επιδιόρθωσης bugs (πώς διορθώνεται ένα bug το οποίο δεν υπάρχει καν;), μάλλον η όλη έρευνα ήταν και αστεία, εκτός από αθέμιτη.

Αν μπορούμε να κρατήσουμε κάτι από την όλη υπόθεση, θεωρώ ότι αυτό είναι το γεγονός πως τα γρανάζια του πυρήνα Linux παραμένουν καλολαδωμένα και η διαδικασία της ασφάλειας που κληρονόμησε από το ΕΛ/ΛΑΚ εξακολουθεί να αντέχει στις προκλήσεις εδώ και τρεις ολόκληρες δεκαετίες. Μπορεί η τελειότητα να είναι ουτοπική μα, ευτυχώς για εμάς, οι κακόβουλοι παράγοντες έχουν να αντιμετωπίσουν σοβαρούς προγραμματιστές και την οργή του καραφλού γίγαντα Greg Kroah-Hartman.

Πηγή άρθρου: https://osarena.net/

Leave a Comment