Исследователь безопасности Asim Manizada раскрыл уязвимость CIFSwitch — локальное повышение привилегий в связке ядра Linux и пользовательского пакета cifs-utils. Проблема затрагивает путь обработки CIFS/SMB Kerberos/SPNEGO upcall, то есть механизм, через который CIFS-клиент ядра запрашивает у пользовательского helper’а данные для Kerberos-аутентификации при монтировании SMB-ресурсов. Описание опубликовано после истечения эмбарго linux-distros; идентификатор CVE на момент публикации ещё не был назначен.
Суть уязвимости в том, что непривилегированный пользователь мог вызвать request_key("cifs.spnego", …) и передать поддельное описание ключа. В нормальном сценарии такую строку должен формировать сам CIFS-клиент ядра: в ней содержатся сведения о сервере, UID, credential UID, PID, цели upcall и других параметрах. Однако ядро не проверяло, что описание действительно пришло из CIFS-подсистемы, а cifs.upcall, запускаемый от root через стандартное правило request-key, доверял этим полям как данным, созданным ядром.
Уязвимость не является универсальной «дырой в любом Linux из коробки». Для эксплуатации должны совпасть несколько условий: наличие уязвимого ядра, установленный cifs-utils с правилом cifs.spnego, возможность для непривилегированных пользователей создавать user/mount namespaces, а также отсутствие блокировки со стороны SELinux, AppArmor или другой политики LSM. В сообщении на oss-security отдельно указано, что на уязвимых системах это даёт путь от непривилегированного локального пользователя к выполнению кода от root.
ٽيڪنيڪل طور цепочка строится вокруг того, что cifs.upcall может перейти в пространства имён, указанные в поддельном описании, и выполнить NSS-запрос до окончательного сброса привилегий. В результате attacker-controlled окружение может повлиять на загрузку NSS-модуля root-процессом. В публичных описаниях подчёркивается, что это именно логическая ошибка на границе ядра и user space, а не классическая memory corruption-уязвимость.
Исправление в ядре оказалось небольшим по объёму: для типа ключей cifs.spnego добавлена проверка, отклоняющая описания, созданные не самим CIFS-клиентом с его приватными spnego_cred. Такой подход закрывает класс атак без обязательных синхронных изменений в cifs-utils, хотя автор отмечает, что дополнительное усиление user space всё равно желательно.
AlmaLinux ٻڌايو, что базовая логика присутствует во всех поддерживаемых выпусках AlmaLinux۽ AlmaLinux 8, 9, 10 и Kitten 10 считаются затронутыми при наличии установленного cifs-utils. Пропатченные ядра были подготовлены в testing-репозиториях: для 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, переопределить правило cifs.spnego в request-key или отключить непривилегированные user namespaces. Эти обходные меры могут ломать Kerberos-аутентификацию для CIFS-монтирований, поэтому на серверах, где реально используются Kerberos-authenticated SMB-шары, их нужно применять осторожно.
CIFSwitch интересна ещё и контекстом обнаружения: автор описывает её как результат поиска многошаговых цепочек с использованием LLM и графового представления связей между объектами безопасности. Но практический вывод для администраторов вполне приземлённый: проверить наличие cifs-utils, состояние user namespaces и обновления ядра, особенно на системах, где есть локальные пользователи или контейнерные сценарии с расширенными namespace-возможностями.
جو ذريعو: linux.org.ru
