DirtyCred: раскрыта восьмилетняя уязвимость ядра Linux

DirtyCred: раскрыта восьмилетняя уязвимость ядра Linux

DirtyCred: раскрыта восьмилетняя уязвимость ядра Linux

Специалисты раскрыли детали восьмилетней уязвимости в ядре Linux. По их словам, баг не менее опасен, чем известная всем дыра Dirty Pipe, получившая 7,8 балла по шкале CVSS и затрагивающая Unix-конвейер (pipeline).

Новая брешь называется DirtyCred (идентификатор — CVE-2022-2588), ее описали специалисты Северо-Западного университета. С помощью уязвимости злоумышленник может повысить свои права до максимального уровня.

«DirtyCred представляет собой концепцию эксплуатации на уровне ядра, которая позволяет повысить права благодаря замене непривилегированных учетных данных на привилегированные. DirtyCred использует механизм повторного использования памяти», — подчеркивают исследователи.

Потенциальная атака может развиваться в три этапа:

  1. Освобождаем с помощью эксплойта используемые непривилегированные учетные данные.
  2. Выделяем в свободной памяти привилегированные учетные данные (задействуется процесс с высокими правами вроде su, mount или sshd).
  3. Действуем в качестве пользователя с высокими привилегиями.

Новый вектор атаки, по словам специалистов, выводит принцип Dirty Pipe на новый уровень: соответствующий эксплойт может отработать на любой версии затронутого ядра.

 

«Во-первых, найденный способ эксплуатации не привязан к конкретной уязвимости, он позволяет задействовать любую подобную брешь для вектора Dirty Pipe. Во-вторых, наш метод даже может выбраться за пределы контейнера, чего не дано той же Dirty Pipe», — объясняют специалисты.

В Linux нашли 19-летнюю дыру: атакующий может добраться до root

В Linux обнаружили новую уязвимость повышения привилегий, получившую имя CIFSwitch. При удачном раскладе обычный локальный пользователь может обмануть механизм CIFS-аутентификации, подсовывать ядру фальшивые запросы и в итоге получить root. Проблема затрагивает системы с уязвимыми связками kernel CIFS и cifs-utils, в первую очередь версии 6.14 и выше.

CIFS нужен Linux для работы с сетевыми шарами: монтировать удалённые папки, читать и писать файлы по сети. Если такая шара использует Kerberos-аутентификацию, ядро Linux обращается к пользовательскому приложению, а cifs-utils выступает посредником.

По словам исследователя Асима Вилади Оглу Манизады, который нашёл и назвал CIFSwitch, ядро запрашивает ключ типа cifs.spnego, после чего стандартная связка keyutils/request-key запускает cifs.upcall от root, чтобы получить или собрать материалы Kerberos/SPNEGO.

Беда в том, что CIFS-подсистема ядра не проверяла, что такие cifs.spnego-запросы действительно пришли от CIFS-клиента ядра. В результате непривилегированный пользователь мог сгенерировать поддельный запрос и запустить штатный процесс аутентификации.

А дальше привилегированный cifs.upcall доверяет полям, которые считает созданными ядром, хотя на деле ими управляет атакующий. Через эти поля можно форсировать переключение namespace, спровоцировать NSS-запрос до сброса привилегий, подгрузить вредоносный NSS-модуль и получить выполнение кода от root.

Манизада отмечает, что баг появился ещё в 2007 году, то есть прожил в экосистеме около 19 лет. При этом эксплуатация не универсальна: нужны подходящая версия ядра, уязвимый cifs-utils, доступные пространства имен пользователей и политики SELinux/AppArmor, которые не ломают атаку на взлёте.

Среди уязвимых систем, в дефолтных конфигурациях эксперт называет:

  • Linux Mint 21.3 / 22.3;
  • CentOS Stream 9;
  • Rocky Linux 9;
  • AlmaLinux 9;
  • Kali Linux 2021.4–2026.1;
  • SLES 15 SP7.

Уязвимость уже закрыта патчем для ядра, он добавляет проверку происхождения запросов cifs.spnego. Однако конкретные версии ядра с патчем зависят от дистрибутива, так что администраторам лучше не гадать, а проверять бюллетени своих вендоров.

RSS: Новости на портале Anti-Malware.ru