Glibc 2.34 Sistem Kitabxanası Buraxılışı

Altı aylıq inkişafdan sonra ISO C2.34 və POSIX.11-1 standartlarının tələblərinə tam uyğun gələn GNU C Library (glibc) 2017 buraxılışı dərc olunur. Yeni buraxılışa 66 tərtibatçı tərəfindən düzəlişlər daxildir.

Glibc 2.34-də həyata keçirilən təkmilləşdirmələr arasında:

  • Libpthread, libdl, libutil və libanl kitabxanaları əsas libc strukturuna inteqrasiya olunub, onların funksionallığından tətbiqlərdə istifadə etmək artıq -lpthread, -ldl, -lutil və -lanl bayraqlarından istifadə edərək əlaqə yaratmağı tələb etmir. Libresolv-un libc-ə inteqrasiyası üçün hazırlıqlar görülüb. İnteqrasiya daha qüsursuz glibc yeniləmə prosesinə imkan verəcək və icra müddətinin həyata keçirilməsini asanlaşdıracaq. Glibc-in köhnə versiyaları ilə qurulmuş proqramlarla geriyə uyğunluğu təmin etmək üçün stub kitabxanaları təmin edilir. Glibc-də təqdim olunan strukturların və funksiyaların sayının genişlənməsi ilə əlaqədar olaraq əvvəllər istifadə olunmamış libpthread, libdl, libutil, libresolv və libanl kitabxanaları ilə adların kəsişməsinin olduğu tətbiqlərdə problemlər yarana bilər.
  • Ənənəvi olaraq 64-bit time_t növünü istifadə edən konfiqurasiyalarda 32-bit time_t növündən istifadə etmək imkanı verir. Belə konfiqurasiyalarda, məsələn, x86 sistemlərində, defolt hələ də 32-bit time_t-dir, lakin bu davranış indi "_TIME_BITS" makrosundan istifadə etməklə dəyişdirilə bilər. Bu funksiya yalnız ən azı Linux kernel versiyası 5.1 olan sistemlərdə mövcuddur.
  • “Aync-signal-safe” tələblərinə cavab verən çəngəl funksiyasını əvəz edən _Fork funksiyası əlavə edildi, yəni. siqnal idarəçilərindən təhlükəsiz zəng etməyə imkan verir. _Fork-un icrası zamanı kilidləri və ya daxili vəziyyəti dəyişdirə biləcək funksiyaları cəlb etmədən siqnal işləyicilərində qaldırma və icra kimi funksiyaları çağırmaq üçün kifayət edən minimal mühit yaradılır. _Fork çağırışı POSIX standartının gələcək versiyasında müəyyən ediləcək, lakin hələlik o, GNU genişlənməsi kimi daxil edilib.
  • Linux platforması üçün açıq fayl deskriptorundan icra olunan faylı işə salmağa imkan verən execveat funksiyası həyata keçirilib. Yeni funksiya həm də başlanğıcda quraşdırılmış psevdo-FS /proc tələb etməyən fexecve çağırışının həyata keçirilməsində istifadə olunur.
  • POSIX clock_getres funksiyasına bənzər imkanlarla timespec_get funksiyasını genişləndirən, ISO C2X standart layihəsində müəyyən edilmiş timespec_getres funksiyası əlavə edildi.
  • Prosesə bir anda bütün açıq fayl deskriptorlarını bağlamağa imkan verən close_range() funksiyası əlavə edildi. Funksiya ən azı 5.9 versiyası olan Linux nüvəsi olan sistemlərdə mövcuddur.
  • Closefrom və posix_spawn_file_actions_addclosefrom_np funksiyaları əlavə edilib ki, bu da bütün fayl deskriptorlarını bir anda bağlamağa imkan verir, onların sayı göstərilən dəyərdən çox və ya ona bərabərdir.
  • "_DYNAMIC_STACK_SIZE_SOURCE" və "_GNU_SOURCE" rejimlərində PTHREAD_STACK_MIN, MINSIGSTKSZ və SIGSTKSZ artıq sabit deyil, ARM SVE genişləndirməsində təqdim olunanlar kimi dinamik ölçülü registr dəstlərini dəstəkləməyə imkan verir.
  • Bağlayıcı IFUNC (dolayı funksiya) tərif əməliyyatları və glibc-hwcaps alt kataloq seçimi ilə bağlı məlumatları göstərmək üçün "--list-diaqnostika" seçimini həyata keçirir.
  • ISO C60559X spesifikasiyasının F Əlavəsində müəyyən edilmiş funksiyaların mövcudluğunu yoxlamaq üçün nəzərdə tutulmuş __STDC_WANT_IEC_2_EXT__ makrosu tətbiq edilmişdir.
  • Powerpc64* sistemləri üçün scv təlimatını dəstəkləmədən glibc qurmağa imkan verən “--disable-scv” seçimi həyata keçirilib.
  • Yalnız gconv-modules faylında əsas gconv modullarının minimum dəsti qalır, qalanları isə gconv-modules.d kataloqunda yerləşən əlavə gconv-modules-extra.conf faylına köçürülür.
  • Linux platforması üçün glibc.pthread.stack_cache_size parametri həyata keçirilir, ondan pthread yığını keşinin ölçüsünü konfiqurasiya etmək üçün istifadə edilə bilər.
  • Başlıq faylından inet_neta funksiyası köhnəlmişdir , həmçinin nadir hallarda istifadə edilən müxtəlif funksiyalar (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_query, p_rcode, p_time, put_resservty, er, res_name sorğusu, res_queriesmatch, res_randomid, sym_ntop , sym_ntos, sym_ston) və (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Bu funksiyaların əvəzinə DNS ilə işləmək üçün ayrıca kitabxanalardan istifadə etmək tövsiyə olunur.
  • pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np və pthread_yield funksiyaları köhnəlib və pthread_mutex_consistent, thread_mutexattr_getrobust və əvəzinə hread_setrobust istifadə edilməlidir.
  • Quraşdırılmış paylaşılan obyektləri Glibc versiyasına bağlamaq üçün simvolik keçidlərdən istifadə dayandırıldı. Belə obyektlər indi olduğu kimi quraşdırılır (məsələn, libc.so.6 indi libc-2.34.so-ya keçid deyil, fayldır).
  • Defolt olaraq, malloc-da köhnəlmiş funksiyaların malloc_get_state və malloc_set_state də olduğu ayrıca libc_malloc_debug.so kitabxanasına köçürülən MALLOC_CHECK_ (glibc.malloc.check), mtrace() və mcheck() kimi sazlama funksiyaları deaktiv edilir. köçürülüb.
  • Linux-da shm_open və sem_open kimi funksiyalar indi /dev/shm cihazının işləməsini tələb edir.
  • Zəifliklər düzəldildi:
    • CVE-2021-27645: nscd (ad serverinin keşləmə demonu) prosesi xüsusi hazırlanmış şəbəkə qrup sorğularını emal edərkən pulsuz funksiyaya ikiqat çağırış səbəbindən qəzaya uğrayır.
    • CVE-2021-33574: Alternativ CPU yaxınlıq maskasının təyin olunduğu mövzu atributlu SIGEV_THREAD bildiriş növündən istifadə edərkən mq_notify funksiyasında artıq boşaldılmış yaddaş sahəsinə (istifadədən sonra-pulsuz) giriş. Problem qəzaya səbəb ola bilər, lakin digər hücum variantlarını istisna etmək olmaz.
    • CVE-2021-35942: Wordexp funksiyasında parametr ölçüsünün aşması proqramın sıradan çıxmasına səbəb ola bilər.

Mənbə: opennet.ru

Добавить комментарий