Новая уязвимость, выявленная в модуле TIPC ядра Linux, позволяет удаленно вызвать в системе состояние отказа в обслуживании (DoS), а также выполнить вредоносный код с высокими привилегиями. Обновления с патчем для ОС версий 4 и 5 вышли неделю назад.
Проблему TIPC, связанную с переполнением буфера стека (CVE-2022-0435), эксперт Appgate Сэмьюэл Пейдж (Samuel Page) обнаружил, когда искал способ исполнить сторонний код в Linux с помощью недавно опубликованной CVE-2021-43267 (все созданные PoC пока годятся лишь для локального повышения привилегий).
Оказалось, что находка позволяет спровоцировать панику ядра, приводящую к DoS, а в отсутствие надежной защиты от эксплойта (контроль целостности стека, KASLR) — подменить поток управления произвольной полезной нагрузкой. Уязвимость можно использовать локально или удаленно, но только при работающем TIPC.
Виновником уязвимости является фреймворк для мониторинга узлов в кластере (эта возможность появилась в Linux в июне 2016 года, с выходом версии ядра 4.8), а точнее — некорректно реализованная функция tipc_mon_rcv().
Дело в том, что в режиме мониторинга состояние пиров отслеживается через обмен сообщениями (STATE_MSG) с отсылкой к ресурсной записи домена. Для обработки таких пакетов вызывается функция tipc_mon_rcv(), которая выполняет ряд базовых проверок, но при этом, как выяснилось, не фиксирует превышение лимита на количество членов домена в DNS-записи.
В итоге злоумышленник может отправить на целевой хост TIPC-пакет с вредоносным контентом, указав значение member_cnt выше 64, а потом создать новую ресурсную запись. При получении обновления прежние данные кешируются — для сравнения; в результате возникает ошибка, позволяющая перезаписать содержимое стека за границей буфера.
Уязвимость актуальна для Linux выпусков с 4.8 по 5.17-rc3. Патч вышел 10 февраля и включен в состав новых сборок ядра:
- 5.16.9
- 5.15.23
- 5.10.100
- 5.4.179
- 4.19.229
- 4.14.266
- 4.9.301
В дистрибутивы Linux изменения пока не внесены. Чтобы предотвратить эксплойт, участники проекта Ubuntu советуют отключить автозагрузку TIPC. Разработчики из Red Hat рекомендуют также разграничить коммуникации между узлами на транспортном уровне и усилить защиту с помощью шифрования и аутентификации.