Utgivningen av systembiblioteket Glibc 2.39 och verktygssviten GNU Binutils 2.42

Efter sex mÄnaders utveckling publicerades versionen av systembiblioteket GNU C Library (glibc) 2.39, som helt uppfyller kraven i standarderna ISO C11 och POSIX.1-2017. Den nya versionen innehÄller korrigeringar frÄn 67 utvecklare.

Bland förbÀttringarna som införts i Glibc 2.39 kan nÀmnas:

  • Stöd för en skuggstack (shadow stack) har lagts till, vilket introducerades i Linux-kĂ€rnan 6.6 och möjliggör blockering av mĂ„nga exploiter genom att anvĂ€nda hĂ„rdvarufunktioner i Intel-processorer för att skydda mot överskrivning av returadressen frĂ„n funktionen vid stacköverflöd. Skyddet gĂ„r ut pĂ„ att efter att kontrollen har överförts till funktionen, sparas returadresserna av processorn inte bara i den vanliga stacken utan ocksĂ„ i en separat "skugg"-stack som inte kan Ă€ndras direkt. Innan utgĂ„ngen frĂ„n funktionen fĂ„r returadressen extraheras frĂ„n den skuggstacken och jĂ€mföras med returadressen frĂ„n den huvudsakliga stacken. OöverensstĂ€mmelse mellan adresserna leder till genereringen av ett undantag som blockerar situationer dĂ€r en exploit lyckas överskrida adressen i den huvudsakliga stacken. För att aktivera detta har en kompilatoroption "--enable-cet" lagts till.
  • En ny headerfil <stdbit.h> har lagts till, definierad i utkastet till standarden ISO C2X och som inkluderar funktioner 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 och stdc_bit_ceil i versioner med typerna "unsigned char", "unsigned short", "unsigned int", "unsigned long int" och "unsigned long long int".
  • För Linux-plattformen har funktionerna posix_spawnattr_getcgroup_np och posix_spawnattr_setcgroup_np implementerats, liksom flaggan POSIX_SPAWN_SETCGROUP, som gör det möjligt att konfigurera cgroupv2 i den nya processen med hjĂ€lp av funktionerna posix_spawn och posix_spawnp, vilket eliminerar risken för tidskonflikter. Funktionerna Ă€r GNU-förlĂ€ngningar och krĂ€ver att Linux-kĂ€rnan har stöd för systemanropet clone3.
  • För Linux-plattformen har funktionerna pidfd_spawn och pidfd_spawp implementerats, som Ă€r semantiskt nĂ€ra funktionen posix_spawn, men som returnerar en filbeskrivare för anvĂ€ndning i funktioner som stöder PIDFD-mekanismen, sĂ„som pidfd_send_signal, poll och waitid (PIDFD Ă€r kopplad till en specifik process och förĂ€ndras inte, medan PID kan kopplas till en annan process efter att den aktuella processen kopplad till detta PID har avslutats).
  • För Linux-plattformen har funktionen pidfd_getpid lagts till för att bestĂ€mma processens identifierare (PID) baserat pĂ„ filbeskrivaren för processen (PIDFD) som returneras av funktionerna pid_spawn, fork_np och pidfd_open.
  • I scanf-familjen av funktioner har storleksmodifieraren "wN" lagts till för argument av typerna intN_t, int_leastN_t, uintN_t och uint_leastN_t. Till exempel, för att lĂ€sa decimala vĂ€rden med typerna int32_t och int_least32_t kan "%w32d" anges, medan för hexadecimala vĂ€rden kan "%w32x" anvĂ€ndas. PĂ„ liknande sĂ€tt har modifieraren "wfN" lagts till för typerna int_fastN_t och uint_fastN_t, som presenteras i den preliminĂ€ra standarden ISO C2X.
  • InstĂ€llningen "glibc.cpu.plt_rewrite" har lagts till, som aktiverar omskrivning av PLT (Procedure Linkage Table) pĂ„ x86-64-system, dĂ€r lĂ€nkaren ersĂ€tter indirekta hopp i PLT med direkta.
  • InstĂ€llningen "glibc.mem.decorate_maps" har lagts till för att lĂ€gga till extra information om minnesallokering (t.ex. om stacken för trĂ„dar skapad av pthread_create-funktionen eller minnet som Ă€r allokerat via malloc).
  • I strukturen "statvfs" sĂ€kerstĂ€lls att fĂ€ltet "f_type" fylls med information om FS-typ som motsvarar innehĂ„llet i fĂ€ltet i strukturen "statfs". Tidigare i Linux har fĂ€ltet "f_type" alltid fyllts med 0.
  • För AArch64-plattformen har annoteringar lagts till i libmvec och math.h, som möjliggör vektorisering av anrop vid kompilering med alternativet "-ffast-math" i GCC 9 och nyare versioner av kompilatorn. Vektoriseringen aktiveras för matematiska funktioner som 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 och tanf.
  • Biblioteket libcrypt och den associerade headerfilen "" har tagits bort. Utvecklare av applikationer rekommenderas att övergĂ„ till att anvĂ€nda alternativa bibliotek som libxcrypt.
  • I verktyget ldconfig hoppar man nu över filer med symbolen ‘;’ i filnamnet eller som slutar med «.dpkg.tmp» och «.dpkg.new», vilket gör att tillfĂ€lliga filer frĂ„n paketförvaltare som rpm och dpkg inte bearbetas.
  • Stödet för arkitekturen ia64 (ia64*-*-linux-gnu) som anvĂ€nds i Intel Itanium-processorer har upphört.
  • SĂ„rbarheter Ă„tgĂ€rdade:
    • CVE-2023-6246, CVE-2023-6779, CVE-2023-6780 — kritiska sĂ„rbarheter i funktionen __vsyslog_internal(), som genom manipulering av SUID-applikationers körning gör det möjligt att köra egen kod med förhöjda privilegier.
    • CVE-2023-4911 — en sĂ„rbarhet i Glibc ld.so som möjliggör erhĂ„llande av root-rĂ€ttigheter i systemet. SĂ„rbarheten orsakas av ett fel i parsningen av strĂ€ngen angiven i miljövariabeln GLIBC_TUNABLES, vilket kan leda till att det parserade vĂ€rdet skrivs utanför det tilldelade buffret. Det finns fungerande exploits.
    • CVE-2023-4806 — en sĂ„rbarhet i funktionen getaddrinfo, som orsakas av Ă„tkomst till minnet efter att det har frigjorts (use-after-free). Problemen uppstĂ„r nĂ€r NSS-pluginet bara implementerar call-back-anropen «_gethostbyname2_r» och «_getcanonname_r», men inte stöder anropet «_gethostbyname3_r». För att sĂ„rbarheten ska kunna utnyttjas mĂ„ste DNS-servern returnera ett stort antal adresser IPv6 och IPv4 för den begĂ€rda vĂ€rden, vilket leder till att processen som anropar funktionen getaddrinfo kraschar för AF_INET6-familjen nĂ€r flaggorna AI_CANONNAME, AI_ALL och AI_V4MAPPED Ă€r satta.
    • CVE-2023-4527 — en sĂ„rbarhet i funktionen getaddrinfo som gör det möjligt att lĂ€sa data utanför buffertgrĂ€nserna vid behandling av DNS-svar erhĂ„llna över TCP, som Ă€r större Ă€n 2048 byte. SĂ„rbarheten uppstĂ„r nĂ€r alternativet «no-aaaa» anvĂ€nds i /etc/resolv.conf.

    Dessutom kan det nÀmnas att ett nytt paket av systemverktyg GNU Binutils 2.42 har slÀppts, som inkluderar program som GNU linker, GNU assembler, nm, objdump, strings, strip.

    I den nya versionen av Binutils:

    • I assemblersprĂ„ket (gas) för x86-64-system har en experimentell alternativ «—scfi=experimental» lagts till för att syntetisera CFI-konstruktioner (Control Flow Integrity) för manuellt skriven assemblerkod i enlighet med System V AMD64 ABI.
    • I programmet readelf har alternativet «—extra-sym-info» lagts till för att visa utökad information om symboler (»—symbols«), sĂ„som namnet pĂ„ sektionen som refereras av indexet st_shndx.
    • I verktyget objcopy har möjligheten att anvĂ€nda vĂ€rdet «large» i alternativet «—set-section-flags» införts för att stĂ€lla in sektionens flagga SHF_X86_64_LARGE för ELF-objekt pĂ„ x86-64-system. Stödet för arkitekturen s390 har implementerats i alternativet «—visualize-jumps».
    • Vid disassemblage av instruktioner för s390 har möjligheten att visa kommentarer i instruktionernas beskrivningar implementerats. För att inkludera beskrivningar i objdump kan du ange parametern "-M insndesc", och i gdb - instĂ€llningen "set disassembler-options insndesc".
    • LĂ€nkaren har fĂ„tt tillĂ€gg av alternativen "-z mark-plt" och "-z nomark-plt" för att mĂ€rka poster i PLT-tabellen med hjĂ€lp av taggarna DT_X86_64_PLT, DT_X86_64_PLTSZ och DT_X86_64_PLTENT.
    • LĂ€nkaren har fĂ„tt stöd för sortering i omvĂ€nd ordning.
    • TillĂ€gg av alternativen "—warn-execstack-objects", "—error-execstack" och "—error-rxw-segments" för att ge varningar eller felmeddelanden vid anvĂ€ndning i objekt för exekveringsstack.
    • Stöd för ABI 2.30 för LoongArch-arkitekturen har genomförts, liksom stöd för nya instruktioner som definieras i specifikationen LoongArch 1.10.
    • Stöd för instruktionsuppsĂ€ttningen KVX, anvĂ€nd i processorer frĂ„n Kalray (anvĂ€nds till exempel i SoC Coolidge), har lagts till.
    • För system baserade pĂ„ Intel-arkitekturen har stöd för följande tillĂ€gg lagts till:
      • Intel APX: 32 GPRs, NDD, PUSH2/POP2, PUSHP/POPP.
      • USER_MSR.
      • AVX10.1.
      • PBNDKB.
      • SM4.
      • SM3.
      • SHA512.
      • AVX-VNNI-INT16.
    • I porten för RISC-V-arkitekturen har stöd för följande tillĂ€gg lagts till:
      • T-Head (XTheadVector, XTheadZvlsseg och XTheadZvamo).
      • CORE-V (XCVmac, XCValu).
      • SiFive VCIX (XSfVcp).
    • I porten för AArch64-arkitekturen har stöd för följande tillĂ€gg lagts till:
      • SVE2.1 (Scalable Vector Extension 2.1).
      • SME2.1 (Scalable Matrix Extension 2.1).
      • B16B16 (BFloat16 och BFloat16 för SVE2 och SME2).
      • RASv2 (Reliability, Availability and Serviceability v2).
      • LSE128 (128-bit Atomic).
      • 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 minnesadministratörspecifikationer).
      • XS (minnesattribut XS).
    • Stöd för processorer AArch64 Cortex-A520, Cortex-A720, Cortex-X3 och Cortex-X4 har lagts till.
    • I BPF-assemblern har stöd för att separera kommentarer med tecknen "#" och "//" lagts till sĂ„ att det blir kompatibelt med clang/LLVM, samt anvĂ€ndning av tecknet ";" för att separera uttryck i raden (";" kan inte lĂ€ngre anvĂ€ndas för kommentarer).

    KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster