Το Glibc περιλαμβάνει μια επιδιόρθωση για την ευπάθεια memcpy που προετοιμάστηκε από τους προγραμματιστές του Aurora OS

Οι προγραμματιστές του λειτουργικού συστήματος Aurora για κινητά (ένα πιρούνι του λειτουργικού συστήματος Sailfish που αναπτύχθηκε από την εταιρεία Open Mobile Platform) μοιράστηκαν μια αποκαλυπτική ιστορία για την εξάλειψη κρίσιμη ευπάθεια (CVE-2020-6096) στο Glibc, το οποίο εμφανίζεται μόνο στην πλατφόρμα ARMv7. Πληροφορίες σχετικά με την ευπάθεια είχαν αποκαλυφθεί τον Μάιο, αλλά μέχρι τις τελευταίες ημέρες δεν υπήρχαν διαθέσιμες επιδιορθώσεις, παρά το γεγονός ότι τα τρωτά σημεία ανατεθεί ένα υψηλό επίπεδο κινδύνου και υπάρχει ένα λειτουργικό πρωτότυπο ενός exploit που σας επιτρέπει να οργανώσετε την εκτέλεση κώδικα κατά την επεξεργασία δεδομένων που έχουν διαμορφωθεί με συγκεκριμένο τρόπο στις συναρτήσεις memcpy() και memmove(). Διορθώσεις πακέτων για Debian и Ubuntu δεν έχουν ακόμη κυκλοφορήσει και το θέμα ευπάθειας παραμένει ανεπίλυτο για σχεδόν δύο μήνες από τη στιγμή της δημόσιας αποκάλυψης και πέντε μήνες από τη στιγμή που ειδοποιήθηκαν οι προγραμματιστές του Glibc.

Η ευπάθεια εκδηλώθηκε στην υλοποίηση των memcpy() και memmove() στη γλώσσα συναρμολόγησης για το ARMv7 και προκλήθηκε από εσφαλμένη επεξεργασία αρνητικών τιμών της παραμέτρου που καθορίζει το μέγεθος της αντιγραμμένης περιοχής. Τα προβλήματα με την ανάπτυξη ενημερώσεων κώδικα ξεκίνησαν όταν οι εταιρείες SUSE и Red Hat ανακοίνωσε ότι οι πλατφόρμες τους δεν επηρεάζονται από το πρόβλημα, καθώς δεν δημιουργούνται για συστήματα ARMv32 7-bit και δεν συμμετείχαν στη δημιουργία μιας επιδιόρθωσης. Οι προγραμματιστές πολλών ενσωματωμένων διανομών φαίνεται ότι βασίστηκαν στην ομάδα του Glibc και επίσης δεν συμμετείχαν ενεργά στην προετοιμασία της επιδιόρθωσης.

Επιλογή κηλίδα Για να αποκλείσει το πρόβλημα, η Huawei σχεδόν αμέσως πρότεινε να προσπαθήσει να αντικαταστήσει τις οδηγίες συναρμολόγησης που λειτουργούν με υπογεγραμμένους τελεστές (bge και blt) με ανυπόγραφα ανάλογα (blo και bhs). Οι συντηρητές του Glibc ανέπτυξαν ένα σύνολο δοκιμών για τον έλεγχο διαφόρων συνθηκών σφάλματος, μετά από τις οποίες αποδείχθηκε ότι η ενημερωμένη έκδοση κώδικα Huawei δεν ήταν κατάλληλη και δεν επεξεργάστηκε όλους τους πιθανούς συνδυασμούς δεδομένων εισόδου.

Δεδομένου ότι το Aurora OS διαθέτει έκδοση 32-bit για το ARM, οι προγραμματιστές του αποφάσισαν να κλείσουν την ευπάθεια μόνοι τους και να προσφέρουν μια λύση στην κοινότητα. Η δυσκολία ήταν ότι ήταν απαραίτητο να γραφτεί μια αποτελεσματική υλοποίηση της συνάρτησης σε γλώσσα assembly και να ληφθούν υπόψη διάφορες επιλογές για ορίσματα εισόδου. Η υλοποίηση έχει ξαναγραφεί χρησιμοποιώντας ανυπόγραφες οδηγίες. Εμπλοκή Αποδείχθηκε μικρό, αλλά το κύριο πρόβλημα ήταν η διατήρηση της ταχύτητας εκτέλεσης και η αποφυγή υποβάθμισης της απόδοσης των λειτουργιών memcpy και memmove, διατηρώντας παράλληλα τη συμβατότητα με όλους τους συνδυασμούς τιμών εισόδου.

Στις αρχές Ιουνίου, ετοιμάστηκαν δύο εκδόσεις της επιδιόρθωσης, περνώντας το πλαίσιο δοκιμής των συντηρητών Glibc και την εσωτερική δοκιμαστική σουίτα της Aurora. Στις 3 Ιουνίου επιλέχθηκε μία από τις επιλογές και Απεσταλμένα στη λίστα αλληλογραφίας Glibc. Μια εβδομάδα αργότερα
ήταν προτείνεται μια άλλη ενημέρωση κώδικα παρόμοιας προσέγγισης, η οποία διόρθωσε ένα πρόβλημα στην εφαρμογή πολλαπλών αρχών, το οποίο η Huawei είχε προσπαθήσει προηγουμένως να διορθώσει. Η δοκιμή κράτησε ένα μήνα και νομική εγγραφή λόγω της σημασίας του επιθέματος.
Διορθώσεις 8 Ιουλίου έγιναν δεκτές στον κύριο κλάδο της επερχόμενης έκδοσης glibc 2.32. Η υλοποίηση περιλαμβάνει δύο ενημερώσεις κώδικα − πρώτα για την πολυαρχική υλοποίηση του memcpy για το ARMv7 και δεύτερος για την εφαρμογή της γλώσσας γενικής συνέλευσης των memcpy() και memmove() για ARM.

Το πρόβλημα επηρεάζει εκατομμύρια συσκευές ARMv7 που εκτελούν Linux και χωρίς την κατάλληλη ενημέρωση, οι ιδιοκτήτες κινδυνεύουν κατά τη σύνδεσή τους στο δίκτυο (υπηρεσίες προσβάσιμες από το δίκτυο και εφαρμογές που δέχονται δεδομένα εισόδου χωρίς περιορισμούς μεγέθους μπορεί να υποστούν επίθεση). Για παράδειγμα, το exploit που ετοίμασαν οι ερευνητές που εντόπισαν την ευπάθεια δείχνει πώς να επιτεθεί ένας διακομιστής HTTP που είναι ενσωματωμένος σε ένα σύστημα πληροφοριών αυτοκινήτου στέλνοντας ένα πολύ μεγάλο αίτημα GET και αποκτώντας πρόσβαση root στο σύστημα.

Πηγή: opennet.ru

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