Ευπάθεια στο ld.so OpenBSD

Δυναμικός φορτωτής ld.so, που περιλαμβάνεται στο OpenBSD, μπορεί, υπό ορισμένες προϋποθέσεις, SUID/SGID- οι εφαρμογές εγκαταλείπουν τη μεταβλητή περιβάλλοντος LD_LIBRARY_PATH και έτσι επιτρέπουν τη φόρτωση κώδικα τρίτων στο πλαίσιο μιας διαδικασίας που εκτελείται με αυξημένα δικαιώματα. Οι ενημερώσεις κώδικα που διορθώνουν την ευπάθεια είναι διαθέσιμες για εκδόσεις 6.5 и 6.6. Δυαδικές ενημερώσεις κώδικα (syspatch) για τις πλατφόρμες 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").

Ευπάθεια που εντοπίστηκε από ειδικούς του Qualy, καθώς αρκετά που αποκαλύφθηκαν προηγουμένως προβλήματα. Οι ερευνητές ασφαλείας που εντόπισαν την ευπάθεια παρατήρησαν πόσο γρήγορα επιλύθηκε το πρόβλημα: ετοιμάστηκε μια ενημέρωση κώδικα και κυκλοφόρησαν ενημερώσεις εντός τριών ωρών από τη λήψη της ειδοποίησης του έργου OpenBSD.

Προσθήκη: Στο πρόβλημα έχει εκχωρηθεί ένας αριθμός CVE-2019-19726. Κατασκευάστηκε στη λίστα αλληλογραφίας oss-security επίσημη ανακοίνωση, συμπεριλαμβανομένου ενός πρωτότυπου exploit που εκτελείται σε αρχιτεκτονικές OpenBSD 6.6, 6.5, 6.2 και 6.1
amd64 και i386 (το exploit μπορεί να προσαρμοστεί για άλλες αρχιτεκτονικές).
Το ζήτημα είναι εκμεταλλεύσιμο στην προεπιλεγμένη εγκατάσταση και επιτρέπει σε έναν μη προνομιούχο τοπικό χρήστη να εκτελεί κώδικα ως root μέσω αντικατάστασης βιβλιοθήκης κατά την εκτέλεση των βοηθητικών προγραμμάτων chpass ή passwd suid. Για να δημιουργήσετε τις συνθήκες χαμηλής μνήμης που είναι απαραίτητες για τη λειτουργία, ορίστε το όριο RLIMIT_DATA μέσω του setrlimit.

Πηγή: opennet.ru

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