Lëshimi i bibliotekës sistemike Glibc 2.41

Pas 6 muajsh zhvillimi u publikua versioni i bibliotekës sistemore GNU C Library (glibc) 2.41, i cili i plotëson plotësisht kërkesat e standardeve ISO C11 dhe POSIX.1-2017. Në krijimin e këtij versioni morën pjesë 79 zhvillues.

Disa nga përmirësimet e zbatuara në Glibc 2.41 përfshijnë:

  • Për platformën Linux janë shtuar funksionet e reja sched_setattr dhe sched_getattr, përmes të cilave mund të vendosni/lexoni parametrat e planifikuesit të detyrave. Në praktikë, këto funksione lejojnë konfigurimin e politikave të planifikimit të kërkesave, si SCHED_DEADLINE, të cilat përdorin parametra të shtuar përveç prioriteteve.
  • Në utilitarin iconv është shtuar mbështetje për konvertimin e kodimeve në vend (nëse emrat e skedarëve hyrës dhe dalës përkojnë, iconv tani krijon automatikisht një skedar të përkohshëm dhe pas përfundimit të konvertimit e zëvendëson atë me skedarin origjinë).
  • Në skedarin e titullit math.h janë shtuar funksione trigonometrike që shfaqen në standardin C23 (TS 18661-4:2015): acospi, asinpi, atan2pi, atanpi, cospi, sinpi dhe tanpi.
  • Nga projekti CORE-MATH janë transferuar funksionet e optimizuara dhe ato që përdorin rrethim të saktë, si exp10m1f, exp2m1f, expm1f, log10f, log2p1f, log1pf, log10p1f, cbrtf, erff, erfcf, lgammaf, tgammaf, tanf, acosf, acoshf, asinf, asinhf, atanf, atan2f, atanhf, coshf, sinhf dhe tanhf.
  • Është shtuar mbështetje për zgjerimin ARM64 GCS (Guarded Control Stack) për mbrojtjen harduerike të adresave të rikthimit nga funksionet dhe bllokimin e eksploitëve që përdorin metodat e programimit të orientuar ndaj rikthimit (ROP — Return-Oriented Programming, ku eksploitë formohet nga copëza të shumicës së instruksioneve të makinerisë që përfundojnë me instrukcioni i rikthimit të kontrollit). ARM64 GCS lejon përdorimin e teknikës së stack-ut të hijeve (shadow stack) për mbrojtjen e proceseve në hapësirën e përdoruesit — pas kalimit të kontrollit në funksion, adresat e rikthimit ruhet nga procesori jo vetëm në stack-un e zakonshëm, por po ashtu edhe në një stack të veçantë hije, i cili nuk mund të ndryshohet drejtpërdrejt. Para dalje nga funksioni, adresa e rikthimit nxirret nga stack-u i hijeve dhe krahasohet me adresën e rikthimit nga stack-u kryesor. Për ndërtimin e Glibc me mbështetje për GCS kërkohet të paktën versionet binutils 2.44 dhe GCC 15.
  • Është bërë një punë e madhe për të përmirësuar gjenerimin e kodit dhe për të rritur performancën e funksioneve matematikore për arkitekturën ARM64/AArch64. Janë realizuar optimizime duke përdorur instrukcione vektoriale (SVE, Scalable Vector Extension) dhe zgjerime SIMD (Neon).
  • Për sistemet me procesorë ARM64/AArch64 është shtuar mbështetje për mekanizmin Memory Protection Keys, i cili përdoret për të kufizuar qasjen në faqet e memories pa ndryshuar tabelën e faqes së memories.
  • Për sistemet me procesorë PowerPC64 është shtuar mbështetje për instrukcione të zgjeruara për t'u mbrojtur nga përdorimi i programimit të orientuar nga kthimi në eksploit.
  • Është shtuar një lloj i ri arkitekture arch_kind_hygon për procesorët x86-64 Hygon kinezë, të ndërtuar në bazë të teknologjive AMD.
  • Është zgjeruar ndjeshëm disposioni për testimin e glibc, numri i testeve në të cilin është rritur nga 5408 në 6232 krahasuar me versionin e kaluar.
  • Është shtuar mundësia për testimin e ndërtimit të glibc duke përdorur kompilerë C dhe C++ që janë të ndryshëm nga ata që janë përdorur për ndërtimin aktual. Për shembull, ‘configure TEST_CC="gcc-6.4.1" TEST_CXX="g++-6.4.1"‘ dhe ‘configure TEST_CC="clang" TEST_CXX="clang++"‘.
  • Në opsionet e përcaktuara në skedarin /etc/resolv.conf dhe në variablën e mjedisit RES_OPTIONS, është e mundur të përdoret prefiksi "-" për të pastruar opsionin e mëparshëm me këtë emër. Për shembull, nëse në skedarin /etc/resolv.conf është e specifikuar "options no-aaaa", atëherë kur procesi aktivizohet me variablën e mjedisit "RES_OPTIONS=-no-aaaa", do të pezullohet ndalimi për dërgimin e kërkesave DNS për të marrë regjistrin AAAA.
  • Në DNS-resolverin është shtuar mbështetje për opsionin "strict-error", ku funksioni getaddrinfo(), nëse tipi i adresave (AF_UNSPEC) nuk është specifikuar qartë, do të provojë të marrë vlerat e regjistrave A (IPv4) dhe AAAA (IPv6) nga një server tjetër DNS, nëse kërkesa për regjistrin A ose AAAA në serverin e parë DNS përfundoi me një gabim. Pa specifikimin e "strict-error", në një situatë të tillë do të kthehet adresa e marrë nga kërkesa e suksesshme, ndërsa vlera e kërkesës së dështuar do të injorohet. Për shembull, nëse server ktheu regjistrin "A", por dha një gabim gjatë kërkesës për "AAAA", getaddrinfo pa opsionin "strict-error" menjëherë do të kthejë vetëm adresën IPv4, ndërsa me opsionin "strict-error" do të përpiqet të përsërisë kërkesat te një server tjetër DNS.
  • Të dhënat e kodifikimeve, informacioni për llojet e simboleve dhe tabelat e transliterimit janë përditësuar për të mbështetur specifikimin Unicode 16.0.0.
  • Makroja «_ISOC2Y_SOURCE» është shtuar, duke mundësuar aktivizimin e funksionaliteteve të përcaktuara në draftin e standardit C2Y. Funksionalitete të tilla mund të aktivizohen gjithashtu me makron _GNU_SOURCE dhe përmes flagjeve të përkthyesit («gcc -std=gnu2y»).
  • Është realizuar mjeti benchtest për të monitoruar performancën e funksioneve të ndryshme (zakonisht matematikore).
  • Është shtuar konfigurimi glibc.rtld.execstack, përmes të cilit mund të ndalohet shprehimisht përdorimi i stack-ut ekzekutiv.
  • Është shtetur ABI rseq (sekuenca të rinisjes), duke ofruar një mekanizëm për ekzekutimin e shpejtë dhe atomik të operacioneve (në rast se operacioni ndërpritet nga një线程 tjetër, gjendja e rikthehet dhe përpjekja përsëritet). Në versionin e ri është duke u ofruar mundësia e përdorimit të mundësive të zgjeruara në rseq, të cilat munguan në ABI-në e origjinës, si identifikuesit e ekzekutimit paralel (mm_cid, ID e konkurencës së hartës së memories) dhe identifikuesit NUMA (node_id).
  • Përkrahja për portin për sistemet big-endian ARC (arceb-linux-gnu) është pezulluar.
  • Vulnerabiliteti i zgjidhur (CVE-2025-039) që shkakton mbushje të buferit gjatë ekzekutimit të funksionit assert(). Mbushja ndodh kur tregohet një emër programi mjaft i madh (argv[0]). Problemi konsiderohet si jo rrezikshëm, pasi përtej buferit shkruhen 4 byte, të cilat nuk mund të kontrollohen nga sulmuesi. Megjithatë, është interesante vetë shfaqja e një vulnerabiliteti në funksionet e ndryshimesh që ontstaan nga një gabim gjatë nxjerrjes së emrit të aplikacionit aktual.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster