Sei hilabeteko garapenaren ondoren, GNU C Library (glibc) 2.39 sistemaren liburutegia kaleratu da, ISO C11 eta POSIX.1-2017 estandarren eskakizunak guztiz betetzen dituena. Bertsio berriak 67 garatzaileren konponketak biltzen ditu.
Glibc 2.39-n inplementatutako hobekuntza batzuk honako hauek dira:
- Kernelean sartutako itzal-pilarako euskarria eman da. Linux 6.6 bertsioak Intel prozesadoreen hardware gaitasunak aprobetxatuz, pila buffer gainezkatzearen kasuan funtzio baten itzulera helbidea gainidaztea saihesteko ustiapen asko blokeatzen ditu. Babes honek itzulera helbideak ez ditu ohiko pilan bakarrik gordetzen, baita "itzal" pila bereizi batean ere, eta hori ezin da zuzenean aldatu, kontrola funtzio bati transferitu ondoren. Funtziotik irten aurretik, itzulera helbidea itzal pilatik ateratzen da eta pila nagusiko itzulera helbidearekin alderatzen da. Helbideen arteko desadostasunak salbuespen bat sortzen du, ustiapen batek pila nagusiko helbide bat gainidaztea lortu duen egoerak blokeatuz. "--enable-cet" eraikuntza aukera gehitu da babes hau gaitzeko.
- Goiburuko fitxategi berria gehitu da , ISO C2X estandarrean zehaztuta eta 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_count, stdc_first_leading_zero, stdc_count _ones, s_single_bit, stdc_bit_width, stdc_bit_floor eta stdc_bit_ceil "unsigned char", "unsigned" motako aldaeretan short”, "unsigned int", "unsigned long int" eta "unsigned long long int".
- Plataformarako Linux posix_spawnattr_getcgroup_np eta posix_spawnattr_setcgroup_np funtzioak, baita POSIX_SPAWN_SETCGROUP bandera ere, inplementatu dira. Hauek cgroupv2 prozesu berri batean ezartzea ahalbidetzen dute posix_spawn eta posix_spawnp funtzioak erabiliz, lasterketa baldintzak ezabatuz. Funtzio hauek GNU luzapenak dira eta nukleoa behar dute funtzionatzeko. Linux clone3 sistema-deien euskarriarekin.
- Plataformarako Linux pidfd_spawn eta pidfd_spawp funtzioak inplementatu dira, semantikan posix_spawn funtzioaren antzekoak direnak, baina ez dute prozesu identifikatzailerik (PID) itzultzen, baizik eta fitxategi deskriptore bat PIDFD mekanismoa onartzen duten funtzioetan erabiltzeko, hala nola pidfd_send_signal, poll eta waitid (PIDFD bat prozesu espezifiko batekin lotuta dago eta ez da aldatzen, PID bat beste prozesu batekin lotu daiteke PID honekin lotutako uneko prozesua amaitu ondoren).
- Plataformarako Linux pidfd_getpid funtzioa gehitu da pid_spawn, fork_np eta pidfd_open funtzioek itzulitako prozesu-fitxategiaren deskribapenean (PIDFD) oinarrituta prozesuaren identifikatzailea (PID) zehazteko.
- "wN" tamaina aldatzailea gehitu da scanf funtzioen familiara, intN_t, int_leastN_t, uintN_t eta uint_leastN_t motako argumentuetarako erabiltzen dena. Adibidez, int32_t eta int_least32_t motekin balio hamartarrak irakurtzeko, "%w32d" zehaztu dezakezu, eta balio hamaseitarrak "%w32x" gisa zehaztu daitezke. Era berean, ISO C2X estandarraren zirriborroan sartutako int_fastN_t eta uint_fastN_t motetara "wfN" aldatzailea gehitu da.
- "glibc.cpu.plt_rewrite" ezarpena gehitu da, PLT (Procedure Linkage Table) x86-64 sistemetan berridazteko aukera ematen duena, zeinetan estekatzaileak PLTko zeharkako adarrak ordezkatuko dituen zuzenekoekin.
- "glibc.mem.decorate_maps" ezarpena gehitu da memoria-esleipenaren informazio gehigarria gehitzeko (adibidez, pthread_create-k sortutako hari pila edo malloc bidez esleitutako memoria).
- "statvfs" egiturak orain "f_type" eremua fitxategi-sistema motari buruzko informazioarekin betetzen du, "statfs" egiturako eremuaren edukiaren baliokidea. Lehen, Linux "f_type" eremuak beti 0 edukitzen zuen.
- AArch64 plataformarako, libmvec eta math.h-n oharrak gehitu dira, eraikitzerakoan "-ffast-math" aukera zehaztean, GCC 9 eta konpilatzailearen bertsio berriagoetan eraikitzean deien bektorizazioa erabiltzea ahalbidetzen dutenak. Bektorizazioa gaituta dago funtzio matematikoetarako 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 eta tanf.
- libcrypt liburutegia eta lotutako goiburuko fitxategia paketetik kendu dira " " Aplikazioen garatzaileei liburutegi alternatiboetara aldatzera gomendatzen zaie, hala nola libxcrypt.
- Ldconfig utilitateak ';' karakterea duten fitxategiak saltatzen ditu. fitxategiaren izenean edo “.dpkg.tmp” eta “.dpkg.new”-ekin amaitzen dena, rpm eta dpkg pakete-kudeatzaileen aldi baterako fitxategiak prozesatzea saihesteko aukera ematen du.
- Intel Itanium prozesadoreetan erabiltzen den ia64 arkitekturarako (ia64*-*-linux-gnu) laguntza eten egin da.
- Ahuleziak konponduta:
- CVE-2023-6246, CVE-2023-6779, CVE-2023-6780 ahultasun larriak dira __vsyslog_internal() funtzioan, pribilegio handiekin kodea exekutatzea ahalbidetzen baitute SUID aplikazioak abiarazteko manipulazioen bidez.
- CVE-2023-4911 Glibc ld.-ko ahultasun bat da, sisteman root pribilegioak lortzeko aukera ematen duena. Zaurgarritasuna GLIBC_TUNABLES ingurune-aldagaian zehaztutako kate-analisi-kodean izandako errore baten ondoriozkoa da, eta baliteke analizatutako balioa mugaz kanpo idaztea esleitutako bufferean. Laneko balentriak daude.
- CVE-2023-4806 getaddrinfo funtzioan erabiltzeko ahultasun bat da. Arazoa gertatzen da NSS plugin-ak "_gethostbyname2_r" eta "_getcanonname_r" dei-itzulpenak soilik inplementatzen dituenean, baina "_gethostbyname3_r" deia onartzen ez duenean. Ahultasuna ustiatzeko, DNS zerbitzariak IPv6 eta IPv4 helbide kopuru handia itzuli behar du eskatutako ostalariarentzat, eta horrek AF_INET6 familiarentzako getaddrinfo funtzioa deitzen zuen prozesuaren hutsegitea ekarriko du AI_CANONNAME, AI_ALL eta AI_V4MAPPED banderak daudenean. ezarri.
- CVE-2023-4527 getaddrinfo funtzioaren ahultasun bat da, eta 2048 byte baino handiagoa den TCP bidez jasotako DNS erantzuna prozesatzen denean buffer-en mugatik kanpoko eremu batetik datuak irakur daitezke. Ahultasuna /etc/resolv.conf-en "no-aaaa" aukera erabiltzean gertatzen da.
Horrez gain, GNU Binutils 2.42 sistema-utilitate multzo baten askapena nabarmendu daiteke, GNU linker, GNU assembler, nm, objdump, strings, strip bezalako programak barne hartzen dituena.
Binutils-en bertsio berrian:
- "--scfi=experimental" aukera esperimental bat gehitu zaio x86-64 sistemetarako muntatzaileari (gasa) CFI (Control Flow Integrity) eraikuntzak sintetizatzeko, System V AMD64 ABIari dagozkion muntaketa-kode eskuz idatzita.
- Readelf-i "--extra-sym-info" aukera gehitu zaio ikurrei buruzko informazio hedatua bistaratzeko ("-symbols"), adibidez, st_shndx indizeak erreferentziatutako atalaren izena.
- Objcopy utilitateak "--set-section-flags" aukera "handi" balioarekin erabiltzeko aukera ematen du, SHF_X86_64_LARGE banderaren atala x86-64 sistemetan ELF objektuetarako. "--visualize-jups" aukerak s390 arkitekturarako euskarria ezartzen du.
- S390 argibideak desmuntatzerakoan, argibideen deskribapenean iruzkinak bistaratzeko gaitasuna ezarri da. Deskribapenak gaitzeko, "-M insndesc" aukera zehaztu dezakezu objdump-en, eta "set disassembler-options insndesc" aukera gdb-en.
- Lokatzaileari "-z mark-plt" eta "-z nomark-plt" aukerak gehitu zaizkio PLT taulako sarrerak markatzeko DT_X86_64_PLT, DT_X86_64_PLTSZ eta DT_X86_64_PLTENT etiketak erabiliz.
- Lokatzaileari alderantzizko ordenatzeko euskarria gehitu zaio.
- "--warn-execstack-objects", "--error-execstack" eta "--error-rxw-segments" aukerak gehitu dira abisuak edo akatsak ateratzeko pila-objektu exekutagarrietan erabiltzen denean.
- LoongArch arkitekturaren ABI 2.30rako euskarria inplementatu da, baita LoongArch 1.10 zehaztapenean definitutako jarraibide berrientzako euskarria ere.
- Kalray prozesadoreetan erabiltzen den KVX instrukzio-multzorako laguntza gehitu da (adibidez, SoC Coolidge-n erabiltzen dena).
- Intel arkitekturan oinarritutako sistemetarako, luzapenetarako laguntza gehitu da:
- Intel APX: 32 GPR, NDD, PUSH2/POP2, PUSHP/POPP.
- USER_MSR.
- AVX10.1.
- PBNDKB.
- SM4.
- SM3.
- SHA512.
- AVX-VNNI-INT16.
- Luzapenetarako laguntza gehitu da RISC-V arkitektura atakan:
- T-Head (XTheadVector, XTheadZvlsseg eta XTheadZvamo).
- CORE-V (XCVmac, XCValu).
- SiFive VCIX (XSfVcp).
- AArch64 arkitekturarako portuan luzapenetarako laguntza gehitu da:
- SVE2.1 (Scalable Vector Extension 2.1).
- SME2.1 (Scalable Matrix Extension 2.1).
- B16B16 (BFloat16 eta BFloat16 SVE2 eta SME2rako).
- RASv2 (Fidagarritasuna, Erabilgarritasuna eta Zerbitzua v2).
- LSE128 (128 biteko atomikoa).
- GCS (Guarded Control Stac).
- CHK (Egiaztatu funtzioaren egoera).
- SPECRES2 (Espekulazio-murrizketa hobetua).
- LRCPC3 (Load-Acquire RCpc).
- THE (Itzulpenaren gogortzea).
- ITE (Instruction Trace).
- D128 (128 biteko memoria-orri-taulen deskribatzaileak).
- XS (XS memoria-atributua).
- AArch64 Cortex-A520, Cortex-A720, Cortex-X3 eta Cortex-X4 prozesadoreetarako laguntza gehitu da.
- Clang/LLVM mihiztagailuarekin bateragarri izateko, BPF mihiztatzaileak iruzkinak "#" eta "//" karaktereekin bereizteko laguntza gehitu du, baita ";" karakterea erabiltzeko ere. lerro baten barruan adierazpenak bereizteko (";" ezin da iruzkinetarako erabili).
Iturria: opennet.ru
