В модуле ядра Linux, обеспечивающем работу сетевого протокола TIPC (Transparent Inter-process Communication), выявлена уязвимость (CVE-2022-0435), потенциально позволяющая выполнить свой код на уровне ядра через отправку специально оформленного сетевого пакета. Проблема затрагивает только системы с загруженным модулем ядра tipc.ko и настроенным стеком TIPC, который обычно используется в кластерах и по умолчанию не активирован в неспециализированных дистрибутивах Linux.
Отмечается, что при сборке ядра в режиме «CONFIG_FORTIFY_SRC=y» (применяется в RHEL), добавляющем дополнительные проверки границ в функцию memcpy(), эксплуатация ограничивается аварийной остановкой работы (ядро впадает в состояние panic). При выполнении без дополнительных проверок и при утечке сведений о канареечных метках, применяемых для защиты стека, проблема может быть использована для удалённого выполнения кода с правами ядра. Выявившие проблему исследователи заявляют, что техника эксплуатации тривиальна и будет раскрыта после повсеместного устранения уязвимости в дистрибутивах.
Уязвимость вызвана переполнением стека, происходящем при обработке пакетов, значение поля с числом узлов участников e domenit, в которых превышает 64. Для хранения параметров узлов в модуле tipc.ko используется фиксированный массив «u32 members[64]», но в процессе обработки указанного в пакете номера узла не выполняется проверка значения «member_cnt», что позволяет использовать значения больше 64 для контролируемой перезаписи данных в области памяти, следующей в стеке после структуры «dom_bef».
Приводящая к уязвимости ошибка была внесена 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. В ядрах большинства дистрибутивов проблема пока остаётся неисправленной: RHEL, Debian, Ubuntu, SUSE, Fedora, Gentoo, Arch Linux.
Protokolli TIPC fillimisht është zhvilluar nga kompania Ericsson, dhe është i destinuar për organizimin e ndërveprimit midis proceseve në një klaster dhe aktivizohet kryesisht në nyjat e klastereve. TIPC mund të punojë si mbi Ethernet ashtu edhe mbi UDP (porti rrjet 6118). Në rastin e funksionimit mbi Ethernet, sulmi mund të kryhet nga rrjeti lokal, ndërsa kur përdoret UDP - nga rrjeti global, nëse porta nuk është mbrojtur nga një firewall. Sulmi gjithashtu mund të kryhet nga një përdorues lokal pa privilegje në host. Për aktivizimin e TIPC është e nevojshme ngarkimi i modulit bërthamor tipc.ko dhe konfigurimi i lidhjes me ndërfaqen rrjetore përmes netlink ose mjetit tipc.
Burimi: opennet.ru
