Ошибка 19-летней давности в Linux. Любой локальный пользователь может получить права root через сетевой модуль CIFS
NewsMakerЗлоумышленнику достаточно подменить один файл для полного перехвата управления машиной.
В Linux нашли уязвимость, которая показывает, как тонкая ошибка на стыке ядра и системных утилит может превратиться в полный контроль над машиной. Проблему назвали CIFSwitch, а обнаружить цепочку помогли языковые модели, которым дали инструмент для работы с графом связей между объектами, проверками и привилегированными процессами.
Автор исследования сообщил о локальной уязвимости повышения привилегий в Linux. Ошибка затрагивает не все системы, а только отдельные дистрибутивы и конфигурации, где совпадают несколько условий. CVE-идентификатор для проблемы пока не назначен, но исправление уже больше недели доступно и добавлено в очередь для стабильных веток ядра. Публичное раскрытие согласовали с linux-distros@ после эмбарго до 27 мая 2026 года.
CIFSwitch связана с механизмом CIFS, который Linux использует для работы с сетевыми файловыми ресурсами SMB. При Kerberos-аутентификации ядро не выполняет всю работу самостоятельно, а через механизм Linux keyrings запрашивает ключ типа cifs.spnego. После такого запроса стандартное правило request-key запускает cifs.upcall с правами root, чтобы подготовить Kerberos/SPNEGO-данные.
Уязвимость возникала из-за того, что ядро до исправления не проверяло происхождение описания ключа cifs.spnego. Обычный непривилегированный процесс мог напрямую вызвать request_key() с поддельным описанием, а система запускала помощник cifs.upcall с правами root так же, как при нормальном запросе от CIFS. В описание можно было подставить pid, uid, creduid и upcall_target, влияющие на выбор учётных данных и пространства имён.
Критическая часть цепочки строилась вокруг upcall_target=app. Помощник cifs.upcall принимал поддельный pid за данные от ядра и переходил в пространства имён процесса, указанного атакующим. Затем, ещё до окончательного сброса привилегий, выполнялся поиск учётной записи через NSS.
В подконтрольном пространстве имён злоумышленник мог подменить nsswitch.conf и заставить процесс с правами root загрузить собственный модуль libnss_*.so.2. В демонстрационном коде такая загрузка использовалась для записи правила в sudoers.d.
Уязвимы системы с проблемной версией ядра , установленным пакетом cifs-utils с правилом cifs.spnego, разрешённым созданием непривилегированных user namespaces и mount namespaces, а также политиками SELinux или AppArmor, которые не блокируют цепочку. По данным автора, ошибка в ядре существовала с 2007 года, а для cifs-utils чаще всего опасны версии 6.14 и выше, хотя отдельные переносы исправлений могли затронуть и более старые сборки.
Для защиты администраторы могут установить исправленное ядро, отключить модуль CIFS, удалить cifs-utils, если пакет не нужен, заменить правило request-key для cifs.spnego на безопасное или запретить непривилегированные user namespaces. Автор также опубликовал демонстрационный код, с помощью которого можно проверить, закрыта ли конкретная система от атаки.
В Linux нашли уязвимость, которая показывает, как тонкая ошибка на стыке ядра и системных утилит может превратиться в полный контроль над машиной. Проблему назвали CIFSwitch, а обнаружить цепочку помогли языковые модели, которым дали инструмент для работы с графом связей между объектами, проверками и привилегированными процессами.
Автор исследования сообщил о локальной уязвимости повышения привилегий в Linux. Ошибка затрагивает не все системы, а только отдельные дистрибутивы и конфигурации, где совпадают несколько условий. CVE-идентификатор для проблемы пока не назначен, но исправление уже больше недели доступно и добавлено в очередь для стабильных веток ядра. Публичное раскрытие согласовали с linux-distros@ после эмбарго до 27 мая 2026 года.
CIFSwitch связана с механизмом CIFS, который Linux использует для работы с сетевыми файловыми ресурсами SMB. При Kerberos-аутентификации ядро не выполняет всю работу самостоятельно, а через механизм Linux keyrings запрашивает ключ типа cifs.spnego. После такого запроса стандартное правило request-key запускает cifs.upcall с правами root, чтобы подготовить Kerberos/SPNEGO-данные.
Уязвимость возникала из-за того, что ядро до исправления не проверяло происхождение описания ключа cifs.spnego. Обычный непривилегированный процесс мог напрямую вызвать request_key() с поддельным описанием, а система запускала помощник cifs.upcall с правами root так же, как при нормальном запросе от CIFS. В описание можно было подставить pid, uid, creduid и upcall_target, влияющие на выбор учётных данных и пространства имён.
Критическая часть цепочки строилась вокруг upcall_target=app. Помощник cifs.upcall принимал поддельный pid за данные от ядра и переходил в пространства имён процесса, указанного атакующим. Затем, ещё до окончательного сброса привилегий, выполнялся поиск учётной записи через NSS.
В подконтрольном пространстве имён злоумышленник мог подменить nsswitch.conf и заставить процесс с правами root загрузить собственный модуль libnss_*.so.2. В демонстрационном коде такая загрузка использовалась для записи правила в sudoers.d.
Уязвимы системы с проблемной версией ядра , установленным пакетом cifs-utils с правилом cifs.spnego, разрешённым созданием непривилегированных user namespaces и mount namespaces, а также политиками SELinux или AppArmor, которые не блокируют цепочку. По данным автора, ошибка в ядре существовала с 2007 года, а для cifs-utils чаще всего опасны версии 6.14 и выше, хотя отдельные переносы исправлений могли затронуть и более старые сборки.
Для защиты администраторы могут установить исправленное ядро, отключить модуль CIFS, удалить cifs-utils, если пакет не нужен, заменить правило request-key для cifs.spnego на безопасное или запретить непривилегированные user namespaces. Автор также опубликовал демонстрационный код, с помощью которого можно проверить, закрыта ли конкретная система от атаки.