Pas six muaj zhvillimi, u publikua lëshimi i bibliotekës sistemore GNU C Library (glibc) 2.39, e cila plotëson plotësisht kërkesat e standardeve ISO C11 dhe POSIX.1-2017. Në këtë version të ri janë përfshirë rregullime nga 67 zhvillues.
Disa nga përmirësimet në Glibc 2.39 përfshijnë:
- EshtĂ« siguruar mbĂ«shtetje pĂ«r stakun e hirit (shadow stack), i cili shfaqet nĂ« bĂ«rthamĂ«n Linux 6.6 dhe lejon bllokimin e shumĂ« eksploiteve duke pĂ«rdorur kapacitete harduerike tĂ« procesorĂ«ve Intel pĂ«r mbrojtje nga rikthimi i adresĂ«s pas funksionit nĂ« rast tĂ« mbingarkesĂ«s sĂ« tamponit nĂ« rezervĂ«n e harduerit. Thelbi i mbrojtjes Ă«shtĂ« se pas kalimit tĂ« kontrollit nĂ« funksion, adresat e rikthimit ruhen nga procesori jo vetĂ«m nĂ« rezervĂ«n e zakonshme, por edhe nĂ« njĂ« rezervĂ« tĂ« veçantĂ« 'shadow' e cila nuk mund tĂ« ndryshohet drejtpĂ«rdrejt. Para daljes nga funksioni, adresa e rikthimit eksportohet nga rezervi i hirit dhe krahasohet me adresĂ«n e rikthimit nĂ« rezervĂ«n primare. MospĂ«rputhja e adresave çon nĂ« gjenerimin e njĂ« pĂ«rjashtimi, duke bllokuar situatat kur njĂ« eksploit ka arritur tĂ« rishkruajĂ« adresĂ«n nĂ« rezervĂ«n primare. PĂ«rfshirja e tij Ă«shtĂ« bĂ«rĂ« me opsionin e ndĂ«rtimit 'âenable-cet'.
- ĂshtĂ« shtuar njĂ« skedar i ri mbĂ«shtjellĂ«s <stdbit.h>, i pĂ«rcaktuar nĂ« draftin e standardit ISO C2X, i cili pĂ«rfshin funksionet stdc_leading_zeros, stdc_leading_ones, stdc_trailing_zeros, stdc_trailing_ones, stdc_first_leading_zero, stdc_first_leading_one, stdc_first_trailing_zero, stdc_first_trailing_one, stdc_count_zeros, stdc_count_ones, stdc_has_single_bit, stdc_bit_width, stdc_bit_floor dhe stdc_bit_ceil nĂ« variante me tipet 'unsigned char', 'unsigned short', 'unsigned int', 'unsigned long int' dhe 'unsigned long long int'.
- Për platformën Linux janë realizuar funksionet posix_spawnattr_getcgroup_np dhe posix_spawnattr_setcgroup_np, si dhe flagu POSIX_SPAWN_SETCGROUP, të cilat lejojnë konfigurimin e cgroupv2 në një proces të ri nëpërmjet funksioneve posix_spawn dhe posix_spawnp, duke eliminuar ndodhinë e gjendjes konkurruese. Funksionet janë zgjerime të GNU dhe kërkojnë një bërthamë Linux me mbështetje për thirrjen e sistemit clone3.
- Për platformën Linux janë realizuar funksonet pidfd_spawn dhe pidfd_spawn, të cilat janë të ngjashme me funksionin posix_spawn, por kthejnë jo një identifikator procesi (PID), por një descriptor skedari për përdorim në funksionet që mbështesin mekanizmin PIDFD, si pidfd_send_signal, poll dhe waitid (PIDFD lidhet me një proces të caktuar dhe nuk ndryshon, ndërsa PID mund të lidhet me një proces tjetër pas përfundimit të procesit aktual, të asocuar me këtë PID).
- Për platformën Linux është shtuar funksioni pidfd_getpid për të përcaktuar identifikatorin e procesit (PID) në bazë të descriptorit të procesit (PIDFD), i kthyer nga funksionet pid_spawn, fork_np dhe pidfd_open.
- Në funksionet e familjes scanf është shtuar modifikatori i madhësisë 'wN', i aplikuar për argumente me llojet intN_t, int_leastN_t, uintN_t dhe uint_leastN_t. Për shembull, për të lexuar vlera dekodike me llojet int32_t dhe int_least32_t mund të përcaktohet '%w32d', ndërsa ato në bazën e 16-të - '%w32x'. Po ashtu është shtuar modifikatori 'wfN' për llojet int_fastN_t dhe uint_fastN_t, të paraqitura në draftin e standardit ISO C2X.
- ĂshtĂ« shtuar konfigurimi 'glibc.cpu.plt_rewrite', i cili pĂ«rfshin rikthimin e PLT (Procedure Linkage Table) nĂ« sistemet x86-64, ku lidhĂ«si zĂ«vendĂ«son kalimet indirekte nĂ« PLT me tĂ« drejtat.
- ĂshtĂ« shtuar konfigurimi 'glibc.mem.decorate_maps' pĂ«r tĂ« shtuar informacion shtesĂ« mbi alokimin e memories (p.sh., pĂ«r rezervĂ«n e skedarĂ«ve tĂ« krijuar nga funksioni pthread_create, ose memori e alokuar pĂ«rmes malloc).
- Në strukturën 'statvfs' është siguruar plotësimi i fushës 'f_type' me informacionin për tipin e FS, ekuivalent me përmbajtjen e fushës në strukturën 'statfs'. Më parë në Linux, në fushën 'f_type' shkruhej gjithmonë 0.
- Për platformën AArch64, në libmvec dhe math.h janë shtuar annotime, që lehtësojnë përdorimin e vektorizimit të thirrjeve gjatë ndërtimit me opsionin '-ffast-math' në GCC 9 dhe versione më të reja të kompajlerit. Vektorizimi aktivizohet për funksionet matematikore acos, acosf, asin, asinf, atan, atanf, atan2, atan2f, cos, cosf, exp, expf, exp10, exp10f, exp2, exp2f, expm1, expm1f, log, logf, log10, log10f, log1p, log1pf, log2, log2f, sin, sinf, tan dhe tanf.
- Nga përbërja është hequr biblioteka libcrypt dhe skedari mbështjellës lidhur me të ''. Zhvilluesve të aplikacioneve rekomandohet kalimi në përdorimin e biblioteka alternative, si libxcrypt.
- NĂ« utilitarin ldconfig tani kalohen skedarĂ«t me simbolin â;â nĂ« emrin e skedarit ose qĂ« pĂ«rfundojnĂ« me '.dpkg.tmp' dhe '.dpkg.new', duke lejuar qĂ« tĂ« mos pĂ«rpunohen skedarĂ«t temporar tĂ« menaxherĂ«ve tĂ« paketave rpm dhe dpkg.
- Ka ndalur mbështetje për arkitekturën ia64 (ia64*-*-linux-gnu), e përdorur në procesorët Intel Itanium.
- Identifikuar dobësi:
- CVE-2023-6246, CVE-2023-6779, CVE-2023-6780 â vulnerabilitete kritike nĂ« funksionin __vsyslog_internal(), qĂ« lejojnĂ« pĂ«rmes manipulimeve me ekzekutimin e aplikacioneve SUID pĂ«r tĂ« arritur ekzekutimin e kodit tĂ« tyre me privilegje tĂ« ngritura.
- CVE-2023-4911 â njĂ« vulnerabilitet nĂ« Glibc ld.so, qĂ« lejon marrjen e tĂ« drejtave root nĂ« sistem. Vulnerabiliteti shkaktohet nga njĂ« gabim nĂ« kodin e analizĂ«s sĂ« vargjeve tĂ« specifikuara nĂ« variablin e mjedisit GLIBC_TUNABLES, dhe mund tĂ« çojĂ« nĂ« shkrimin e vlerĂ«s sĂ« analizuar jashtĂ« tamponit tĂ« alokuar. EkzistojnĂ« eksploite funksionale.
- CVE-2023-4806 â njĂ« vulnerabilitet nĂ« funksionin getaddrinfo, i shkaktuar nga qasja nĂ« memorjen pas çlirimit tĂ« saj (use-after-free). Problemi shfaqet kur plugins NSS implementon vetĂ«m thirrjet 'callback' '_gethostbyname2_r' dhe '_getcanonname_r', por nuk mbĂ«shtet thirrjen '_gethostbyname3_r'. PĂ«r tĂ« shfrytĂ«zuar vulnerabilitetin, serveri DNS duhet tĂ« kthejĂ« njĂ« numĂ«r tĂ« madh adresash IPv6 dhe IPv4 pĂ«r hostin e kĂ«rkuar, duke shkaktuar rĂ«nien e procesit qĂ« thirri funksionin getaddrinfo pĂ«r familjen AF_INET6 kur janĂ« caktuar flagjet AI_CANONNAME, AI_ALL dhe AI_V4MAPPED.
- CVE-2023-4527 â njĂ« vulnerabilitet nĂ« funksionin getaddrinfo, qĂ« lejon tĂ« lexohen tĂ« dhĂ«na nga jashtĂ« kufijve tĂ« tamponit kur pĂ«rpunon njĂ« pĂ«rgjigje DNS tĂ« marrĂ« pĂ«rmes TCP, me njĂ« madhĂ«si mĂ« tĂ« madhe se 2048 byte. Vulnerabiliteti shfaqet kur pĂ«rdoret opsioni 'no-aaaa' nĂ« /etc/resolv.conf.
Për më tepër, mund të theksohet lëshimi i një grupi të utiliteteve sistemore GNU Binutils 2.42, i cili përfshin programe të tilla si GNU linker, GNU assembler, nm, objdump, strings, strip.
Në versionin e ri të Binutils:
- Në assembler (gas) për sistemet x86-64 është shtuar një opsion eksperimental '--scfi=experimental' për sintezën e strukturave CFI (Control Flow Integrity) për kodin assembler të shkruar manualisht, në përputhje me System V AMD64 ABI.
- Në programin readelf është shtuar opsioni '--extra-sym-info' për të dhënë informacione të zgjeruara mbi simbolet ('--symbols'), si emri i seksionit të cilin e referon indeksi st_shndx.
- Në utilitarin objcopy është ofruar mundësia e përdorimit në opsionin '--set-section-flags' të vlerës 'large' për të vënë seksionin e flagut SHF_X86_64_LARGE për objektet ELF në sistemet x86-64. Në opsionin '--visualize-jumps' është implementuar mbështetje për arkitekturën s390.
- NĂ« disasemblerin e instrukcioneve s390 Ă«shtĂ« realizuar mundĂ«sia e shfaqjes sĂ« komenteve nĂ« pĂ«rshkrimet e instrukcioneve. PĂ«r tĂ« pĂ«rfshirĂ« pĂ«rshkrimet nĂ« objdump mund tĂ« caktohet parametri '-M insndesc', ndĂ«rsa nĂ« gdb â konfigurimi 'set disassembler-options insndesc'.
- Në linker janë shtuar opsionet '-z mark-plt' dhe '-z nomark-plt' për të markuar regjistrat në tabelën PLT, duke përdorur etiketat DT_X86_64_PLT, DT_X86_64_PLTSZ dhe DT_X86_64_PLTENT.
- Në linker është shtuar mbështetje për renditjen në rendin e kundërt.
- Shtuar opsionet '--warn-execstack-objects', '--error-execstack' dhe '--error-rxw-segments' për të dhënë paralajmërime ose gabime gjatë përdorimit të objekteve të stack-ut ekzekutues.
- Implementuar mbështetje për ABI 2.30 të arkitekturës LoongArch, si dhe mbështetje për instrukcionet e reja të përcaktuara në specifikimin LoongArch 1.10.
- Shtuar mbështetje për grupin e instrukcioneve KVX që përdoren në procesorët Kalray (p.sh., përdoren në SoC Coolidge).
- Për sistemet e bazuara në arkitekturën Intel është shtuar mbështetje për zgjerime:
- Intel APX: 32 GPRs, NDD, PUSH2/POP2, PUSHP/POPP.
- USER_MSR.
- AVX10.1.
- PBNDKB.
- SM4.
- SM3.
- SHA512.
- AVX-VNNI-INT16.
- Në portin për arkitekturën RISC-V është shtuar mbështetje për zgjerime:
- T-Head (XTheadVector, XTheadZvlsseg dhe XTheadZvamo).
- CORE-V (XCVmac, XCValu).
- SiFive VCIX (XSfVcp).
- Në portin për arkitekturën AArch64 është shtuar mbështetje për zgjerime:
- SVE2.1 (Scalable Vector Extension 2.1).
- SME2.1 (Scalable Matrix Extension 2.1).
- B16B16 (BFloat16 dhe BFloat16 për SVE2 dhe SME2).
- RASv2 (Reliability, Availability and Serviceability v2).
- LSE128 (128-bit Atomic).
- GCS (Guarded Control Stack).
- CHK (Check Feature Status).
- SPECRES2 (Enhanced Speculation Restriction).
- LRCPC3 (Load-Acquire RCpc).
- THE (Translation Hardening).
- ITE (Instruction Trace).
- D128 (128-bit e drejtat e tabelës së faqeve të memories).
- XS (atributi i memories XS).
- Shtuar mbështetje për procesorët AArch64 Cortex-A520, Cortex-A720, Cortex-X3 dhe Cortex-X4.
- Në assembler BPF për përputhshmërinë me assemblerin clang/LLVM është shtuar mbështetje për ndarjen e komenteve me simbolet '#' dhe '//' si dhe përdorimin e simbolit ';' për ndarjen e shprehjeve në rresht (';' nuk mund të përdoret më për komente).
Burimi: opennet.ru
