GNU C bibliotēkas 2.44 versija iznāca 25. jūlijā. Kopā ar to parādās fails /etc/tunables.conf, kurā glibc iekšējos parametrus var uzstādīt visai sistēmai uzreiz. Līdz šim tos mainīja tikai ar vides mainīgo GLIBC_TUNABLES, kas jāpadod katram procesam atsevišķi.
Laidienu sagatavoja Andreass K. Hitels no Gentoo. Paziņojumā uzskaitīti 67 izlaboti kļūdu ziņojumi un 111 cilvēku, kuri iesūtīja kodu vai kļūdu aprakstus.
Viens parametrs rindā, pēc tam ldconfig
Faila saturs izskatās šādi:
glibc.malloc.trim_threshold=128glibc.malloc.check=3
Pēc rediģēšanas jāpalaiž ldconfig. Tas ieraksta parametrus /etc/ld.so.cache failā kā paplašinājumu, no kurienes tos startējoties nolasa katra programma. Jau darbojošies procesi izmaiņas neredz. Failā strādā tā pati include sintakse, kas ld.so.conf failā.
Prioritāte ir trīspakāpju. Zemākā ir programmā iebūvētā noklusējuma vērtība, virs tās stāv /etc/tunables.conf, bet visaugstāk vides mainīgais. Administrators šo secību var apgriezt otrādi. Ja parametra nosaukumam pievieno priedēkli nonoverridable vai -, vides mainīgais to vairs nepārraksta.
Konkrētie parametru iestatījumi, faila
/etc/tunables.confformāts un atrašanās vieta nav daļa no stabilajām bibliotēkas saskarnēm un var mainīties starp laidieniem.
Setuid programmas beidzot var aizsniegt
AT_SECURE procesiem, tas ir, setuid un setgid binārajiem failiem vai programmām ar paceltām capabilities, glibc vides mainīgo GLIBC_TUNABLES ignorē pilnībā. Tā ir sena drošības izvēle, kuras dēļ šādām programmām parametrus nevarēja mainīt nekādi. Sistēmas fails šo robu aizver.
Pēc noklusējuma arī jaunais fails uz tām neattiecas. Katrai rindai var pievienot vienu no trim priedēkļiem, kas to maina. onlysecure vai @ attiecina parametru tikai uz AT_SECURE procesiem. nonsecure vai $ attiecina to tikai uz pārējiem; tāda ir noklusētā uzvedība. anysecure vai * attiecina to uz visiem. Sintakse aprakstīta rokasgrāmatas pirmkodā, jo publicētajā tīmekļa versijā tās vēl nav.
glibc dokumentācija brīdina, ka šādi uzstādītiem parametriem nekāda drošības pārbaude netiek veikta. Ar onlysecure vai anysecure var ieslēgt, piemēram, glibc.malloc.check katrā setuid programmā sistēmā. Tāpēc failam uzticas tikpat lielā mērā kā /etc/ld.so.cache failam; rakstīt tajā drīkst tikai administrators.
Jauns slēdzis huge pages lapām
Otra izmaiņa attiecas uz Transparent Huge Pages. Parametrs glibc.elf.thp pēc noklusējuma ir 0. Kad to uzstāda uz 1, dinamiskais ielādētājs kartē tikai lasāmos segmentus ar huge pages, ja vien kodolā THP nav izslēgts. Tad malloc sāk skatīties kodola faktisko THP režīmu tā vietā, lai pieņemtu madvise režīmu. Ja kodola režīms ir always, malloc pārstāj sūtīt MADV_HUGEPAGE.
Huge pages lapas izmērs malloc iekšienē tagad ir ierobežots ar MAX_THP_PAGESIZE. Ja sistēmā lapa ir lielāka, malloc THP vairs neizmanto. Vienlaikus izlabota kļūda 34079: dinamiskais ielādētājs līdzināja pēc THP lapas izmēra visus PT_LOAD segmentus, nevis tikai tos, kuriem tas bija vajadzīgs.
Matemātika, arhitektūras un izmestais kods
No CORE-MATH projekta pārņemtas pareizi noapaļotas cosh, sinh un tanh realizācijas. Vecā SVID kļūdu apstrāde funkcijās cosh un sinh pārcelta uz saderības simboliem, kas atbrīvoja rokas ātrdarbības uzlabojumiem.
AArch64 procesoriem ar Guarded Control Stack paplašinājumu glibc tagad noslēdz visas GCS operācijas pēc tam, kad GCS ieslēgts ENFORCED vai OVERRIDE politikā. Programma vairs nevar ar prctl izsaukumu izslēgt vai sabojāt ēnu steku darbības laikā. Turpat vektorizēti log, exp, sin, sinh, cosh, asinh, acosh un atanh speciālgadījumi SVE un AdvSIMD instrukcijām.
RISC-V pievienoti vektoru paplašinājuma varianti trīspadsmit atmiņas un virkņu funkcijām, tostarp memcpy, strlen un strcmp. PowerPC atgriezts Power10 optimizētais memchr. Pievienots atbalsts LoongArch32 arhitektūrai. Arm 32 bitu arm-*-linux-gnueabi platformā sāk strādāt static PIE, ja rīkkopa uzstāda pareizos saitētāja slēdžus.
Prom ir s390-linux-gnu 31 bitu konfigurācija. Izmesti arī divi konfigurēšanas slēdži. --enable-memory-tagging aizgāja kopā ar AArch64 funkcionalitāti, ko tas ieslēdza. --enable-static-nss kopš glibc 2.33 neko nedarīja; tā vienīgā atlikusī funkcija bija apslāpēt saitēšanas brīdinājumus par NSS funkcijām libc.a failā, ko tagad izvada vienmēr.
Dokumentācijā parādījās brīdinājums izstrādātājiem: nākotnes glibc versijas var atslābināt malloc atgriezto rādītāju līdzināšanu maziem blokiem. Pašlaik malloc vienmēr atgriež rādītāju, kas līdzināts pēc alignof (max_align_t). Nākotnē malloc(1) var atgriezt rādītāju ar nepāra adresi.
Trīs CVE drošības sadaļā, ceturtais kļūdu sarakstā
Divas no ielāpotajām ievainojamībām ir funkcijās gethostbyaddr un gethostbyaddr_r. CVE-2026-4437 ir nepareiza DNS atbildes apstrāde, CVE-2026-4438 liek funkcijai atgriezt nederīgus DNS resursdatoru nosaukumus. CVE-2026-4046 ir iconv avārija: konvertējot ibm139x kodējumus uz iekšējo formātu ar nepietiekamu bufera vietu, nostrādā assert.
Kļūdu sarakstā ir vēl viens numurs, kuru drošības sadaļa nemin. CVE-2026-6238 ir bufera pārlasīšana ns_sprintrrf funkcijā ar bojātu RDATA lauku. Turpat labota tās pašas funkcijas TSIG atzara kļūda, kur netika ievērots buflen ierobežojums; tā ļāva pārrakstīt izsaucēja buferi.
Starp pārējām 67 kļūdām ir dažas, kuras ir vērts izlasīt. Kļūda 34197 apraksta, ka steka kanārijputniņu un rādītāju aizsargu varēja atgūt no AT_RANDOM vērtības, kuru jebkura programma nolasa ar getauxval. Kļūda 33882 ir steka pārpilde nftw() funkcijā dziļas rekursijas dēļ. Kļūda 34008 ir kaudzes pārpilde scanf šablonā %mc, kad platums pārsniedz 1024.
Pirmkods ir pieejams ftp.gnu.org. Izplatītājiem glibc komanda iesaka sekot release/2.44/master zaram, kurā turpmāk nonāks konservatīvie kļūdu labojumi.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.