Πρόσφατα ανακοινώθηκε η κυκλοφορία της νέας έκδοσης του Glibc 2.34 που έρχεται μετά από έξι μήνες ανάπτυξης και στις οποίες έχουν πραγματοποιηθεί αρκετές σημαντικές αλλαγές, μεταξύ των οποίων η συμπερίληψη των βιβλιοθηκών libpthread, libdl, libutil και libanl, καθώς και διάφορες διορθώσεις σφαλμάτων, εκ των οποίων μία από αυτές προκάλεσε μπλοκάρισμα.
Για όσους δεν είναι εξοικειωμένοι με το Glibc, θα πρέπει να γνωρίζουν τι είναι μια βιβλιοθήκη GNU C, κοινώς γνωστή ως glibc είναι η τυπική βιβλιοθήκη χρόνου εκτέλεσης GNU C. Σε συστήματα όπου χρησιμοποιείται, αυτή η βιβλιοθήκη C που παρέχει και καθορίζει κλήσεις συστήματος και άλλες βασικές λειτουργίες, χρησιμοποιείται σχεδόν από όλα τα προγράμματα.
Κύρια νέα χαρακτηριστικά του Glibc 2.34
Σε αυτή τη νέα έκδοση του Glibc 2.34 που παρουσιάζεται libpthread, libdl, libutil και libanl έχουν ενσωματωθεί στην κύρια βιβλιοθήκη, η χρήση της λειτουργικότητάς του σε εφαρμογές δεν απαιτεί πλέον τη σύνδεσή τους με τις σημαίες -lpthread, -ldl, -lutil και -lanl.
Επιπλέον, αναφέρεται ότι έχουν γίνει προετοιμασίες για την ενσωμάτωση του libreolv στο libc, με την οποία η ολοκλήρωση θα επιτρέψει μια ομαλότερη διαδικασία ενημέρωσης glibc και θα απλοποιήσει την εκτέλεση χρόνου εκτέλεσης και έχουν επίσης παρασχεθεί βιβλιοθήκες stub για συμβατότητα με εφαρμογές που έχουν δημιουργηθεί με παλαιότερες εκδόσεις του glibc.
Από την πλευρά των αλλαγών επικεντρώθηκε στο Linux Το Glibc 2.34 επισημαίνει το πρόσθετη δυνατότητα χρήσης τύπου bit_ time 64 σε ρυθμίσεις παραμέτρων που παραδοσιακά χρησιμοποιούσε τον τύπο time_t 32 bit. Αυτή η δυνατότητα είναι διαθέσιμη μόνο σε συστήματα με πυρήνα 5.1 και νεότερο.
Μια άλλη συγκεκριμένη αλλαγή για το Linux είναι το εφαρμογή της συνάρτησης execveatΌτι επιτρέπει την εκτέλεση εκτελέσιμου αρχείου από έναν περιγραφέα ανοιχτού αρχείου. Η νέα λειτουργία χρησιμοποιείται επίσης στην εφαρμογή της κλήσης fexecve, η οποία δεν απαιτεί την εγκατάσταση του ψευδο-αρχείου / proc κατά την εκκίνηση.
Η λειτουργία προστέθηκε επίσης close_range () που είναι διαθέσιμο για εκδόσεις Linux 5.9 και υψηλότερα και ποια μπορεί να είναι χρησιμοποιείται για να επιτρέψει σε μια διαδικασία να κλείσει ένα πλήρες φάσμα περιγραφών αρχείων ανοίγει ταυτόχρονα, επιπλέον υλοποιείται η παράμετρος glibc.pthread.stack_cache_size, η οποία μπορεί να χρησιμοποιηθεί για να προσαρμόσει το μέγεθος της προσωρινής μνήμης στοίβας pthread.
Επιπλέον, προστέθηκε η λειτουργία _Fork, μια αντικατάσταση για λειτουργία πιρούνι που πληροί τις απαιτήσεις του "async-signal-safe", δηλαδή μπορεί να κληθεί με ασφάλεια από τους χειριστές σήματος. Κατά τη διάρκεια της εκτέλεσης _Fork, σχηματίζεται ένα ελάχιστο περιβάλλον, αρκετό για να καλέσει συναρτήσεις σε χειριστές σημάτων όπως αύξηση και εκτέλεση, χωρίς να επικαλεστεί χαρακτηριστικά που μπορούν να αλλάξουν κλειδαριές ή εσωτερική κατάσταση.
Για το τμήμα των τρωτών σημείων που καθορίζονται στο Glibc 2.34, αναφέρονται τα ακόλουθα:
CVE-2021-27645: Η διαδικασία nscd (διακομιστής ονόματος διακομιστή κρυφής μνήμης) απέτυχε λόγω διπλής κλήσης στην ελεύθερη λειτουργία κατά την επεξεργασία αιτημάτων ομάδας δικτύου ειδικά κατασκευασμένων.
CVE-2021-33574: πρόσβαση σε μια περιοχή μνήμης που έχει ήδη απελευθερωθεί (χωρίς χρήση) στη λειτουργία mq_notify όταν χρησιμοποιείτε τον τύπο ειδοποίησης SIGEV_THREAD με χαρακτηριστικό νήματος για το οποίο έχει οριστεί μια εναλλακτική μάσκα σύνδεσης CPU. Το πρόβλημα μπορεί να προκαλέσει συντριβή, αλλά δεν αποκλείονται άλλες επιλογές επίθεσης.
CVE-2021-35942: Η υπερχείλιση μεγέθους παραμέτρων στη λειτουργία wordexp θα μπορούσε να διακόψει την εφαρμογή.
Από τις άλλες αλλαγές που ξεχωρίζουν:
- Η συνάρτηση timespec_getres, που ορίζεται στο πρόχειρο πρότυπο ISO C2X, έχει προστεθεί και η λειτουργία timespec_get έχει αυξηθεί με δυνατότητες παρόμοιες με τη συνάρτηση clock_getres POSIX.
- Στο αρχείο gconv-modules, παρέμεινε μόνο ένα ελάχιστο σύνολο κύριων μονάδων gconv και τα υπόλοιπα μεταφέρθηκαν σε ένα πρόσθετο αρχείο gconv-modules-extra.conf που βρίσκεται στον κατάλογο gconv-modules.d.
- Η χρήση συμβολικών συνδέσμων για τη σύνδεση κοινόχρηστων αντικειμένων με δυνατότητα εγκατάστασης στην έκδοση Glibc έχει καταργηθεί. Αυτά τα αντικείμενα είναι πλέον εγκατεστημένα ως έχουν (π.χ. το libc.so.6 είναι πλέον αρχείο και όχι σύνδεσμος προς libc-2.34.so).
- Στο Linux, λειτουργίες όπως το shm_open και το sem_open απαιτούν πλέον ένα σύστημα αρχείων για την κοινή μνήμη που είναι τοποθετημένη στο σημείο σύνδεσης / dev / shm.
Τελικά αν ενδιαφέρεστε να μάθετε περισσότερα γι 'αυτό αυτής της νέας έκδοσης, μπορείτε να ελέγξετε το λεπτομέρειες στον παρακάτω σύνδεσμο.