Ευπάθεια στο zlib που εμφανίζεται κατά τη συμπίεση ειδικά σχεδιασμένων δεδομένων

Εντοπίστηκε μια ευπάθεια (CVE-2018-25032) στη βιβλιοθήκη zlib, η οποία οδηγεί σε υπερχείλιση buffer κατά την προσπάθεια συμπίεσης μιας ειδικά προετοιμασμένης ακολουθίας χαρακτήρων στα εισερχόμενα δεδομένα. Στην τρέχουσα μορφή της, οι ερευνητές έχουν αποδείξει την ικανότητα να προκαλούν τον ασυνήθιστο τερματισμό μιας διαδικασίας. Το εάν το πρόβλημα θα μπορούσε να έχει πιο σοβαρές συνέπειες δεν έχει ακόμη μελετηθεί.

Η ευπάθεια εμφανίζεται ξεκινώντας από την έκδοση zlib 1.2.2.2 και επηρεάζει επίσης την τρέχουσα έκδοση του zlib 1.2.11. Αξίζει να σημειωθεί ότι μια ενημέρωση κώδικα για τη διόρθωση της ευπάθειας είχε προταθεί το 2018, αλλά οι προγραμματιστές δεν έδωσαν σημασία σε αυτό και δεν κυκλοφόρησαν διορθωτική έκδοση (η βιβλιοθήκη zlib ενημερώθηκε τελευταία φορά το 2017). Η επιδιόρθωση επίσης δεν περιλαμβάνεται ακόμη στα πακέτα που προσφέρουν οι διανομές. Μπορείτε να παρακολουθείτε τη δημοσίευση διορθώσεων ανά διανομές σε αυτές τις σελίδες: Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux, OpenBSD, FreeBSD, NetBSD. Η βιβλιοθήκη zlib-ng δεν επηρεάζεται από το πρόβλημα.

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

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

Δεν είναι ακόμη σαφές εάν οι συνθήκες για την εκμετάλλευση της ευπάθειας μπορούν να επιλεγούν χρησιμοποιώντας την προεπιλεγμένη στρατηγική συμπίεσης Z_DEFAULT_STRATEGY. Εάν όχι, τότε η ευπάθεια θα περιοριστεί σε ορισμένα συγκεκριμένα συστήματα που χρησιμοποιούν ρητά την επιλογή Z_FIXED. Αν ναι, τότε η ζημιά από την ευπάθεια θα μπορούσε να είναι πολύ σημαντική, καθώς η βιβλιοθήκη zlib είναι ένα de facto πρότυπο και χρησιμοποιείται σε πολλά δημοφιλή έργα, συμπεριλαμβανομένου του πυρήνα Linux, OpenSSH, OpenSSL, apache httpd, libpng, FFmpeg, rsync, dpkg , rpm, Git , PostgreSQL, MySQL, κ.λπ.

Πηγή: opennet.ru

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