Уязвимость CIFSwitch открывает доступ к локальному корневому каталогу в некоторых дистрибутивах Linux
Недавно обнаруженная уязвимость CIFSwitch, связанная с повышением привилегий локального пользователя в Linux, позволяет непривилегированному локальному пользователю получить root-доступ в некоторых системах с помощью клиента CIFS в ядре Linux и cifs-utils вспомогательного модуля пользовательского пространства. CIFS, также известный как SMB, — это сетевой протокол для обмена файлами, который обычно используется для доступа к общим файловым ресурсам Windows из Linux и других платформ.
Исследователь в области безопасности Асим Манидаза сообщил об этой проблеме, назвав ее неуниверсальной уязвимостью локального корневого каталога Linux, поскольку возможность ее использования зависит от конкретных конфигураций дистрибутива. Доступен общедоступный эксплойт, что повышает актуальность установки исправлений и устранения уязвимости в затронутых системах.
CIFSwitch находится на стыке между клиентом CIFS в ядре и cifs.upcall, а также cifs-utils helper для подключений CIFS/SMB с аутентификацией по протоколу Kerberos. Хотя CIFS обычно ассоциируется с общими папками Windows, системы Linux также могут монтировать общие папки SMB с помощью клиента CIFS в ядре.
Уязвимость связана с тем, как CIFS использует связки ключей Linux. Обычно ядро запрашивает cifs.spnego ключ, а конфигурация системы для запроса ключа запускает cifs.upcall от имени пользователя root для обработки аутентификации по протоколу Kerberos/SPNEGO.
Согласно опубликованной информации, уязвимость позволяет непривилегированному пользовательскому процессу запросить поддельное cifs.spnego описание ключа. Ядро не могло должным образом отклонить описания, не поступающие от ядра CIFS, и правило запроса ключа по умолчанию могло запускать cifs.upcall процесс от имени пользователя root.
Затем вспомогательный модуль пользовательского пространства проанализировал контролируемые злоумышленником поля, включая pid, uid, creduid и upcall_target, как если бы они были сгенерированы ядром. Установив upcall_target=app, вспомогательный модуль мог переключиться в пространство имён, контролируемое злоумышленником.
Атака особенно опасна тем, что поиск учетных записей через NSS может произойти до окончательного снижения привилегий. В этом случае корневая вспомогательная служба может загрузить локальную конфигурацию и модуль NSS, что позволит коду, контролируемому злоумышленником, выполняться с правами root.
В общедоступном репозитории с демонстрацией концепции объясняется, что эксплойт создает вспомогательный код, в том числе поддельную библиотеку NSS и триггер, который заставляет cifs.upcall войти в приватное пространство имен и загрузить контролируемый модуль NSS. Автор утверждает, что демонстрация концепции предназначена для специалистов по защите, сопровождающих разработчиков и уполномоченных команд по обеспечению безопасности, чтобы они могли проверять уязвимости, устанавливать исправления и устранять риски.
Исправление на стороне ядра является общедоступным и помещено в очередь для стабильной версии. Оно отклоняет описания cifs.spnego, созданные в пользовательском пространстве, подтверждая, что их могут создавать только CIF, использующие свои личные spnego_cred учетные данные. На момент публикации назначение CVE все еще находилось на рассмотрении.
Хорошая новость в том, что CIFSwitch по умолчанию затрагивает не все системы Linux. Исследователь перечисляет несколько необходимых условий: уязвимое ядро, уязвимая cifs-utils версия, правило cifs.spnego запроса ключа по умолчанию, включенные непривилегированные пользовательские пространства и пространства имён монтирования, а также политики SELinux или AppArmor, которые не блокируют цепочку атак.
К протестированным системам, уязвимым для эксплуатации, перечисленным в раскрытии информации, относятся Linux Mint 21.3 и 22.3, CentOS Stream 9, Rocky Linux 9, Kali Linux 2021.4 — 2026.1 без графического интерфейса, AlmaLinux 9.7 и облачный образ Azure, SLES 15 SP7, SLES SAP 15 SP7 и SLES SAP 16 с разрешённым SELinux.
Другие системы считаются уязвимыми в соответствии с политикой по умолчанию только в том случае, если cifs-utils установлен вручную. В эту группу входят Ubuntu 18.04 LTS, 20.04 LTS и 22.04 LTS, Debian 11 «Bullseye», 12 «Bookworm» и 13 «Trixie», Pop!_OS 22.04 и 24.04, openSUSE Leap 15.6, Rocky Linux 8 GenericCloud, образы Oracle Linux 8 и 9 KVM, а также Amazon Linux 2023 с разрешённым SELinux.
Несколько новых систем заблокированы стандартной политикой безопасности, даже если cifs-utils присутствует. В списке указаны Fedora с 40-й по 44-ю версию, Ubuntu 26.04 LTS, CentOS Stream 10, Rocky Linux 10, AlmaLinux 10.1, Oracle Linux 10, openSUSE Tumbleweed, openSUSE Leap 16.0 и SLES 16, которые по умолчанию заблокированы политикой SELinux или AppArmor, если только эти средства защиты не будут отключены.
Меры по устранению уязвимости включают установку обновления ядра, если оно доступно в дистрибутиве, блокировку модуля cifs при отсутствии необходимости в подключении CIFS/SMB, удаление cifs-utils при отсутствии необходимости, переопределение правила cifs.spnego request-key по умолчанию, если не требуется аутентификация Kerberos CIFS, а также отключение непривилегированных пользовательских пространств имён.
Более подробную информацию можно найти здесь.
Редактор: AndreyEx