PĂ€rast kuue kuu pikkust arendust on vĂ€lja antud sĂŒsteemiraamatukogu GNU C Library (glibc) versioon 2.39, mis jĂ€rgib tĂ€ielikult ISO C11 ja POSIX.1-2017 standardite nĂ”udeid. Uue vĂ€ljaande koosseisu kuuluvad parandused 67 arendajalt.
Glibc 2.39-s rakendatud tÀiustuste hulgast tasub esile tÔsta:
- On tagatud kaitse varjatud virnast (shadow stack), mis lisandus Linux 6.6 tuumas ja mis vĂ”imaldab paljusid ekspluateerimise katseid blokeerida, kasutades Intel protsessorite riistvaralisi vĂ”imalusi, et kaitsta funktsioonidest vĂ€ljumise teel virnast tagasikutsumise aadressi ĂŒle kirjutamise eest. Kaitse tuum on see, et pĂ€rast funktsiooni kĂ€itamiseks ĂŒleminekut salvestab protsessor mitte ainult tavalisel virnast, vaid ka eraldi 'varjatud' virna, mida ei saa otseselt muuta. Enne funktsioonist vĂ€ljumist tĂ”mmatakse tagasikutsumise aadress varjatud virnast ja vĂ”rreldakse peamise virna tagasikutsumise aadressiga. Aadresside mittevastavus pĂ”hjustab erandi genereerimist, mis blokeerib olukorrad, kus ekspluateerimine on suutnud peamises virnas aadressi ĂŒle kirjutada. KĂ€itamiseks on lisatud koostamise valik "--enable-cet."
- Lisatud on uus pealkirjafail <stdbit.h>, mis on mÀÀratletud ISO C2X standardi kavandis ja mis sisaldab funktsioone 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 ja stdc_bit_ceil variantides tĂŒĂŒpidega 'unsigned char', 'unsigned short', 'unsigned int', 'unsigned long int' ja 'unsigned long long int'.
- Linux platvormile on rakendatud funktsioonid posix_spawnattr_getcgroup_np ja posix_spawnattr_setcgroup_np, samuti lipp POSIX_SPAWN_SETCGROUP, mis vĂ”imaldavad seadistada cgroupv2 uues protsessis funktsioonide posix_spawn ja posix_spawnp abil, vĂ€ltides vĂ”istlusolukorra teket. Funktsioonid on GNU laiendused ja nende tööks on vajalik Linuxi sĂŒdamik, mis toetab sĂŒsteemikutsungit clone3.
- Linux platvormile on rakendatud funktsioonid pidfd_spawn ja pidfd_spawnp, mis on semantiliselt sarnased funktsiooniga posix_spawn, kuid tagastavad mitte protsessi identifikaatori (PID), vaid failideskripti, mida saab kasutada funktsioonides, mis toetavad PIDFD-mehhanismi, nagu pidfd_send_signal, poll ja waitid (PIDFD on seotud konkreetse protsessiga ja ei muutu, samas kui PID vÔib pÀrast praeguse protsessi lÔpetamist olla seotud teise protsessiga, mis on seotud selle PID-iga).
- Linux platvormile on lisatud funktsioon pidfd_getpid, mis mÀÀrab protsessi identifikaatori (PID), pÔhinedes protsessi faili deskriptoril (PIDFD), mille tagastavad funktsioonid pid_spawn, fork_np ja pidfd_open.
- Funktsioonide scanf perekonda on lisatud suuruse modifikaator "wN", mida rakendatakse argumentidele, mille tĂŒĂŒbid on intN_t, int_leastN_t, uintN_t ja uint_leastN_t. NĂ€iteks kĂŒmnendvÀÀrtuste lugemiseks tĂŒĂŒpide int32_t ja int_least32_t puhul saab kasutada "%w32d", ja kuusnurksete vÀÀrtuste puhul "%w32x". Samuti on lisatud modifikaator "wfN" tĂŒĂŒpide int_fastN_t ja uint_fastN_t jaoks, mis on esindatud ISO C2X eelnĂ”u standardis.
- Lisatud seade "glibc.cpu.plt_rewrite", mis vĂ”imaldab PLT (Procedure Linkage Table) ĂŒmberkirjutamist x86-64 sĂŒsteemides, kus linkija asendab PLT-s kaudsed harud (indirect branch) otse.
- Lisatud seade "glibc.mem.decorate_maps", et lisada tÀiendavat teavet mÀlu eraldamise kohta (nÀiteks lÔimede steki, mille on loonud funktsioon pthread_create, vÔi mÀluruumi, mis on eraldatud funktsiooni malloc kaudu).
- Struktuuris "statvfs" on tagatud, et vĂ€li "f_type" tĂ€idetakse FS tĂŒĂŒbi teabega, mis on ekvivalentne struktuuri "statfs" vĂ€li sisule. Varasemalt salvestati Linuxis vĂ€li "f_type" alati vÀÀrtusele 0.
- AArch64 platvormile on libmvec ja math.h lisatud annotatsioonid, mis vĂ”imaldavad, kui kompilatsiooni ajal kasutatakse valikut "-ffast-math", rakendada vektorisatsiooni kutsete jaoks, mis on koostatavad GCC 9 ja uuemate kompilatsiooniversioonide puhul. Vektorisatsioon on sisse lĂŒlitatud matemaatiliste funktsioonide jaoks, sealhulgas 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 ja tanf.
- Komplektist on eemaldatud teek libcrypt ja sellele vastav pealkirjafail "". Rakenduste arendajatele soovitatakse ĂŒle minna alternatiivsete teekide, nĂ€iteks libxcrypt kasutamisele.
- Utiliidis ldconfig ignoreeritakse nĂŒĂŒd faile, mille nimis on sĂŒmbol â;â vĂ”i mis lĂ”ppevad â.dpkg.tmpâ ja â.dpkg.newâ, mis vĂ”imaldab mitte töödelda ajutisi faile pakihaldurite rpm ja dpkg kaudu.
- Toetuse lÔpetamine arhitektuurile ia64 (ia64*-*-linux-gnu), mida kasutatakse Intel Itaniumi protsessorites.
- Turbepuudused on kÔrvaldatud:
- CVE-2023-6246, CVE-2023-6779, CVE-2023-6780 â kriitilised haavatavused funktsioonis __vsyslog_internal(), mis vĂ”imaldavad SUID-rakenduste kĂ€ivitamise kaudu saavutada oma koodi tĂ€itmine kĂ”rgendatud privileegidega.
- CVE-2023-4911 â Glibc ld.so haavatavus, mis vĂ”imaldab sĂŒsteemis saada root-Ă”igusi. Haavatavus tuleneb CLI_TUNABLES keskkonnamuutuja analĂŒĂŒsi koodi veast ja vĂ”ib viia analĂŒĂŒsitud vÀÀrtuse kirjutamiseni vĂ€ljaspool eraldatud mĂ€lupiiri. On olemas töökindlad eksplotsiid.
- CVE-2023-4806 â haavatavus getaddrinfo funktsioonis, mis on pĂ”hjustatud mĂ€lu juurdepÀÀsust pĂ€rast selle vabastamist (use-after-free). Probleem ilmneb, kui NSS-plugin rakendab ainult 'call-back' kutseid 'gethostbyname2_r' ja 'getcanonname_r', kuid ei toeta kutset 'gethostbyname3_r'. Haavatavuse kasutamiseks peab DNS-server tagastama palju IPv6 ja IPv4 aadresse taotletud hosti jaoks, mis viib getaddrinfo funktsiooni kutsunud protsessi kokkuvarisemiseni, kui on seadistatud AI_CANONNAME, AI_ALL ja AI_V4MAPPED mĂ€rgid.
- CVE-2023-4527 â haavatavus getaddrinfo funktsioonis, mis vĂ”imaldab lugeda andmeid mĂ€lupiiri vĂ€listest aladest töötluse kĂ€igus DNS-vastuse korral, mis on saadud TCP kaudu, mahus ĂŒle 2048 baiti. Haavatavus ilmneb, kui kasutatakse valikut 'no-aaaa' failis /etc/resolv.conf.
Lisaks tuleb mĂ€rkida GNU Binutils 2.42 sĂŒsteemiteegivahendite komplekti vĂ€ljaandmist, kuhu kuuluvad sellised programmid nagu GNU linker, GNU assembler, nm, objdump, strings, strip.
Uues Binutils versioonis:
- X86-64 sĂŒsteemide assemblerile (gas) on lisatud eksperimentaalne valik '--scfi=experimental' CFI (Control Flow Integrity) konstruktsioonide sĂŒnteesimiseks kĂ€sitsi kirjutatud assemblerikoodi jaoks, mis vastab System V AMD64 ABI-le.
- Readelf programmi on lisatud valik '--extra-sym-info', et nĂ€idata sĂŒmbolite (''--symbols'') tĂ€iendavat teavet, nagu sektsiooni nimi, millele viitab st_shndx indeks.
- Objcopy utiliidile on lisatud vĂ”imalus kasutada '--set-section-flags' valikul 'large' SHF_X86_64_LARGE lipu seadmise jaoks ELF-objektide jaoks x86-64 sĂŒsteemides. '--visualize-jumps' valik toetab s390 arhitektuuri.
- S390 kÀskude desassembleerimise kÀigus on rakendatud vÔimalus kuvada kommentaare kÀskude kirjeldustes. Objdump'is saab kirjelduste kuvamiseks nÀidata parameetrit '-M insndesc' ja gdb's seade 'set disassembler-options insndesc'.
- Linkerisse on lisatud valikud '-z mark-plt' ja '-z nomark-plt', et tÀhistada PLT tabeli kirjeid, kasutades mÀrke DT_X86_64_PLT, DT_X86_64_PLTSZ ja DT_X86_64_PLTENT.
- Linkerisse on lisatud tagurpidi sortimise tugi.
- Lisatud on valikud «âwarn-execstack-objects», «âerror-execstack» ja «âerror-rxw-segments» hoiatuste vĂ”i vigade kuvamiseks, kui neid kasutatakse tĂ€itmise virnas olevates objektides.
- Toetatakse ABI 2.30 arhitektuuri LoongArch ning uusi pöördusi, mis on mÀÀratud LoongArch 1.10 spetsifikatsioonis.
- Lisatud on KVX kÀskude toe, mida kasutatakse Kalray protsessorites (nt kasutatakse SoC Coolidge'is).
- Intel arhitektuuril pĂ”hinevatele sĂŒsteemidele on lisatud jĂ€rgmised laiendused:
- Intel APX: 32 GPR-id, NDD, PUSH2/POP2, PUSHP/POPP.
- USER_MSR.
- AVX10.1.
- PBNDKB.
- SM4.
- SM3.
- SHA512.
- AVX-VNNI-INT16.
- RISC-V arhitektuuri porti on lisatud jÀrgmised laiendused:
- T-Head (XTheadVector, XTheadZvlsseg ja XTheadZvamo).
- CORE-V (XCVmac, XCValu).
- SiFive VCIX (XSfVcp).
- AArch64 arhitektuuri porti on lisatud jÀrgmised laiendused:
- SVE2.1 (Skaleeritav vektori laiendus 2.1).
- SME2.1 (Skaleeritav maatriksi laiendus 2.1).
- B16B16 (BFloat16 ja BFloat16 SVE2 ja SME2 jaoks).
- RASv2 (UsaldusvÀÀrsus, Saadavus ja Teenindatavus v2).
- LSE128 (128-bitine aatom).
- GCS (Kaitstud Kontrolli Virn).
- CHK (Kontrolli Funktsiooni Seisundit).
- SPECRES2 (TĂ€psem Spetsulgemise Piirang).
- LRCPC3 (Laadimist omandav RCpc).
- THE (TÔlke Karmistamine).
- ITE (KĂ€skude JĂ€lgimine).
- D128 (128-bitised mĂ€lu lehekĂŒlgede descriptorid).
- XS (mÀlu atribuut XS).
- Toetatakse protsessoreid AArch64 Cortex-A520, Cortex-A720, Cortex-X3 ja Cortex-X4.
- BPF assemblerisse on lisatud toe kommenteerimise eraldamisel mÀrkide «#» ja «//» kaudu ning ka kasutada tÀhte «;» vÀljendite eraldamiseks real (mÀrki «;» ei saa enam kasutada kommentaaride jaoks).
Allikas: opennet.ru
