CIFSwitch — уязвимост в CIFS подсистемата на ядрото на Linux, позволяваща получаване на права root

Разкрити са детайлите и е публикуван експлоит за уязвимостта CIFSwitch (CVE все още не е присвоен) в ядрения модул CIFS и инструмента cifs-utils, който позволява на непривилегирован потребител да получи права root в системата. Корекцията е налична само под формата на патч, публикуван на 16 май, а на 19 май е приет в основната клонка на ядрото на Linux (коректурните версии на ядрото все още не са налични).

Уязвимостта засяга кода, предоставящ поддръжка на механизма cifs.spnego за извършване на автентикация по протокол SPNEGO (Simple and Protected GSSAPI Negotiation) при свързване със SMB-сървъри. При използване на cifs.spnego за определяне на ключове от Kerberos/SPNEGO, ядрото извиква обработчика cifs.upcall, предоставен от пакета cifs-utils, и изпълняван в потребителското пространство с права root.

Непривилегирован потребител може да инициира повикване на обработчика чрез изпращане на заявка, която изисква получаване на ключа „cifs.spnego“, с фалшиво описание „CIFS SPNEGO“. В обработчика cifs.upcall не се извършват допълнителни проверки за валидност на параметрите, предадени чрез ядрото, и той разпознава стойностите на полетата pid, uid, creduid и
upcall_target като доверителни. След активиране, обработчикът cifs.upcall се прехвърля в пространствата на имената на потребителския процес, от който е изпратена заявката, и извършва търсене в системната база NSS (Name Service Switch) преди да възстанови привилегиите.

Атакуващият може да стартира своя процес в отделно пространство на имената на точките на монтировката, което ще доведе до изпълнение на повикване към NSS в неговия контекст. За експлоатация на уязвимостта е необходимо атакуващият да постави свой собствен конфигурационен файл /etc/nsswitch.conf и набор от подменени библиотеки libnss_*.so.2 в създаденото от него окружение. Изпълнението на NSS-запитване от обработчика cifs.upcall ще доведе до зареждане на подменените библиотеки с права root.

За експлоатация на уязвимостта в системата трябва да е разрешено създаването на пространства на имената на потребителските идентификатори (user namespace) или на точките на монтировката (mount namespace), а също е необходимо да е инсталиран пакет cifs-utils. Дистрибутиви, при които е възможна експлоатацията на уязвимостта в конфигурацията по подразбиране:

  • Linux Mint Cinnamon 21.3/22.3
  • CentOS Stream 9 GNOME
  • Rocky Linux 9 Workstation
  • Kali Linux
  • AlmaLinux 9.7 Workstation
  • SUSE 15 SP7/SAP 15 SP7/SAP 16

Дистрибутиви, при които за работа на експлоита е необходимо инсталирането на пакета cifs-utils:

  • Ubuntu 18.04/20.04/22.04 Desktop/Server
  • Pop!_OS 22.04 Intel/24.04 Generic
  • Ubuntu 24.04 Desktop минимален/пълен и Server
  • Debian 11/12/13 netinst стандартен и GNOME/KDE/стандартен/XFCE
  • CentOS Stream 9 Cinnamon/KDE/MATE/XFCE
  • Rocky Linux 9 KDE/Workstation-Lite
  • openSUSE Leap 15.6 GNOME/KDE
  • openSUSE Tumbleweed GNOME/KDE
  • Rocky Linux 8 GenericCloud
  • Oracle Linux 8/9 KVM
  • Amazon Linux 2023 KVM

Дистрибутиви, при които в конфигурацията по подразбиране са приложени настройки, блокиращи експлоатацията на уязвимостта чрез SELinux или Apparmor, дори при наличие на пакета cifs-utils:

  • Ubuntu 26.04 Desktop/Server
  • Fedora 40/41/42/43/44 Workstation/Server
  • CentOS Stream 10 GNOME/KDE
  • Rocky Linux 10 Workstation
  • AlmaLinux 10.1 Workstation
  • Oracle Linux 10 KVM
  • openSUSE Tumbleweed GNOME/KDE
  • openSUSE Leap 16.0 OEM GNOME/KDE/Minimal-VM
  • SUSE Linux 16

Като заобиколно решение за защита може да се блокира автоматичното зареждане на модула на ядрото cifs:

sh -c «printf ‘install cifs /bin/false\n’ > /etc/modprobe.d/cifs.conf; rmmod cifs 2>/dev/null; true»

Също така може да се забрани използването на user namespace («sysctl -w kernel.unprivileged_userns_clone=0») и да се изтрие или преправи правилото cifs.spnego в настройките на cifs-utils:

cat > /etc/request-key.d/cifs.spnego.conf <‘EOF’
create cifs.spnego * * /usr/sbin/keyctl negate %k 30 %S
EOF

Междувременно, на 28 май са публикувани 137 доклада за уязвимости в ядрото на Linux, а на 27 май — 277 доклада.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster