В ядрото на 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
