TIPC 프로토콜을 사용할 때 발생하는 Linux 커널의 원격 취약점

В модуле ядра 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는 이더넷이나 UDP(네트워크 포트 6118)를 통해 작동할 수 있습니다. 이더넷을 통해 작업하는 경우 공격은 로컬 네트워크에서 수행될 수 있으며, UDP를 사용하는 경우 포트가 방화벽으로 보호되지 않는 경우 글로벌 네트워크에서 수행될 수 있습니다. 공격은 호스트의 권한이 없는 로컬 사용자에 의해 수행될 수도 있습니다. TIPC를 활성화하려면 Tipc.ko 커널 모듈을 다운로드하고 netlink 또는 Tipc 유틸리티를 사용하여 네트워크 인터페이스에 대한 바인딩을 구성해야 합니다.

출처 : opennet.ru

코멘트를 추가