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