Ọdịmma dịpụrụ adịpụ na mmejuputa ụkpụrụ TIPC na kernel 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, проблеме не подвержены.

Emebere usoro TIPC site n'aka Ericsson, nke emebere iji hazie nzikọrịta ozi n'etiti usoro n'ime ụyọkọ ma na-arụ ọrụ tumadi na ọnụ ụyọkọ. TIPC nwere ike ịrụ ọrụ n'elu Ethernet ma ọ bụ UDP (ọdụ ụgbọ mmiri 6118). Mgbe ị na-arụ ọrụ n'elu Ethernet, enwere ike ịme mwakpo ahụ site na netwọk mpaghara, na mgbe ị na-eji UDP, site na netwọk ụwa ma ọ bụrụ na ọkụ ọkụ adịghị ekpuchi ọdụ ụgbọ mmiri. Enwere ike ime mwakpo ahụ site n'aka onye ọrụ mpaghara na-enweghị ohere nke onye ọbịa. Iji mee ka TIPC rụọ ọrụ, ịkwesịrị ibudata modul tipc.ko kernel ma hazie njide na interface netwọk site na iji netlink ma ọ bụ tipc utility.

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

Ọdịmma dịpụrụ adịpụ na mmejuputa ụkpụrụ TIPC na kernel Linux


isi: opennet.ru

Tinye a comment