Glibc 2.34 Sistem Kitaplığı Sürümü

Altı aylık geliştirmenin ardından, ISO C2.34 ve POSIX.11-1 standartlarının gerekliliklerine tamamen uyan GNU C Kütüphanesi (glibc) 2017 yayınlandı. Yeni sürüm, 66 geliştiricinin düzeltmelerini içeriyor.

Glibc 2.34'te uygulanan iyileştirmeler arasında şunlar yer alır:

  • Ana libc paketi libpthread, libdl, libutil ve libanl kitaplıklarını entegre eder; bunların uygulamalarda işlevselliği artık -lpthread, -ldl, -lutil ve -lanl işaretlerini kullanarak bağlanmayı gerektirmez. libresolv'u libc'ye entegre etmek için hazırlıklar yapıldı. Entegrasyon, daha tutarlı bir glibc yükseltme işlemine izin verecek ve çalışma zamanı uygulamasını basitleştirecektir. Saplama kitaplıkları, glibc'nin eski sürümlerine karşı oluşturulan uygulamalarla geriye dönük uyumluluk için sağlanır. Glibc'de sağlanan yapı ve işlevlerin sayısının artması nedeniyle, daha önce kullanılmayan libpthread, libdl, libutil, libresolv ve libanl kitaplıklarıyla isimlerin kesiştiği uygulamalarda sorunların ortaya çıkması olasıdır.
  • Geleneksel olarak 64 bit time_t türünü kullanan yapılandırmalarda 32 bit time_t türünü kullanma yeteneği sağlandı. Bu tür yapılandırmalarda, örneğin x86 sistemlerinde, varsayılan hala 32 bit time_t'dir, ancak bu davranış artık "_TIME_BITS" makrosu kullanılarak değiştirilebilir. Bu özellik yalnızca en az Linux çekirdeği sürüm 5.1 olan sistemlerde mevcuttur.
  • "Async-signal-safe" gerekliliklerine uyan fork işlevinin yerini alan _Fork işlevi eklendi, örn. sinyal işleyicilerinden güvenli arama yapılmasına izin verir. _Fork'un yürütülmesi sırasında, kilitleri veya dahili durumu değiştirebilecek özellikleri çağırmadan, yükseltme ve yürütme gibi sinyal işleyicilerindeki işlevleri çağırmak için yeterli olan minimum bir ortam oluşturulur. _Fork çağrısı, POSIX standardının gelecekteki bir sürümünde tanımlanacak, ancak şimdilik GNU uzantılarına dahil edilmiştir.
  • Linux platformu için, yürütülebilir bir dosyayı açık bir dosya tanıtıcıdan çalıştırmanıza izin veren execveat işlevi uygulanır. Yeni işlev, başlangıçta /proc sözde-FS'nin takılmasını gerektirmeyen fexecve çağrısının uygulanmasında da kullanılır.
  • POSIX clock_getres işlevine benzer yeteneklerle timespec_get işlevini genişleten taslak ISO C2X standardında tanımlanan timespec_getres işlevi eklendi.
  • Bir işlemin tüm açık dosya tanıtıcıları aralığını aynı anda kapatmasına izin vermek için close_range() işlevi eklenmiştir. İşlev, en az sürüm 5.9 olan bir Linux çekirdeğine sahip sistemlerde mevcuttur.
  • Closefrom ve posix_spawn_file_actions_addclosefrom_np işlevleri, sayısı belirtilen değerden büyük veya ona eşit olan tüm dosya tanıtıcılarını aynı anda kapatmak için eklenmiştir.
  • "_DYNAMIC_STACK_SIZE_SOURCE" ve "_GNU_SOURCE" modlarında, ARM SVE uzantısında sağlananlar gibi dinamik boyut kayıt setlerini desteklemek için PTHREAD_STACK_MIN, MINSIGSTKSZ ve SIGSTKSZ değerleri artık sabit değildir.
  • Bağlayıcı, IFUNC (dolaylı işlev) algılama ve glibc-hwcaps alt dizini seçim işlemleriyle ilgili bilgileri görüntülemek için bir "--list-diagnostics" seçeneği uygular.
  • __STDC_WANT_IEC_60559_EXT__ makrosu, ISO C2X spesifikasyonunun F Ekinde tanımlanan fonksiyonların kullanılabilirliğini kontrol etmek için uygulanmıştır.
  • powerpc64* sistemleri için "--disable-scv" seçeneği uygulanarak glibc'nin scv talimatı desteği olmadan oluşturulmasına izin verilir.
  • gconv-modules dosyası yalnızca minimum sayıda çekirdek gconv modülünü tuttu, geri kalanı gconv-modules.d dizininde bulunan ek bir gconv-modules-extra.conf dosyasına taşındı.
  • Linux platformu için, pthread yığın önbelleğinin boyutunu ayarlamak için kullanılabilen glibc.pthread.stack_cache_size parametresi uygulanır.
  • Başlık dosyasından kaldırılan inet_neta işlevi , nadiren kullanılan çeşitli işlevlerin yanı sıra (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, re s _nameinquery, res_queriesmatch, res_randomid, sym_ntop , sym_ntos, sym_ston) ve (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_sameddomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Bu işlevler yerine, DNS ile çalışmak için ayrı kitaplıkların kullanılması önerilir.
  • pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np ve pthread_yield işlevleri kullanımdan kaldırılmıştır ve bunun yerine pthread_mutex_consistent, thread_mutexattr_getrobust, hread_mutexattr_setrobust ve sched_yield kullanılmalıdır.
  • Yüklü paylaşılan nesneleri Glibc sürümüne bağlamak için sembolik bağlantıların kullanımı kaldırıldı. Bu tür nesneler artık olduğu gibi kurulur (örneğin, libc.so.6 artık bir dosyadır, libc-2.34.so'ya bir bağlantı değildir).
  • Varsayılan olarak, ayrı bir libc_malloc_debug.so kitaplığına taşınan MALLOC_CHECK_ (glibc.malloc.check), mtrace() ve mcheck() gibi malloc'taki hata ayıklama özellikleri devre dışı bırakılır;
  • Linux'ta shm_open ve sem_open gibi işlevler artık /dev/shm aygıtının çalışmasını gerektiriyor.
  • Düzeltilen güvenlik açıkları:
    • CVE-2021-27645: Özel hazırlanmış ağ grubu istekleri işlenirken iki kez ücretsiz çağrı yapılması nedeniyle nscd (ad sunucusu önbelleğe alma arka plan programı) işleminde kilitlenme.
    • CVE-2021-33574: SIGEV_THREAD bildirim türünü, alternatif bir CPU yakınlık maskesi ayarına sahip bir iş parçacığı özniteliğiyle kullanırken, mq_notify işlevinde zaten serbest bırakılmış bir bellek alanına (use-after-free) erişim. Sorun bir çökmeye neden olabilir, ancak diğer saldırı seçenekleri göz ardı edilmez.
    • CVE-2021-35942: wordexp işlevindeki parametre boyutu taşması, uygulamanın çökmesine neden olabilir.

Kaynak: opennet.ru

Yorum ekle