Домой Новости Железо Обнародована LPE-уязвимость CIFSwitch в Linux CIFS/cifs-utils

Обнародована LPE-уязвимость CIFSwitch в Linux CIFS/cifs-utils

Обнаружена критическая уязвимость CIFSwitch в ядре Linux и утилите cifs-utils, ведущая к локальному повышению привилегий.

Уязвимость в ядре Linux
Архитектура обработки запросов в ядре Источник: linux.org.ru

Исследователь безопасности Асим Манизада (Asim Manizada) раскрыл уязвимость CIFSwitch, которая представляет собой проблему локального повышения привилегий на стыке ядра Linux и пользовательского пакета cifs-utils. Уязвимость затрагивает путь обработки CIFS/SMB Kerberos/SPNEGO upcall — специальный механизм, через который клиент CIFS ядра запрашивает у пользовательского helper-приложения данные для аутентификации Kerberos при подключении сетевых дисков. Информация была обнародована после завершения действия эмбарго списком рассылки linux-distros, однако на момент публикации CVE-идентификатор ещё не был присвоен.

Суть уязвимости заключается в том, что непривилегированный пользователь мог задействовать функцию request_key(«cifs.spnego», …) и передать ей специально сформированное поддельное описание ключа. В штатном режиме работы такую строку должен генерировать исключительно клиент CIFS внутри ядра. Она содержит сведения о целевом сервере, идентификаторе пользователя (UID), credential UID, идентификаторе процесса (PID), а также параметры upcall. Тем не менее, ядро Linux не выполняло проверку подлинности происхождения описания, а утилита cifs.upcall, которая запускается от имени суперпользователя (root) по стандартному правилу request-key, слепо доверяла этим полям.

Эксперты отмечают, что уязвимость не является критической «дырой» для каждого дистрибутива Linux «из коробки». Для успешной атаки требуется совпадение сразу нескольких факторов: наличие уязвимой версии ядра, установленный пакет cifs-utils с настроенным правилом cifs.spnego, возможность создания непривилегированными пользователями пользовательских пространств имён (user namespaces), а также отсутствие блокировок со стороны подсистем LSM, таких как SELinux или AppArmor. В сообщении на специализированном ресурсе oss-security подчёркивается, что при соблюдении этих условий локальный непривилегированный пользователь получает возможность выполнить произвольный код с правами root.

Технически вектор атаки строится на том, что cifs.upcall может осуществить переход в пространства имён, которые прописаны в поддельном описании ключа, и инициировать NSS-запрос до завершения процедуры окончательного сброса привилегий. Из-за этого окружение, контролируемое злоумышленником, способно повлиять на загрузку NSS-модуля корневым процессом. В публичных разборах акцентируется внимание на том, что это логический сбой на границе между ядром системы и пользовательским пространством, а не классическая уязвимость повреждения памяти (memory corruption).

Патч для ядра получился относительно компактным: для типа ключей cifs.spnego разработчики внедрили дополнительную проверку, которая отклоняет любые описания, сгенерированные не самим CIFS-клиентом с использованием его защищенных приватных данных spnego_cred. Данное решение нейтрализует весь класс подобных угроз без необходимости обязательного одновременного обновления пакета cifs-utils, хотя автор находки рекомендует дополнительно усилить безопасность на уровне user space.

Команда разработчиков AlmaLinux оперативно отреагировала на инцидент, сообщив, что базовая уязвимая логика присутствует во всех поддерживаемых релизах. Под удар попадают AlmaLinux 8, 9, 10 и Kitten 10 при условии наличия пакета cifs-utils. Исправленные версии ядер уже выложены в тестовые репозитории: так, для AlmaLinux 9 выпущен пакет kernel-5.14.0-687.5.4.el9_8 (и новее), а для AlmaLinux 10 — kernel-6.12.0-211.7.4.el10_2 (и новее).

В качестве временных защитных мер до момента установки официальных обновлений безопасности администраторам рекомендуют полностью удалить пакет cifs-utils (если SMB-клиент не используется), заблокировать загрузку модуля ядра cifs, скорректировать правило cifs.spnego в конфигурации request-key или временно отключить неавторизованные user namespaces. Стоит учитывать, что подобные ограничения могут нарушить работу Kerberos-авторизации при монтировании разделов, поэтому на серверах с активными SMB-шарами эти меры следует внедрять с осторожностью.

Отдельного внимания заслуживает предыстория обнаружения CIFSwitch: автор исследования заявил, что уязвимость была найдена с помощью автоматизированного поиска сложных многошаговых цепочек на базе языковых моделей (LLM) и графового анализа связей между объектами безопасности. Практический совет для системных администраторов остается неизменным — необходимо срочно проверить актуальность пакетов cifs-utils, параметры пространств имён и установить свежие обновления ядра, особенно на серверах с локальными учетными записями или контейнерами.

Источник: https://www.linux.org.ru