Выпуск систСмной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Glibc 2.39 ΠΈ Π½Π°Π±ΠΎΡ€Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ GNU Binutils 2.42

ПослС ΡˆΠ΅ΡΡ‚ΠΈ мСсяцСв Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· систСмной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GNU C Library (glibc) 2.39, которая ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ слСдуСт трСбованиям стандартов ISO C11 ΠΈ POSIX.1-2017. Π’ состав Π½ΠΎΠ²ΠΎΠ³ΠΎ выпуска Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ исправлСния ΠΎΡ‚ 67 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Из Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² Glibc 2.39 ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ:

  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π΅Π½Π΅Π²ΠΎΠ³ΠΎ стСка (shadow stack), появившСгося Π² ядрС Linux 6.6 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… эксплоитов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ возмоТности процСссоров Intel для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ пСрСзаписи адрСса Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² случаС пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π° Π² стСкС. Π‘ΡƒΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ послС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, адрСса Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ процСссором Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ стСкС, Π½ΠΎ ΠΈ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ «Ρ‚Π΅Π½Π΅Π²ΠΎΠΌ» стСкС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ адрСс Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° извлСкаСтся ΠΈΠ· Ρ‚Π΅Π½Π΅Π²ΠΎΠ³ΠΎ стСка ΠΈ свСряСтся с адрСсом Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠ· основного стСка. НСсовпадСниС адрСсов ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ситуации, ΠΊΠΎΠ³Π΄Π° эксплоиту ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ адрСс Π² основном стСкС. Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° сборочная опция «—enable-cet».
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» <stdbit.h>, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Π² Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠ΅ стандарта ISO C2X ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 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 and stdc_bit_ceil Π² Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ «unsigned char», «unsigned short», «unsigned int», «unsigned long int» ΠΈ «unsigned long long int».
  • Для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Linux Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ posix_spawnattr_getcgroup_np ΠΈ posix_spawnattr_setcgroup_np, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π»Π°Π³ POSIX_SPAWN_SETCGROUP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ cgroupv2 Π² Π½ΠΎΠ²ΠΎΠΌ процСссС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ posix_spawn ΠΈ posix_spawnp, ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ состояния Π³ΠΎΠ½ΠΊΠΈ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ GNU ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ наличия ядра Linux с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ систСмного Π²Ρ‹Π·ΠΎΠ²Π° clone3.
  • Для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Linux Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pidfd_spawn ΠΈ pidfd_spawp, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π»ΠΈΠ·ΠΊΠΈ ΠΏΠΎ сСмантикС ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ posix_spawn, Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π½Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСсса (PID), Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор для использования Π² функциях, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ PIDFD, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ pidfd_send_signal, poll ΠΈ waitid (PIDFD связываСтся с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ процСссом ΠΈ Π½Π΅ мСняСтся, Π² Ρ‚ΠΎΠΌ врСмя ΠΊΠ°ΠΊ PID ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ привязан ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ процСссу послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ процСсса, ассоциированного с этим PID).
  • Для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Linux Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция pidfd_getpid для опрСдСлСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° процСсса (PID) Π½Π° основС Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ дСскриптора процСсса (PIDFD), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½Π½ΠΎΠ³ΠΎ функциями pid_spawn, fork_np ΠΈ pidfd_open.
  • Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сСмСйства scanf Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° «wN», примСняСмый для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ intN_t, int_leastN_t, uintN_t ΠΈ uint_leastN_t. НапримСр, для чтСния дСсятичных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ int32_t ΠΈ int_least32_t ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ «%w32d», Π° ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… — «%w32x». Аналогично Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ «wfN» для Ρ‚ΠΈΠΏΠΎΠ² int_fastN_t ΠΈ uint_fastN_t, прСдставлСнных Π² Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΎΠΌ стандартС ISO C2X.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° настройка «glibc.cpu.plt_rewrite», Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ PLT (Procedure Linkage Table) Π½Π° систСмах x86-64 ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ косвСнныС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ (indirect branch) Π² PLT Π½Π° прямыС.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° настройка «glibc.mem.decorate_maps» для добавлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ памяти (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎ стСкС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², созданном Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ pthread_create, ΠΈΠ»ΠΈ памяти, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· malloc).
  • Π’ структурС «statvfs» обСспСчСно Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ поля «f_type» ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Ρ‚ΠΈΠΏΠ΅ Π€Π‘, эквивалСнтной содСрТимому поля Π² структурС «statfs». Π Π°Π½Π΅Π΅ Π² Linux Π² ΠΏΠΎΠ»Π΅ «f_type» всСгда записывался 0.
  • Для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ AArch64 Π² libmvec ΠΈ math.h Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΏΡ€ΠΈ сборкС ΠΎΠΏΡ†ΠΈΠΈ «-ffast-math» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΡ€ΠΈ сборкС Π² GCC 9 ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях компилятора. ВСкторизация Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ для матСматичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ 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 ΠΈ tanf.
  • Из состава ΡƒΠ΄Π°Π»Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libcrypt ΠΈ связанный с Π½Π΅ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» «<crypt.h>». Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ рСкомСндуСтся ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° использованиС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ libxcrypt.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ ldconfig Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ с символом ‘;’ Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° «.dpkg.tmp» ΠΈ «.dpkg.new», Ρ‡Ρ‚ΠΎ позволяСт Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Ρ… ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² rpm ΠΈ dpkg.
  • ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ia64 (ia64*-*-linux-gnu), примСняСмой Π² процСссорах Intel Itanium.
  • УстранСны уязвимости:
    • CVE-2023-6246, CVE-2023-6779, CVE-2023-6780 — критичСскиС уязвимости Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ __vsyslog_internal(), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· манипуляции с запуском SUID-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ выполнСния своСго ΠΊΠΎΠ΄Π° с ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ привилСгиями.
    • CVE-2023-4911 — ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Glibc ld.so, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° root Π² систСмС. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° ошибкой Π² ΠΊΠΎΠ΄Π΅ Ρ€Π°Π·Π±ΠΎΡ€Π° строки, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния GLIBC_TUNABLES, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ записи Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ значСния Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°. Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ эксптоиты.
    • CVE-2023-4806 — ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getaddrinfo, вызванная ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ памяти послС Π΅Ρ‘ освобоТдСния (use-after-free). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявляСтся ΠΊΠΎΠ³Π΄Π° NSS-ΠΏΠ»Π°Π³ΠΈΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ call-back-Π²Ρ‹Π·ΠΎΠ²Ρ‹ «_gethostbyname2_r» ΠΈ «_getcanonname_r», Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² «_gethostbyname3_r». Для эксплуатации уязвимости DNS-сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ для Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ хоста большоС число адрСсов IPv6 ΠΈ IPv4, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΠΊΡ€Π°Ρ…Ρƒ процСсса, Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getaddrinfo для сСмСйства AF_INET6 ΠΏΡ€ΠΈ выставлСнии Ρ„Π»Π°Π³ΠΎΠ² AI_CANONNAME, AI_ALL ΠΈ AI_V4MAPPED.
    • CVE-2023-4527 — ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getaddrinfo, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· области Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π±ΡƒΡ„Π΅Ρ€Π° ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ DNS-ΠΎΡ‚Π²Π΅Ρ‚Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ TCP, Ρ€Π°ΠΌΠ΅Ρ€ΠΎΠΌ Π±ΠΎΠ»Π΅ 2048 Π±Π°ΠΉΡ‚. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ проявляСтся ΠΏΡ€ΠΈ использовании ΠΎΠΏΡ†ΠΈΠΈ «no-aaaa» Π² /etc/resolv.conf.

    Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ выпуск Π½Π°Π±ΠΎΡ€Π° систСмных ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ GNU Binutils 2.42, Π² состав ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ входят Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠ°ΠΊ GNU linker, GNU assembler, nm, objdump, strings, strip.

    Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии Binutils:

    • Π’ ассСмблСр (gas) для систСм x86-64 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ опция «—scfi=experimental» для синтСза конструкций CFI (Control Flow Integrity) для Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ написанного ассСмбрСрного ΠΊΠΎΠ΄Π°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ System V AMD64 ABI.
    • Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ readelf Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «—extra-sym-info» для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ символах («—symbols»), Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ имя сСкции, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ссылаСтся индСкс st_shndx.
    • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ objcopy прСдоставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π² ΠΎΠΏΡ†ΠΈΠΈ «—set-section-flags» значСния «large»Π΄Π»Ρ выставлСния сСкции Ρ„Π»Π°Π³Π° SHF_X86_64_LARGE для ELF-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° систСмах x86-64. Π’ ΠΎΠΏΡ†ΠΈΠΈ «—visualize-jumps» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ s390.
    • ΠŸΡ€ΠΈ дизассСмблировании инструкций s390 Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ отобраТСния ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² описаниСм инструкций. Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ описаний Π² objdump ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ «-M insndesc», Π° Π² gdb — настройку «set disassembler-options insndesc».
    • Π’ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ «-z mark-plt» ΠΈ «-z nomark-plt» для ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ PLT, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅Π³ΠΈ DT_X86_64_PLT, DT_X86_64_PLTSZ ΠΈ DT_X86_64_PLTENT.
    • Π’ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сортировки Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ «—warn-execstack-objects», «—error-execstack» ΠΈ «—error-rxw-segments» для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ошибок ΠΏΡ€ΠΈ использовании Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… исполняСмого стСка.
    • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ABI 2.30 Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ LoongArch, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²Ρ‹Ρ… инструкций, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π² спСцификации LoongArch 1.10.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π°Π±ΠΎΡ€Π° инструкций KVX, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² процСссторах Kalray (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² SoC Coolidge).
    • Для систСм Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Intel Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ:
      • Intel APX: 32 GPRs, NDD, PUSH2/POP2, PUSHP/POPP.
      • USER_MSR.
      • AVX10.1.
      • PBNDKB.
      • SM4.
      • SM3.
      • SHA512.
      • AVX-VNNI-INT16.
    • Π’ ΠΏΠΎΡ€Ρ‚ для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ RISC-V Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ:
      • T-Head (XTheadVector, XTheadZvlsseg ΠΈ XTheadZvamo).
      • CORE-V (XCVmac, XCValu).
      • SiFive VCIX (XSfVcp).
    • Π’ ΠΏΠΎΡ€Ρ‚ для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ AArch64 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ:
      • SVE2.1 (Scalable Vector Extension 2.1).
      • SME2.1 (Scalable Matrix Extension 2.1).
      • B16B16 (BFloat16 ΠΈ BFloat16 для SVE2 ΠΈ SME2).
      • RASv2 (Reliability, Availability and Serviceability v2).
      • LSE128 (128-bit Atomic).
      • GCS (Guarded Control Stac).
      • CHK (Check Feature Status).
      • SPECRES2 (Enhanced Speculation Restriction).
      • LRCPC3 (Load-Acquire RCpc).
      • THE (Translation Hardening).
      • ITE (Instruction Trace).
      • D128 (128-Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ дСскрипторы Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ страниц памяти).
      • XS (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ памяти XS).
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° процСссоров AArch64 Cortex-A520, Cortex-A720, Cortex-X3 ΠΈ Cortex-X4.
    • Π’ ассСмблСр BPF для совмСстимости с ассСмблСром clang/LLVM Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° отдСлСния ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² символами «#» ΠΈ «//», Π° Ρ‚Π°ΠΊΠΆΠ΅ использования символа «;» для раздСлСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² строкС («;» большС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²).

    Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ