使用TIPC协议时出现的Linux内核远程漏洞

Linux 内核模块中已发现一个漏洞 (CVE-2022-0435),该漏洞可确保 TIPC(透明进程间通信)网络协议的运行,可能允许通过发送专门设计的网络在内核级别执行代码包。 该问题仅影响加载了tipc.ko内核模块并配置了TIPC堆栈的系统,该堆栈通常在集群中使用,并且在非专业Linux发行版上默认不启用。

值得注意的是,当在“CONFIG_FORTIFY_SRC=y”模式(在 RHEL 中使用)下构建内核时,该模式向 memcpy() 函数添加了额外的边界检查,操作仅限于紧急停止(内核恐慌)。 如果在没有额外检查的情况下执行,并且用于保护堆栈的金丝雀标签的信息被泄露,则可以利用该问题以内核权限进行远程代码执行。 发现该问题的研究人员声称,该利用技术很简单,将在广泛消除发行版中的漏洞后公开。

该漏洞是由于处理数据包时出现堆栈溢出导致的,其中域成员节点数字段的值超过64。tipc.ko模块中为了存储节点参数,使用了一个固定数组“u32members[64” ]”被使用,但是在处理数据包中指定的节点号的过程中并不检查“member_cnt”的值,这使得接下来可以使用大于64的值来对内存区域中的数据进行受控覆盖到堆栈上的“dom_bef”结构。

导致该漏洞的 bug 于 15 年 2016 月 4.8 日引入,并包含在 Linux 5.16.9 内核中。 该漏洞已在 Linux 内核版本 5.15.23、5.10.100、5.4.179、4.19.229、4.14.266、4.9.301 和 XNUMX 中得到解决。 在大多数发行版的内核中,该问题仍未得到解决:RHEL、Debian、Ubuntu、SUSE、Fedora、Gentoo、Arch Linux。

TIPC协议最初由爱立信开发,旨在组织集群中的进程间通信,主要在集群节点上激活。 TIPC 可以通过以太网或 UDP(网络端口 6118)运行。 当通过以太网工作时,可以从本地网络进行攻击;当使用 UDP 时,如果端口未被防火墙覆盖,则可以从全球网络进行攻击。 主机的非特权本地用户也可以执行该攻击。 要激活 TIPC,您需要下载tipc.ko 内核模块并使用netlink 或tipc 实用程序配置与网络接口的绑定。

来源: opennet.ru

添加评论