Віддалена вразливість у ядрі Linux, що виявляється під час використання протоколу TIPC

У модулі ядра Linux, який забезпечує роботу мережевого протоколу TIPC (Transparent Inter-process Communication), виявлено вразливість (CVE-2022-0435), що потенційно дозволяє виконати свій код на рівні ядра через відправлення спеціально оформленого мережного пакета. Проблема зачіпає лише системи із завантаженим модулем ядра tipc.ko та налаштованим стеком TIPC, який зазвичай використовується в кластерах та за замовчуванням не активований у неспеціалізованих дистрибутивах Linux.

Зазначається, що при складанні ядра в режимі CONFIG_FORTIFY_SRC=y (застосовується в RHEL), що додає додаткові перевірки меж у функцію memcpy(), експлуатація обмежується аварійною зупинкою роботи (ядро впадає в стан panic). При виконанні без додаткових перевірок та при витоку відомостей про канаркові мітки, що застосовуються для захисту стека, проблема може бути використана для віддаленого виконання коду з правами ядра. Дослідники, що виявили проблему, заявляють, що техніка експлуатації тривіальна і буде розкрита після повсюдного усунення вразливості в дистрибутивах.

Вразливість викликана переповненням стека, що відбувається при обробці пакетів, значення поля з кількістю вузлів учасників домену, в яких перевищує 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.

Протокол TIPC спочатку розроблений компанією Ericsson, призначений для організації міжпроцесної взаємодії в кластері та активується головним чином на вузлах кластерів. TIPC може працювати як поверх Ethernet, і поверх UDP (мережевий порт 6118). У разі роботи поверх Ethernet атака може бути здійснена з локальної мережі, а при використанні UDP — з глобальної мережі, якщо порт не закритий міжмережевим екраном. Атака може бути здійснена непривілейованим локальним користувачем хоста. Для активації TIPC необхідне завантаження модуля ядра tipc.ko та налаштування прив'язки до мережного інтерфейсу за допомогою netlink або утиліти tipc.

Джерело: opennet.ru

Додати коментар або відгук