10
Несколько дней назад появилась новость о том, что В ядре Linux были обнаружены две уязвимости первая из них уже занесена в каталог как CVE-2022-0435 и была обнаружена в модуле ядра Linux, обеспечивающем работу сетевого протокола TIPC (Transparent Inter-Process Communication).
Эта уязвимость может разрешить выполнение кода на уровне ядра отправив пакет в специально созданную сеть.
Проблема влияет только на системы с загруженным модулем ядра tipc.ko и настроен со стеком TIPC, который обычно используется в кластерах и не включен по умолчанию в неспециализированных дистрибутивах Linux.
Уязвимость это вызвано переполнением стека, возникающим при обработке пакетов, значение поля с количеством узлов-членов домена, в котором оно превышает 64.
Для хранения параметров узлов в модуле tipc.ko установлен массив "u32members[64]", но в процессе обработки то, что указано в пакете. Номер узла не проверяет значение «member_cnt», что позволяет использовать значения больше 64 для контролируемой перезаписи данных в области памяти ниже. стек после структуры "dom_bef".
Протокол TIPC изначально разработан компанией Ericsson, он предназначен для организации связи между процессами в кластере и активируется в основном на узлах кластера. TIPC может работать как через Ethernet, так и через UDP (сетевой порт 6118).
При работе по Ethernet атака может быть осуществлена из локальной сети, а при использовании UDP — из глобальной сети, если порт не закрыт брандмауэром. Атака также может быть осуществлена локальным пользователем без привилегий на хосте. Для включения TIPC необходимо загрузить модуль ядра tipc.ko и настроить привязку к сетевому интерфейсу с помощью netlink или утилиты tipc.
Упоминается, что при сборке ядра в режиме "CONFIG_FORTIFY_SRC=y" (используется в RHEL), который добавляет дополнительные проверки границ в функцию memcpy(), работа ограничена аварийной остановкой (ядро переходит в состояние «Паника ядра»).
Если она запускается без дополнительных проверок и происходит утечка информации о канареечных флагах, используемых для защиты стека, проблема может быть использована для удаленного выполнения кода с правами ядра. Исследователи, выявившие проблему, говорят, что техника эксплойта тривиальна и будет раскрыта после повсеместного удаления уязвимости в дистрибутивах.
Ошибка, породившая уязвимость, была введена 15 июня 2016 г. и стал частью ядра Linux 4.8. уязвимость исправлено в версиях ядра Linux 5.16.9, 5.15.23, 5.10.100, 5.4.179, 4.19.229, 4.14.266 и 4.9.301 годы.
Еще одна уязвимость который был найден в ядре Linux CVE-2022-24122 в коде для обработки ограничений rlimit в разных пространствах имен пользователей.
Ошибка была представлена в изменении, добавленном летом 2021 г., перемещая реализацию некоторых счетчиков RLIMIT для использования структуры "ucounts". Объекты «ucounts», созданные для RLIMIT, продолжали использоваться после освобождения выделенной для них памяти (use-after-free) за счет удаления связанного с ними пространства имен, что позволило добиться исполнения их кода на уровне ядра.
Эксплуатация уязвимости непривилегированным пользователем возможна только в том случае, если система имеет непривилегированный доступ к пространству имен идентификатора пользователя (unprived user namespace), который включен по умолчанию в Ubuntu и Fedora, но не включен в Debian и RHEL.
В качестве обходного пути для блокировки уязвимости вы можете отключить непривилегированный доступ к пространству имен пользователя:
sysctl -w kernel.unprivileged_userns_clone=0
Проблема существует с ядра Linux 5.14 и будет исправлено в обновлениях 5.16.5 и 5.15.19. Стабильные ветки Debian, Ubuntu, SUSE/openSUSE и RHEL не затронуты этой проблемой, но появляются в новых ядрах Fedora и Arch Linux.