Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Glibc ld.so, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° root Π² систСмС

Компания Qualys выявила ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2023-4911) Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ ld.so, поставляСмом Π² составС систСмной Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Glibc (GNU libc). Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ позволяСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ свои ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π² систСмС Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния GLIBC_TUNABLES ΠΏΠ΅Ρ€Π΅Π΄ запуском исполняСмого Ρ„Π°ΠΉΠ»Π° с Ρ„Π»Π°Π³ΠΎΠΌ suid root, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, /usr/bin/su.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ эксплуатации уязвимости продСмонстрирована Π² Fedora 37 ΠΈ 38, Ubuntu 22.04 ΠΈ 23.04, Debian 12 ΠΈ 13. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ проявляСтся ΠΈ Π² Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… дистрибутивах, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Glibc. Дистрибутивы Π½Π° Π±Π°Π·Π΅ систСмной Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Musl, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Alpine Linux, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ устранСна Π² ΠΏΠ°Ρ‚Ρ‡Π΅, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΌ 2 октября. ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° выпуском ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² дистрибутивах ΠΌΠΎΠΆΠ½ΠΎ Π½Π° страницах Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, Gentoo, ALT Linux.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ, внСсённым Π² Π°ΠΏΡ€Π΅Π»Π΅ 2021 Π³ΠΎΠ΄Π° ΠΈ вошСдшим Π² состав выпуска glibc 2.34. Из-Π·Π° ошибки Π² ΠΊΠΎΠ΄Π΅ Ρ€Π°Π·Π±ΠΎΡ€Π° строки, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния GLIBC_TUNABLES, нСкоррСктная комбинация ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ записи Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ значСния Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявляСтся ΠΊΠΎΠ³Π΄Π° вмСсто ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ «name=val», ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Π΄Π°Π½Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ΅ c Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ присвоСниСм «name=name=val». Π’ этом случаС присвоСниС обрабатываСтся Π΄Π²Π°ΠΆΠ΄Ρ‹, Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΊ «name=name=val», Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠ°ΠΊ «name=val». Из-Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ образуСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ «name=name=val:name=val», Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π° tunestr.

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ эксплоит, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° root ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ практичСски с любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ с Ρ„Π»Π°Π³ΠΎΠΌ suid root. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° sudo (мСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ELF RUNPATH), ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ chage ΠΈ passwd Π² Fedora (Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ SELinux) ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° snap-confine Π² Ubuntu (Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ AppArmor). ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ эксплуатации Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² RHEL 8 ΠΈ RHEL 9, хотя Π΄Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ уязвимости (для Π°Ρ‚Π°ΠΊΠΈ трСбуСтся созданиС ΠΈΠ½ΠΎΠ³ΠΎ эксплоита). Код эксплоита Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ послС повсСмСстного устранСния уязвимости. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ своСй систСмы уязвимости ΠΌΠΎΠΆΠ½ΠΎ Π½ΠΈΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, которая Π² случаС наличия ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ ΠΊΡ€Π°Ρ…ΠΎΠΌ: env -i «GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A» «Z=`printf ‘%08192x’ 1`» /usr/bin/su —help

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ отмСчаСтся устранСниС Π² Glibc Π΅Ρ‰Ρ‘ Π΄Π²ΡƒΡ… уязвимостСй:

  • CVE-2023-4806 — ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΡƒΠΆΠ΅ освобоТдённой области памяти (use-after-free) Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getaddrinfo(), ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ ΠΊΠΎΠ³Π΄Π° NSS-ΠΏΠ»Π°Π³ΠΈΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ call-back-Π²Ρ‹Π·ΠΎΠ²Ρ‹ «_gethostbyname2_r» ΠΈ «_getcanonname_r», Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² «_gethostbyname3_r». Для эксплуатации уязвимости DNS-сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ для Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ хоста большоС число адрСсов IPv6 ΠΈ IPv4, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΠΊΡ€Π°Ρ…Ρƒ процСсса, Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getaddrinfo для сСмСйства AF_INET6 ΠΏΡ€ΠΈ выставлСнии Ρ„Π»Π°Π³ΠΎΠ² AI_CANONNAME, AI_ALL ΠΈ AI_V4MAPPED.
  • CVE-2023-5156 — ΡƒΡ‚Π΅Ρ‡ΠΊΠ° содСрТимого памяти ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getaddrinfo для сСмСйства адрСсов AF_INET6 с выставлСнными Ρ„Π»Π°Π³Π°ΠΌΠΈ AI_CANONNAME, AI_ALL ΠΈ AI_V4MAPPED.

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