В модуле TIPC ядра Linux исправлена уязвимость выполнения кода.
Прозрачная межпроцессная коммуникация (TIPC) был разработан для облегчения внутрикластерной связи через соединения Ethernet или UDP и может выполнять адресацию служб, отслеживание, управление связью между узлами и многое другое.
Этот протокол реализован в пакете модуля ядра с основными дистрибутивами Linux.
В четверг SentinelOne исследователи сказали тот CodeQL недавно использовался при поиске ошибок в проектах с открытым исходным кодом. CodeQL — это механизм семантического анализа кода, который позволяет пользователям запрашивать код «как если бы это были данные», и именно этот инструмент позволил команде найти серьезную ошибку в проекте модуля TIPC.
По словам исследователей, была обнаружена уязвимость, связанная с переполнением кучи, которую можно было использовать локально или удаленно для получения привилегий уровня ядра, «позволяя злоумышленнику скомпрометировать не только одну службу, но и всю систему».
SentinelOne обнаружил, что функция, представленная в сентябре 2020 года как часть дорожной карты модуля TIPC, является источником проблемы нового типа пользовательского сообщения под названием MSG_CRYPTO.
Хотя модуль правильно проверяет размеры сообщений и заголовков по длине полученных пакетов, отсутствует проверка члена keylen сообщения MSG_CRYPTO и размера имен ключевых алгоритмов.
«Это означает, что злоумышленник может создать пакет с небольшим размером тела для выделения памяти кучи, а затем использовать произвольный размер в атрибуте keylen для записи за пределы», — пояснили исследователи. «Эта уязвимость может использоваться как локально, так и удаленно».
«Хотя локальная эксплуатация проще благодаря большему контролю над объектами, размещенными в куче ядра, удаленная эксплуатация может быть достигнута благодаря структурам, которые поддерживает TIPC».
Недостаток безопасности влияет на версию ядра 5.10.
В настоящее время нет доказательств злоупотреблений в реальных условиях, и следует также отметить, что, хотя модуль включен в основные дистрибутивы, он должен быть загружен для включения протокола, поэтому только сборки с этой активной функцией могут быть уязвимым для использования.
SentinelOne сообщил об уязвимости команде Kernel.org 19 октября. Патч был завершен разработчиками модуля к 21 октября и выпущен lore.kernel.org четыре дня спустя. Исправление теперь также добавлено в основной репозиторий, выпущенный 29 октября под версией 5.15.