Έκδοση βιβλιοθήκης συστήματος Glibc 2.34

Μετά από έξι μήνες ανάπτυξης, κυκλοφόρησε η βιβλιοθήκη συστήματος GNU C Library (glibc) 2.34, η οποία συμμορφώνεται πλήρως με τις απαιτήσεις των προτύπων ISO C11 και POSIX.1-2017. Η νέα έκδοση περιλαμβάνει διορθώσεις από 66 προγραμματιστές.

Μερικές από τις βελτιώσεις που εφαρμόστηκαν στο Glibc 2.34 περιλαμβάνουν:

  • Οι βιβλιοθήκες libpthread, libdl, libutil και libanl είναι ενσωματωμένες στην κύρια δομή libc, η χρήση της λειτουργικότητάς τους σε εφαρμογές δεν απαιτεί πλέον σύνδεση με χρήση των σημαιών -lpthread, -ldl, -lutil και -lanl. Έχουν γίνει προετοιμασίες για την ενσωμάτωση του libresolv στο libc. Η ενσωμάτωση θα επιτρέψει μια πιο απρόσκοπτη διαδικασία ενημέρωσης glibc και θα απλοποιήσει την υλοποίηση του χρόνου εκτέλεσης. Οι βιβλιοθήκες Stub παρέχονται για να παρέχουν συμβατότητα προς τα πίσω με εφαρμογές που έχουν δημιουργηθεί με παλαιότερες εκδόσεις του glibc. Λόγω της επέκτασης του αριθμού των δομών και των συναρτήσεων που παρέχονται στο glibc, ενδέχεται να προκύψουν προβλήματα σε εφαρμογές στις οποίες υπάρχει μια διασταύρωση ονομάτων με βιβλιοθήκες libpthread, libdl, libutil, libresolv και libanl που δεν χρησιμοποιήθηκαν προηγουμένως.
  • Παρέχει τη δυνατότητα χρήσης ενός τύπου time_t 64 bit σε διαμορφώσεις που χρησιμοποιούσαν παραδοσιακά έναν τύπο time_t 32 bit. Σε τέτοιες διαμορφώσεις, για παράδειγμα σε συστήματα x86, η προεπιλογή εξακολουθεί να είναι 32-bit time_t, αλλά αυτή η συμπεριφορά μπορεί τώρα να αλλάξει χρησιμοποιώντας τη μακροεντολή "_TIME_BITS". Αυτή η δυνατότητα είναι διαθέσιμη μόνο σε συστήματα με τουλάχιστον έκδοση 5.1 πυρήνα Linux.
  • Προστέθηκε η λειτουργία _Fork, μια αντικατάσταση της λειτουργίας πιρούνι που πληροί τις απαιτήσεις του "async-signal-safe", π.χ. επιτρέποντας ασφαλείς κλήσεις από χειριστές σήματος. Κατά την εκτέλεση του _Fork, δημιουργείται ένα ελάχιστο περιβάλλον που επαρκεί για την κλήση συναρτήσεων σε χειριστές σήματος, όπως το raise και το execve, χωρίς να περιλαμβάνει χαρακτηριστικά που ενδέχεται να αλλάξουν κλειδώματα ή εσωτερική κατάσταση. Η κλήση _Fork θα οριστεί σε μια μελλοντική έκδοση του προτύπου POSIX, αλλά προς το παρόν περιλαμβάνεται ως επέκταση GNU.
  • Για την πλατφόρμα Linux, έχει εφαρμοστεί η συνάρτηση execveat, η οποία σας επιτρέπει να εκτελέσετε ένα εκτελέσιμο αρχείο από μια περιγραφή ανοιχτού αρχείου. Η νέα συνάρτηση χρησιμοποιείται επίσης στην υλοποίηση της κλήσης fexecve, η οποία δεν απαιτεί προσαρτημένο ψευδο-FS /proc κατά την εκκίνηση.
  • Προστέθηκε η συνάρτηση timespec_getres, που ορίζεται στο προσχέδιο πρότυπο ISO C2X, η οποία επεκτείνει τη συνάρτηση timespec_get με δυνατότητες παρόμοιες με τη συνάρτηση clock_getres POSIX.
  • Προστέθηκε η λειτουργία close_range(), η οποία επιτρέπει σε μια διεργασία να κλείνει ταυτόχρονα μια ολόκληρη σειρά ανοιχτών περιγραφών αρχείων. Η λειτουργία είναι διαθέσιμη σε συστήματα με πυρήνα Linux τουλάχιστον έκδοσης 5.9.
  • Προστέθηκαν συναρτήσεις closefrom και posix_spawn_file_actions_addclosefrom_np, που σας επιτρέπουν να κλείσετε όλους τους περιγραφείς αρχείων ταυτόχρονα, ο αριθμός των οποίων είναι μεγαλύτερος ή ίσος με την καθορισμένη τιμή.
  • Στις λειτουργίες "_DYNAMIC_STACK_SIZE_SOURCE" και "_GNU_SOURCE", τα PTHREAD_STACK_MIN, MINSIGSTKSZ και SIGSTKSZ δεν είναι πλέον σταθερές, επιτρέποντας την υποστήριξη για σύνολα καταχωρητών δυναμικού μεγέθους, όπως αυτά που παρέχονται στην επέκταση ARM SVE.
  • Ο σύνδεσμος υλοποιεί την επιλογή "--list-diagnostics" για την εμφάνιση πληροφοριών που σχετίζονται με λειτουργίες ορισμού IFUNC (έμμεση συνάρτηση) και επιλογή υποκαταλόγου glibc-hwcaps.
  • Η μακροεντολή __STDC_WANT_IEC_60559_EXT__ έχει υλοποιηθεί, σχεδιασμένη για να ελέγχει την παρουσία των λειτουργιών που ορίζονται στο Παράρτημα ΣΤ της προδιαγραφής ISO C2X.
  • Για συστήματα powerpc64*, έχει εφαρμοστεί η επιλογή «--disable-scv», η οποία σας επιτρέπει να δημιουργήσετε glibc χωρίς να υποστηρίζετε την εντολή scv.
  • Μόνο το ελάχιστο σύνολο βασικών λειτουργικών μονάδων gconv παραμένει στο αρχείο gconv-modules και οι υπόλοιπες μετακινούνται σε ένα πρόσθετο αρχείο gconv-modules-extra.conf, που βρίσκεται στον κατάλογο gconv-modules.d.
  • Για την πλατφόρμα Linux, υλοποιείται η παράμετρος glibc.pthread.stack_cache_size, η οποία μπορεί να χρησιμοποιηθεί για τη διαμόρφωση του μεγέθους της κρυφής μνήμης στοίβας pthread.
  • Η συνάρτηση inet_neta από το αρχείο κεφαλίδας έχει καταργηθεί , καθώς και διάφορες λειτουργίες που χρησιμοποιούνται σπάνια από (dn_count_labels, fp_nquery, fp_query, fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdname, p_cdnname, p_class, p_fqname, p_fqnname, p_option, p_query, p_rcode_aton, p_rcode_stall, p_cdn, , res_nameinque ry, res_queriesmatch, res_randomid, sym_ntop , sym_ntos, sym_ston) και (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Αντί για αυτές τις λειτουργίες, συνιστάται η χρήση ξεχωριστών βιβλιοθηκών για εργασία με DNS.
  • Οι συναρτήσεις pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np και pthread_yield έχουν καταργηθεί και οι συναρτήσεις pthread_mutex_consistent, thread_mutexattr_getrobust_np πρέπει να χρησιμοποιηθούν και να χρησιμοποιηθούν.
  • Σταμάτησε να χρησιμοποιεί συμβολικούς συνδέσμους για τη σύνδεση εγκατεστημένων κοινόχρηστων αντικειμένων στην έκδοση Glibc. Τέτοια αντικείμενα είναι πλέον εγκατεστημένα ως έχουν (π.χ. το libc.so.6 είναι πλέον αρχείο και όχι σύνδεσμος προς το libc-2.34.so).
  • Από προεπιλογή, οι λειτουργίες εντοπισμού σφαλμάτων στο malloc είναι απενεργοποιημένες, όπως MALLOC_CHECK_ (glibc.malloc.check), mtrace() και mcheck(), οι οποίες μετακινούνται σε μια ξεχωριστή βιβλιοθήκη libc_malloc_debug.so, στην οποία έχουν επίσης οι παρωχημένες συναρτήσεις malloc_get_state και malloc_set_state έχει μετακινηθεί.
  • Στο Linux, λειτουργίες όπως shm_open και sem_open απαιτούν τώρα τη λειτουργία της συσκευής /dev/shm.
  • Διορθώθηκαν ευπάθειες:
    • CVE-2021-27645: Η διαδικασία nscd (διακομιστής ονομάτων προσωρινής αποθήκευσης δαίμονας) διακόπτεται λόγω διπλής κλήσης στη δωρεάν συνάρτηση κατά την επεξεργασία ειδικά διαμορφωμένων αιτημάτων δικτυακής ομάδας.
    • CVE-2021-33574: Πρόσβαση σε μια ήδη ελευθερωμένη περιοχή μνήμης (χρήση-μετά-ελεύθερο) στη συνάρτηση mq_notify όταν χρησιμοποιείτε τον τύπο ειδοποίησης SIGEV_THREAD με ένα χαρακτηριστικό νήμα για το οποίο έχει οριστεί μια εναλλακτική μάσκα συνάφειας CPU. Το πρόβλημα θα μπορούσε να οδηγήσει σε συντριβή, αλλά δεν μπορούν να αποκλειστούν άλλες επιλογές επίθεσης.
    • CVE-2021-35942: Μια υπερχείλιση μεγέθους παραμέτρου στη συνάρτηση wordexp μπορεί να προκαλέσει διακοπή λειτουργίας της εφαρμογής.

Πηγή: opennet.ru

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