Rilis Perpustakaan Sistem Glibc 2.34

Setelah enam bulan pengembangan, perpustakaan sistem GNU C Library (glibc) 2.34 telah dirilis, yang sepenuhnya memenuhi persyaratan standar ISO C11 dan POSIX.1-2017. Rilis baru ini mencakup perbaikan dari 66 pengembang.

Beberapa perbaikan yang diterapkan pada Glibc 2.34 antara lain:

  • Pustaka libpthread, libdl, libutil dan libanl diintegrasikan ke dalam struktur libc utama, penggunaan fungsinya dalam aplikasi tidak lagi memerlukan penautan menggunakan flag -lpthread, -ldl, -lutil dan -lanl. Persiapan telah dilakukan untuk integrasi libresolv ke libc. Integrasi akan memungkinkan proses pembaruan glibc lebih lancar dan menyederhanakan implementasi runtime. Pustaka rintisan disediakan untuk menyediakan kompatibilitas mundur dengan aplikasi yang dibangun dengan versi glibc yang lebih lama. Karena perluasan jumlah struktur dan fungsi yang disediakan di glibc, masalah mungkin timbul dalam aplikasi di mana terdapat perpotongan nama dengan perpustakaan yang sebelumnya tidak digunakan libpthread, libdl, libutil, libresolv dan libanl.
  • Memberikan kemampuan untuk menggunakan tipe time_t 64-bit dalam konfigurasi yang biasanya menggunakan tipe time_t 32-bit. Dalam konfigurasi seperti itu, misalnya pada sistem x86, defaultnya masih 32-bit time_t, namun perilaku ini sekarang dapat diubah menggunakan makro "_TIME_BITS". Fitur ini hanya tersedia pada sistem dengan setidaknya kernel Linux versi 5.1.
  • Menambahkan fungsi _Fork, pengganti fungsi fork yang memenuhi persyaratan “async-signal-safe”, yaitu. memungkinkan panggilan aman dari penangan sinyal. Selama eksekusi _Fork, lingkungan minimal dibuat yang cukup untuk memanggil fungsi dalam penangan sinyal seperti raise dan execve tanpa melibatkan fitur yang mungkin mengubah kunci atau status internal. Panggilan _Fork akan didefinisikan dalam versi standar POSIX yang akan datang, tetapi untuk saat ini panggilan tersebut disertakan sebagai ekstensi GNU.
  • Untuk platform Linux, fungsi execveat telah diterapkan, yang memungkinkan Anda menjalankan file yang dapat dieksekusi dari deskriptor file terbuka. Fungsi baru ini juga digunakan dalam implementasi panggilan fexecve, yang tidak memerlukan pseudo-FS /proc yang terpasang saat startup.
  • Menambahkan fungsi timespec_getres, yang ditentukan dalam rancangan standar ISO C2X, yang memperluas fungsi timespec_get dengan kemampuan yang mirip dengan fungsi clock_getres POSIX.
  • Menambahkan fungsi close_range(), yang memungkinkan suatu proses menutup seluruh rentang deskriptor file yang terbuka sekaligus. Fungsi ini tersedia pada sistem dengan kernel Linux minimal versi 5.9.
  • Menambahkan fungsi closefrom dan posix_spawn_file_actions_addclosefrom_np, memungkinkan Anda menutup semua deskriptor file sekaligus, yang jumlahnya lebih besar atau sama dengan nilai yang ditentukan.
  • Dalam mode "_DYNAMIC_STACK_SIZE_SOURCE" dan "_GNU_SOURCE", PTHREAD_STACK_MIN, MINSIGSTKSZ, dan SIGSTKSZ tidak lagi konstan, sehingga memungkinkan dukungan untuk kumpulan register berukuran dinamis seperti yang disediakan dalam ekstensi ARM SVE.
  • Linker mengimplementasikan opsi "--list-diagnostics" untuk menampilkan informasi terkait operasi definisi IFUNC (fungsi tidak langsung) dan pemilihan subdirektori glibc-hwcaps.
  • Makro __STDC_WANT_IEC_60559_EXT__ telah diterapkan, dirancang untuk memeriksa keberadaan fungsi yang ditentukan dalam Lampiran F spesifikasi ISO C2X.
  • Untuk sistem powerpc64*, opsi “--disable-scv” telah diterapkan, yang memungkinkan Anda membuat glibc tanpa mendukung instruksi scv.
  • Hanya kumpulan minimum modul inti gconv yang tersisa di file gconv-modules, dan sisanya dipindahkan ke file tambahan gconv-modules-extra.conf, yang terletak di direktori gconv-modules.d.
  • Untuk platform Linux, parameter glibc.pthread.stack_cache_size diterapkan, yang dapat digunakan untuk mengonfigurasi ukuran cache tumpukan pthread.
  • Fungsi inet_neta dari file header tidak digunakan lagi, serta berbagai fungsi yang jarang digunakan dari (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, p_time, p_type, putlong, putshort, res_hostalias, res_isourserver, res_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntos, sym_ston) and (ns_datetosecs, ns_format_ttl, ns_makecanon, ns _parse_ttl, ns_samedomain , ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Alih-alih fungsi-fungsi ini, disarankan untuk menggunakan perpustakaan terpisah untuk bekerja dengan DNS.
  • Fungsi pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np dan pthread_yield sudah tidak digunakan lagi dan pthread_mutex_consistent, thread_mutexattr_getrobust, hread_mutexattr_setrobust dan sched_yield sebaiknya digunakan sebagai gantinya.
  • Berhenti menggunakan tautan simbolis untuk mengikat objek bersama yang diinstal ke versi Glibc. Objek tersebut sekarang diinstal sebagaimana adanya (misalnya libc.so.6 sekarang menjadi file dan bukan link ke libc-2.34.so).
  • Secara default, fitur debugging di malloc dinonaktifkan, seperti MALLOC_CHECK_ (glibc.malloc.check), mtrace() dan mcheck(), yang dipindahkan ke perpustakaan terpisah libc_malloc_debug.so, yang juga memiliki fungsi usang malloc_get_state dan malloc_set_state telah dipindahkan.
  • Di Linux, fungsi seperti shm_open dan sem_open sekarang memerlukan perangkat /dev/shm agar dapat berfungsi.
  • Kerentanan diperbaiki:
    • CVE-2021-27645: Proses nscd (daemon caching server nama) terhenti karena panggilan ganda ke fungsi gratis saat memproses permintaan netgroup yang dibuat khusus.
    • CVE-2021-33574: Akses ke area memori yang sudah dikosongkan (digunakan setelah bebas) di fungsi mq_notify saat menggunakan jenis notifikasi SIGEV_THREAD dengan atribut thread yang masker afinitas CPU alternatifnya disetel. Masalah ini dapat menyebabkan crash, namun opsi serangan lainnya tidak dapat dikesampingkan.
    • CVE-2021-35942: Kelebihan ukuran parameter pada fungsi wordexp dapat menyebabkan aplikasi mogok.

Sumber: opennet.ru

Tambah komentar