Δυναμικός φορτωτής , το οποίο αποτελεί μέρος του OpenBSD, μπορεί, υπό ορισμένες συνθήκες, -εφαρμογές για να εγκαταλείψουν τη μεταβλητή περιβάλλοντος LD_LIBRARY_PATH και έτσι να επιτρέψουν τη φόρτωση κώδικα τρίτων στο πλαίσιο μιας διεργασίας που εκτελείται με αυξημένα δικαιώματα. Διατίθενται ενημερώσεις κώδικα που διορθώνουν την ευπάθεια για τις εκδόσεις. и Δυαδικά patches () για τις πλατφόρμες amd64, i386 και arm64 βρίσκονται ήδη σε παραγωγή και θα πρέπει να είναι διαθέσιμα για λήψη μέχρι τη δημοσίευση αυτής της είδησης.
Η ουσία του προβλήματος: κατά τη λειτουργία του, το ld.so εξάγει πρώτα την τιμή της μεταβλητής LD_LIBRARY_PATH από το περιβάλλον και, χρησιμοποιώντας τη συνάρτηση _dl_split_path() την μετατρέπει σε έναν πίνακα συμβολοσειρών — διαδρομές προς καταλόγους. Εάν αργότερα αποδειχθεί ότι η τρέχουσα διεργασία ξεκινά από μια εφαρμογή SUID/SGID, τότε ο δημιουργημένος πίνακας και, στην πραγματικότητα, η μεταβλητή LD_LIBRARY_PATH διαγράφονται. Ταυτόχρονα, εάν κατά τη λειτουργία του το _dl_split_path() αντιμετωπίσει έλλειψη μνήμης (κάτι που είναι δύσκολο λόγω της ύπαρξης ενός σαφούς περιορισμού στο μέγεθος των μεταβλητών περιβάλλοντος των 256 KB, αλλά θεωρητικά δυνατό), τότε η μεταβλητή _dl_libpath θα λάβει την τιμή NULL και ο επακόλουθος έλεγχος της τιμής αυτής της μεταβλητής θα αναγκάσει την κλήση στο _dl_unsetenv(«LD_LIBRARY_PATH») να παραλειφθεί.
Εντοπίστηκε ευπάθεια από ειδικούς , ακριβώς όπως προβλήματα. Οι ερευνητές ασφαλείας που εντόπισαν την ευπάθεια σημείωσαν την ταχύτητα με την οποία επιλύθηκε το πρόβλημα: ετοιμάστηκε μια ενημέρωση κώδικα και κυκλοφόρησαν ενημερώσεις εντός τριών ωρών από την παραλαβή της ειδοποίησης από το έργο OpenBSD.
Συμπλήρωμα: Στο πρόβλημα έχει αντιστοιχιστεί ένας αριθμός Η λίστα αλληλογραφίας oss-security έχει δημιουργήσει , το οποίο περιλαμβάνει ένα πρωτότυπο exploit που λειτουργεί σε αρχιτεκτονικές OpenBSD 6.6, 6.5, 6.2 και 6.1
amd64 και i386 (το exploit μπορεί να προσαρμοστεί για άλλες αρχιτεκτονικές).
Το πρόβλημα είναι εκμεταλλεύσιμο σε μια προεπιλεγμένη εγκατάσταση και επιτρέπει σε έναν τοπικό χρήστη χωρίς δικαιώματα να εκτελέσει κώδικα με δικαιώματα root μέσω αντικατάστασης βιβλιοθήκης κατά την εκτέλεση των βοηθητικών προγραμμάτων suid chpass ή passwd. Το όριο RLIMIT_DATA ορίζεται μέσω setrlimit για να δημιουργήσει τις συνθήκες χαμηλής μνήμης που είναι απαραίτητες για την εκμετάλλευση.
Πηγή: opennet.ru
