Το FreeBSD 13 παραλίγο να καταλήξει με μια τυχαία εφαρμογή του WireGuard με παραβιάσεις αδειών και ευπάθειες

Από τη βάση κώδικα στην οποία δημιουργήθηκε η έκδοση του FreeBSD 13, ο κώδικας που υλοποιεί το πρωτόκολλο WireGuard VPN, που αναπτύχθηκε κατόπιν παραγγελίας της Netgate χωρίς συνεννόηση με τους προγραμματιστές του αρχικού WireGuard, και περιλαμβάνεται ήδη στις σταθερές εκδόσεις της διανομής pfSense, ήταν σκανδαλωδώς αφαιρέθηκε. Μετά από ανασκόπηση κώδικα από τον Jason A. Donenfeld, τον συγγραφέα του αρχικού WireGuard, αποδείχθηκε ότι η προτεινόμενη εφαρμογή του WireGuard από το FreeBSD ήταν ένα κομμάτι κακού κώδικα, γεμάτο με υπερχείλιση buffer και παραβίαση της GPL.

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

Ορισμένα τμήματα του κώδικα, όπως η συνάρτηση crypto_xor, μεταφέρθηκαν από την εφαρμογή WireGuard που αναπτύχθηκε για Linux, κατά παράβαση της άδειας GPL. Ως αποτέλεσμα, ο Jason Donenfield, μαζί με τον Kyle Evans και τον Matt Dunwoodie (συγγραφέας της θύρας WireGuard για το OpenBSD), ανέλαβαν να επεξεργαστούν ξανά την προβληματική υλοποίηση και, μέσα σε μια εβδομάδα, αντικατέστησαν πλήρως όλο τον κώδικα του προγραμματιστή που προσέλαβε η Netgate. . Η τροποποιημένη έκδοση κυκλοφόρησε ως ξεχωριστό σύνολο ενημερώσεων κώδικα, τοποθετήθηκε στο αποθετήριο του έργου WireGuard και δεν έχει συμπεριληφθεί ακόμη στο FreeBSD.

Είναι ενδιαφέρον ότι αρχικά δεν υπήρχαν ενδείξεις προβλημάτων· η Netgate, η οποία ήθελε να μπορεί να χρησιμοποιήσει το WireGuard στη διανομή pfSense, προσέλαβε τον Matthew Macy, ο οποίος γνωρίζει καλά τον πυρήνα του FreeBSD και τη στοίβα δικτύου, ασχολείται με επιδιορθώσεις σφαλμάτων και έχει εμπειρία στην ανάπτυξη προγράμματα οδήγησης δικτύου για αυτό το λειτουργικό σύστημα. Η Macy έλαβε ένα ευέλικτο πρόγραμμα χωρίς προθεσμίες ή ενδιάμεσους ελέγχους. Οι προγραμματιστές που γνώρισαν τον Macy ενώ εργάζονταν στο FreeBSD τον περιέγραψαν ως έναν ταλαντούχο και επαγγελματία προγραμματιστή που δεν έκανε περισσότερα λάθη από άλλους και ανταποκρίθηκε επαρκώς στην κριτική. Η κακή ποιότητα του κώδικα υλοποίησης του WireGuard για το FreeBSD τους εξέπληξε.

Μετά από 9 μήνες εργασίας, ο Macy πρόσθεσε την υλοποίησή του στον κλάδο HEAD, ο οποίος χρησιμοποιήθηκε για τη διαμόρφωση της έκδοσης του FreeBSD 13, τον περασμένο Δεκέμβριο χωρίς την ολοκλήρωση της αξιολόγησης και της δοκιμής από ομοτίμους. Η ανάπτυξη έγινε χωρίς επικοινωνία με τους προγραμματιστές του αρχικού WireGuard και το Θύρες OpenBSD και NetBSD. Τον Φεβρουάριο, η Netgate ενσωμάτωσε το WireGuard στη σταθερή έκδοση του pfSense 2.5.0 και άρχισε να στέλνει τείχη προστασίας με βάση αυτό. Αφού εντοπίστηκαν προβλήματα, ο κωδικός WireGuard αφαιρέθηκε από το pfSense.

Ο προστιθέμενος κώδικας αποκάλυψε κρίσιμα τρωτά σημεία που χρησιμοποιήθηκαν σε εκμεταλλεύσεις 0 ημερών, αλλά στην αρχή η Netgate δεν αναγνώρισε την ύπαρξη τρωτών σημείων και προσπάθησε να κατηγορήσει τον προγραμματιστή του αρχικού WireGuard για επιθέσεις και προκατάληψη, γεγονός που επηρέασε αρνητικά τη φήμη του. Ο προγραμματιστής της θύρας αρχικά απέρριψε ισχυρισμούς σχετικά με την ποιότητα του κώδικα και τους θεώρησε υπερβολικούς, αλλά αφού έδειξε σφάλματα, επέστησε την προσοχή στο γεγονός ότι το πραγματικά σημαντικό πρόβλημα είναι η έλλειψη σωστής αναθεώρησης της ποιότητας του κώδικα στο FreeBSD, επειδή τα προβλήματα παρέμειναν απαρατήρητα για πολλούς μήνες (Οι εκπρόσωποι του Netgate ανέφεραν ότι η αναθεώρηση κυκλοφόρησε δημόσια τον Αύγουστο του 2020, αλλά μεμονωμένοι προγραμματιστές του FreeBSD σημείωσαν ότι στο Phabricator η αναθεώρηση έκλεισε από τον Macy χωρίς να ολοκληρωθεί και τα σχόλια αγνοήθηκαν). Η βασική ομάδα του FreeBSD απάντησε στο περιστατικό υποσχόμενος να εκσυγχρονίσει τις διαδικασίες αναθεώρησης κώδικα.

Ο Matthew Macy, ο προγραμματιστής της προβληματικής θύρας FreeBSD, σχολίασε την κατάσταση λέγοντας ότι έκανε μεγάλο λάθος αναλαμβάνοντας τη δουλειά χωρίς να είναι έτοιμος να υλοποιήσει το έργο. Η Macy εξηγεί το αποτέλεσμα που προκύπτει από τη συναισθηματική εξάντληση και το αποτέλεσμα των προβλημάτων που προέκυψαν λόγω του συνδρόμου μετά την Covid. Παράλληλα, ο Μέισι δεν βρήκε την αποφασιστικότητα να εγκαταλείψει τις υποχρεώσεις που είχε ήδη αναλάβει και προσπάθησε να φέρει το έργο στην ολοκλήρωση.

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

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο