Отдалечена уязвимост в реализацията на протокол TIPC в ядрото на Linux

В доставената в ядрото на Linux реализация на мрежовия протокол TIPC (Transparent Inter-process Communication) е открита критична уязвимост (CVE-2021-43267), която позволява дистанционно чрез изпращане на специално оформен мрежов пакет да се постигне изпълнението на собствен код с привилегии на ядрото. Опасността от проблема се намалява от факта, че за атака е необходимо явното включване на поддръжка за TIPC в системата (зареждане и настройка на модула на ядрото tipc.ko), което по подразбиране не се произвежда в неспецифични дистрибуции на Linux.

Протоколът TIPC се поддържа от ядрото на Linux 3.19, но кодът, който води до уязвимостта, е включен в състава на ядрото 5.10. Уязвимостта е отстранена в ядрото 5.15.0, 5.10.77 и 5.14.16. Проблемът се проявява и все още не е отстранен в Debian 11, Ubuntu 21.04/21.10, SUSE (в още не излязлата версия SLE15-SP4), RHEL (все още не е уточнено дали е била направена бэкпортировка на уязвимото поправяне) и Fedora. Актуализация на ядрото вече е издадена за Arch Linux. Дистрибуциите с ядро по-стари от 5.10, като Debian 10 и Ubuntu 20.04, не са подложени на проблема.

Протоколът TIPC е разработен първоначално от компанията Ericsson и е предназначен за организиране на междупроцесно взаимодействие в клъстера. Той се активира основно на възлите на клъстера. TIPC може да работи както над Ethernet, така и над UDP (мрежов порт 6118). При работа над Ethernet атака може да бъде извършена от локалната мрежа, а при използване на UDP — от глобалната мрежа, ако портът не е защитен от междусетеви екрани. Атака може да бъде извършена и от непривилегирован локален потребител на хоста. За активиране на TIPC е необходима зареждане на модула tipc.ko и конфигуриране на свързването с мрежовия интерфейс чрез netlink или утилитата tipc.

Уязвимостта се проявява във функцията tipc_crypto_key_rc и е предизвикана от липсата на подходяща проверка на съответствието между посочения в заглавието и действителния размер на данните при анализа на пакети от тип MSG_CRYPTO, използвани за получаване на ключове за криптиране от други възли в клъстера с цел последващо декриптиране на съобщения, изпратени от тези възли. Размерът на данните, копирани в паметта, се изчислява като разлика между стойностите на полето с размер на съобщението и размера на заглавието, но без да се взема предвид действителният размер на предаденото в съобщението название на алгоритъма за криптиране и съдържанието на ключа. Предполага се, че размерът на названието на алгоритъма е фиксирован, а за ключа се предава допълнителен атрибут с размера, и атакуващият може да посочи в този атрибут стойност, различаваща се от действителната, което ще доведе до записване на опашката на съобщението извън выделения буфер. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* в байтове */ char key[]; }

Отдалечена уязвимост в реализацията на протокол TIPC в ядрото на Linux


Източник: opennet.ru
Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster