Vabastatud sĂŒsteemiraamatukogu Glibc 2.39 ja GNU Binutils 2.42 utiliidid

PÀrast kuue kuu arendustööd on avaldatud GNU C Library (glibc) 2.39 versioon, mis jÀrgib tÀielikult ISO C11 ja POSIX.1-2017 standardite nÔudeid. Uues vÀljaandes on sisse viidud 67 arendaja parandus.

Glibc 2.39-s ellu viidud tÀiustustest vÔib mÀrkida:

  • On tagatud varustatud virnastuse toetamine (shadow stack), mis tuli kasutusele Linuxi tuumas 6.6, vĂ”imaldades Ă€ra hoida paljude eksploiteerimise meetodite toimet, kasutades Intel'i protsessorite riistvaralist tuge tagasinavade kaitsmiseks funktsioonide sĂ”ltumatute aadresside liialdamise vĂ€ltimiseks virnastuse ĂŒletamisel. Kaitse pĂ”hiolemus on see, et pĂ€rast kontrolli edastamist funktsioonile salvestab protsessor tagasipöördumise aadressid mitte ainult tavapĂ€rasesse virnasse, vaid ka eraldi "varju" virnasse, mida ei saa otse muuta. Enne funktsioonist vĂ€ljumist tuvastatakse tagasipöördumise aadress varju virnast ja vĂ”rreldakse seda peamise virna aadressiga. Aadresside mitteĂŒhilduvus pĂ”hjustab erandi genereerimise, mis hoiab Ă€ra olukorrad, kus eksploiteerija on suutnud peamise virna aadressi ĂŒle kirjutada. Funktsiooni aktiveerimiseks on lisatud kompileerimise valik "--enable-cet".
  • Lisatud on uus pealkirjafail <stdbit.h>, mis on mÀÀratletud ISO C2X standardi visandis ja 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 tĂŒĂŒpide „unsigned char“, „unsigned short“, „unsigned int“, „unsigned long int“ ja „unsigned long long int“ variatsioonides.
  • Linuxi platvormil on rakendatud funktsioonid posix_spawnattr_getcgroup_np ja posix_spawnattr_setcgroup_np, samuti lipp POSIX_SPAWN_SETCGROUP, mis vĂ”imaldavad seadistada cgroupv2 uues protsessis kasutades funktsioone posix_spawn ja posix_spawnp, vĂ€ltides vĂ”idujooksu. Need funktsioonid on GNU laiendused ja töötamiseks nĂ”uavad Linuxi tuuma, mis toetab sĂŒsteemi kutset clone3.
  • Linuxi platvormil on rakendatud funktsioonid pidfd_spawn ja pidfd_spawp, mis on semantiliselt seotud funktsiooniga posix_spawn, kuid tagastavad mitte protsessi identifikaatori (PID), vaid failikirjeldaja, mida saab kasutada PIDFD mehhanismi toetavate funktsioonide, nagu pidfd_send_signal, poll ja waitid, korral. (PIDFD on seotud konkreetse protsessiga ja ei muutu, samas kui PID vĂ”ib pĂ€rast hetkel joont leidnud protsessi lĂ”petamist olla seotud mĂ”ne teise protsessiga.)
  • Linuxi platvormil on lisatud funktsioon pidfd_getpid, mis mÀÀratleb protsessi identifikaatori (PID) failikirjeldaja (PIDFD) pĂ”hjal, mille on tagastanud funktsioonid pid_spawn, fork_np ja pidfd_open.
  • Funktsioonide scanf perekonnas on lisatud suuruse modifikaator „wN“, mis rakendatakse argumentidele, mille tĂŒĂŒp on intN_t, int_leastN_t, uintN_t ja uint_leastN_t. NĂ€iteks kĂŒmnendite vÀÀrtuste lugemiseks int32_t ja int_least32_t tĂŒĂŒpides vĂ”ib mÀÀrata „%w32d“, kuueteistkĂŒmnendite puhul - „%w32x“. Samuti on lisatud modifikaator „wfN“ tĂŒĂŒpidele int_fastN_t ja uint_fastN_t, mis on esitatud ISO C2X visandi standardis.
  • Lisatud on seade „glibc.cpu.plt_rewrite“, mis aktiveerib PLT (Procedure Linkage Table) kirjutamise x86-64 sĂŒsteemides, mille korral siduja asendab PLT-s kaudseid ĂŒleminekuid (indirect branch) otseteede (direct branch) vastu.
  • Lisatud on seade „glibc.mem.decorate_maps“, mis lisab tĂ€iendavat teavet mĂ€lu eraldamise kohta (nt lĂ”ime virnast, mis on loodud pthread_create funktsiooni kaudu, vĂ”i mĂ€luruumi, mille on eraldanud malloc).
  • Struktuuris „statvfs“ on tagatud vĂ€lja „f_type“ tĂ€itmine failisĂŒsteemi tĂŒĂŒbi teabega, mis on ekvivalentne vĂ€ljale struktuuris „statfs“. Varasematel Linuxi versioonidel on vĂ€lja „f_type“ alati salvestatud vÀÀrtusele 0.
  • Platvormile AArch64 on libmvec ja math.h lisatud annotatsioonid, mis vĂ”imaldavad kompileerimise ajal kasutada vektoriseerimist, kui mÀÀratakse kompileerimise valik „-ffast-math“ GCC 9 ja uuemate kompilaatoriversioonide puhul. Vektoriseerimine on lubatud matemaatilistele funktsioonidele 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 ja log2f, sin, sinf, tan ja tanf.
  • Kogumist on eemaldatud teek libcrypt ja seotud pealkirjafail „<crypt.h>“. Rakenduste arendajatele soovitatakse minna ĂŒle alternatiivsetele teekidele, nagu libxcrypt.
  • Utiliidis ldconfig vĂ€listatakse nĂŒĂŒd failid, mille nimis on sĂŒmbol ‘;’ vĂ”i mis lĂ”pevad „.dpkg.tmp“ ja „.dpkg.new“, mis vĂ”imaldab mitte töödelda ajutisi pakihaldurite failide rpm ja dpkg.
  • Toetamine arhitektuuri ia64 (ia64*-*-linux-gnu) suletakse, mis on rakendatud Intel Itaniumi protsessorites.
  • Turbeteated:
    • CVE-2023-6246, CVE-2023-6779, CVE-2023-6780 — kriitilised haavatavused funktsioonis __vsyslog_internal(), mis vĂ”imaldavad SUID-rakenduste kĂ€ivitamise kaudu oma koodi tĂ€itmist kĂ”rgendatud privileegidega.
    • CVE-2023-4911 — haavatavus Glibc ld.so-s, mis vĂ”imaldab sĂŒsteemis saada juurĂ”iguseid. Haavatavus tuleneb veast GLIBC_TUNABLES keskkonnamuutuja pingereadingu koodis ja vĂ”ib viia lahtise vÀÀrtuse kirjutamiseni eraldatud puust vĂ€lja. On olemas toimivad eksploiteerimised.
    • CVE-2023-4806 — haavatavus getaddrinfo funktsioonis, mis tuleneb mĂ€lu juurde pÀÀsemisest pĂ€rast selle vabastamist (use-after-free). Probleem ilmneb, kui NSS-plugin rakendab ainult callback-kutsed "_gethostbyname2_r" ja "_getcanonname_r", kuid ei toeta "_gethostbyname3_r". Haavatavuse Ă€rakasutamiseks peab DNS-server tagastama palutud hosti jaoks palju IPv6 ja IPv4 aadresse, mis pĂ”hjustab getaddrinfo funktsiooni kutsunud protsessi kokkuvarisemise AF_INET6 peres, kui lipud AI_CANONNAME, AI_ALL ja AI_V4MAPPED on seatud.
    • CVE-2023-4527 — haavatavus getaddrinfo funktsioonis, mis vĂ”imaldab lugeda andmeid puu piiridest vĂ€lja, töötledes TCP kaudu saadud DNS-vastust, mille suurus ĂŒletab 2048 baiti. Haavatavus ilmneb kui "no-aaaa" valikut kasutatakse failis /etc/resolv.conf.

    Lisaks on vĂ€lja antud GNU Binutils 2.42 sĂŒsteemitarvikute kogum, mis sisaldab selliseid programme nagu GNU linker, GNU assembler, nm, objdump, strings, strip.

    Uues versioonis Binutils:

    • x86-64 sĂŒsteemide assemblerisse (gas) lisatud eksperimentaalne vĂ”imalus "—scfi=experimental" CFI (Control Flow Integrity) konstruktsioonide sĂŒnteesimiseks kĂ€sitsi kirjutatud assemblerkoodi jaoks, mis vastab System V AMD64 ABI-le.
    • readelf programmile lisatud vĂ”imalus "—extra-sym-info", mis vĂ€ljastab tĂ€iendavat teavet sĂŒmbolite kohta ("—symbols"), nĂ€iteks sektsiooni nimed, millele st_shndx indeks viitab.
    • objcopy utiliidis on lisatud vĂ”imalus kasutada "—set-section-flags" valikutes vÀÀrtust "large" ELF-objektide SHF_X86_64_LARGE mĂ€rkimiseks x86-64 sĂŒsteemidel. "—visualize-jumps" valikus on toetatud arhitektuuri s390.
    • s390 juhiste dekeerteerimise ajal on lisatud vĂ”imalus kuvada kommentaare juhiste kirjeldustes. Desassemblerisse objdump-s saab kirjelduste lisamiseks mÀÀrata parameetri "-M insndesc", ja gdb-s seadistuse "set disassembler-options insndesc".
    • Linkerisse on lisatud valikud "-z mark-plt" ja "-z nomark-plt", et markeerida PLT tabeli kirjeid, kasutades silte DT_X86_64_PLT, DT_X86_64_PLTSZ ja DT_X86_64_PLTENT.
    • Linkerisse on lisatud tagurpidi sorteeringu tugi.
    • Lisatud valikud "—warn-execstack-objects", "—error-execstack" ja "—error-rxw-segments", et vĂ€ljastada hoiatuste vĂ”i vigade teateid, kui kasutatakse tĂ€idetava stendi objekte.
    • Implementatud on ABI 2.30 LoongArch arhitektuuri tugi ja uute kĂ€skude tugi, mis on mÀÀratletud LoongArch 1.10 spetsifikatsioonis.
    • KVX kĂ€skude toetus, mida kasutatakse Kalray protsessorites (nt kasutatakse SoC Coolidge'is).
    • Intel arhitektuuri pĂ”hise sĂŒsteemide tugi jĂ€rgmiste laienduste jaoks:
      • Intel APX: 32 GPR sidurid, NDD, PUSH2/POP2, PUSHP/POPP.
      • USER_MSR.
      • AVX10.1.
      • PBNDKB.
      • SM4.
      • SM3.
      • SHA512.
      • AVX-VNNI-INT16.
    • RISC-V arhitektuuri pordile on lisatud laienduste tugi:
      • T-Head (XTheadVector, XTheadZvlsseg ja XTheadZvamo).
      • CORE-V (XCVmac, XCValu).
      • SiFive VCIX (XSfVcp).
    • AArch64 arhitektuuri pordile on lisatud laienduste toetus:
      • SVE2.1 (Scalable Vector Extension 2.1).
      • SME2.1 (Scalable Matrix Extension 2.1).
      • B16B16 (BFloat16 ja BFloat16 SVE2 ja SME2 jaoks).
      • RASv2 (Reliability, Availability and Serviceability v2).
      • LSE128 (128-biti Atomaarsed).
      • 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 mĂ€lu lehekĂŒlgede descriptorid).
      • XS (mĂ€lu atribuut XS).
    • Toetatakse AArch64 Cortex-A520, Cortex-A720, Cortex-X3 ja Cortex-X4 protsessoreid.
    • BPF assemblerisse lisatud toimetulemiseks clang/LLVM assembleriga on toetatud kommentaaride eraldamist mĂ€rgiga "#" ja "//", samuti semikooloniga ";" vĂ€ljendite eraldamiseks rea sees (semikoolon ei tohi enam olla kasutusel kommentaaride jaoks).

    Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster