Ευπάθεια στο Glibc ld.so, το οποίο σας επιτρέπει να αποκτήσετε δικαιώματα root στο σύστημα

Η Qualys εντόπισε μια επικίνδυνη ευπάθεια (CVE-2023-4911) στον σύνδεσμο ld.so, που παρέχεται ως μέρος της βιβλιοθήκης του συστήματος Glibc C (GNU libc). Η ευπάθεια επιτρέπει σε έναν τοπικό χρήστη να αυξήσει τα προνόμιά του στο σύστημα καθορίζοντας ειδικά διαμορφωμένα δεδομένα στη μεταβλητή περιβάλλοντος GLIBC_TUNABLES πριν εκτελέσει ένα εκτελέσιμο αρχείο με τη σημαία ρίζας suid, για παράδειγμα, /usr/bin/su.

Η ικανότητα επιτυχούς εκμετάλλευσης της ευπάθειας έχει αποδειχθεί στα Fedora 37 και 38, Ubuntu 22.04 και 23.04, Debian 12 και 13. Υποτίθεται ότι η ευπάθεια θα εμφανίζεται επίσης σε οποιεσδήποτε άλλες διανομές που χρησιμοποιούν Glibc. Οι διανομές που βασίζονται στη βιβλιοθήκη του συστήματος Musl C, όπως το Alpine Linux, δεν επηρεάζονται από το πρόβλημα. Η ευπάθεια επιδιορθώθηκε σε μια ενημέρωση κώδικα που προστέθηκε στις 2 Οκτωβρίου. Μπορείτε να παρακολουθείτε την κυκλοφορία ενημερώσεων πακέτων σε διανομές στις σελίδες των Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, Gentoo, ALT Linux.

Η ευπάθεια οφείλεται σε μια αλλαγή που έγινε τον Απρίλιο του 2021 ως μέρος της έκδοσης glibc 2.34. Λόγω ενός σφάλματος στον κώδικα ανάλυσης συμβολοσειρών που καθορίζεται στη μεταβλητή περιβάλλοντος GLIBC_TUNABLES, ένας εσφαλμένος συνδυασμός παραμέτρων σε αυτήν τη μεταβλητή οδηγεί στην εγγραφή της αναλυμένης τιμής πέρα ​​από το εκχωρημένο buffer. Το πρόβλημα εκδηλώνεται όταν, αντί για τις τυπικές ακολουθίες "name=val", οι παράμετροι καθορίζονται στη φόρμα με διπλή ανάθεση "name=name=val". Σε αυτήν την περίπτωση, η ανάθεση υποβάλλεται σε επεξεργασία δύο φορές, πρώτα ως "όνομα=όνομα=val" και μετά ως "όνομα=val". Αυτή η διπλή επεξεργασία παράγει το αποτέλεσμα "name=name=val:name=val" που είναι μεγαλύτερο από το μέγεθος buffer tunestr.

Οι ερευνητές έχουν ετοιμάσει ένα σταθερό exploit που σας επιτρέπει να αποκτήσετε δικαιώματα root όταν χρησιμοποιείται με σχεδόν οποιοδήποτε πρόγραμμα με τη σημαία suid root. Οι εξαιρέσεις είναι το βοηθητικό πρόγραμμα sudo (αλλάζει την τιμή ELF RUNPATH), τα βοηθητικά προγράμματα chage και passwd στο Fedora (προστατεύονται από ξεχωριστούς κανόνες SELinux) και το βοηθητικό πρόγραμμα snap-confine στο Ubuntu (προστατεύεται από ξεχωριστούς κανόνες AppArmor). Η προτεινόμενη μέθοδος εκμετάλλευσης επίσης δεν λειτουργεί σε RHEL 8 και RHEL 9, αν και αυτοί οι κλάδοι είναι ευαίσθητοι σε τρωτά σημεία (μια επίθεση απαιτεί τη δημιουργία ενός άλλου exploit). Ο κώδικας εκμετάλλευσης θα δημοσιευθεί αργότερα αφού επιδιορθωθεί παντού η ευπάθεια. Μπορείτε να ελέγξετε την ευπάθεια του συστήματός σας στην ευπάθεια χρησιμοποιώντας την ακόλουθη εντολή, η οποία θα διακοπεί εάν υπάρχει πρόβλημα: env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1'" /usr/bin/su --help

Ξεχωριστά, σημειώνεται η εξάλειψη δύο ακόμη τρωτών σημείων στο Glibc:

  • CVE-2023-4806 – χρήση μετά τη δωρεάν πρόσβαση στη μνήμη στη συνάρτηση getaddrinfo(), η οποία πραγματοποιείται όταν το πρόσθετο NSS υλοποιεί μόνο τις επιστροφές κλήσης «_gethostbyname2_r» και «_getcanonname_r», αλλά δεν υποστηρίζει το « _gethostbyname3_r». Για να εκμεταλλευτεί την ευπάθεια, ο διακομιστής DNS πρέπει να επιστρέψει έναν μεγάλο αριθμό διευθύνσεων IPv6 και IPv4 για τον αιτούμενο κεντρικό υπολογιστή, κάτι που θα οδηγήσει στη διακοπή της λειτουργίας της διαδικασίας που κάλεσε τη συνάρτηση getaddrinfo για την οικογένεια AF_INET6 όταν οι σημαίες AI_CANONNAME, AI_ALL και AI_V4MAPPED είναι σειρά.
  • CVE-2023-5156 – Παρουσιάζεται διαρροή μνήμης όταν καλείται η συνάρτηση getaddrinfo για την οικογένεια διευθύνσεων AF_INET6 με καθορισμένες σημαίες AI_CANONNAME, AI_ALL και AI_V4MAPPED.

Πηγή: opennet.ru

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