Linux 内核出现 TIPC 漏洞,具有远程代码执行风险原创
透明进程间通信(TIPC、Transparent Inter Process Communication)是一种用于进程间通信的网络通信协议,原本是为集群间通信特别设计的。该协议在主要 Linux 发行版的内核模块包中实现。
近日,SentinelLabs 在使用 CodeQL 进行开源项目的 bug 搜索调查时发现 TIPC 模块中存在一个严重的漏洞。CodeQL 是一个语义代码分析引擎,允许开发者像查询数据一样查询代码。
该漏洞表现为:Linux 内核的 TIPC 模块中存在一个关键的堆溢出安全漏洞,可以被黑客以本地或远程的方式利用,以获得内核级权限并执行任意代码,进而导致系统完全被破坏。
TIPC 是一个点对点协议,由 Linux 集群内的节点以一种优化的方式相互通信;它可以实现各种类型的消息,用于不同的目的。根据 SentinelLabs 的研究调查,有关的漏洞(CVE-2021-43267)存在于一种允许节点相互发送加密密钥的 MSG_CRYPTO 消息类型中。
SentinelLabs 的研究员 Max Van Amerongen 表示,“当被用户加载时,TIPC 可以作为一个套接字使用,并可以在接口上配置。所有的消息构建和解析都是在内核中进行的,这使得它成为了攻击者的理想目标。”
当涉及到该消息构建时,每个 TIPC 消息都有一个共同的 header 格式。根据该研究员的说法,该 header 包含一个 “header 大小” 分配,还有一个 “消息大小” 分配,这两个大小是由 tipc_msg_validate 函数所验证的。
如前文所述,这个额外的消息类型 “MSG_CRYPTO” 允许节点相互发送加密密钥。根据分析,这些消息包含密钥算法的名称和密钥本身。对密钥长度或密钥算法名称本身大小(TIPC_AEAD_ALG_NAME),目前都没有针对这些内容进行大小验证的检查。对 MSG_CRYPTO 消息类型缺乏这种大小验证,为堆溢出漏洞打开了大门。
该漏洞影响到 5.10 至 5.15 之间的 Linux 内核版本。但需要注意的是,虽然目前所有主流的 Linux 发行版都有 TIPC 模块,但在默认情况下并没有开启的,并且只有在开启 TIPC 后才会使你的 Linux 系统受到该漏洞的影响。
SentinelLabs 在 10 月 19 日已向 Kernel.org 团队报告了这个漏洞。该模块的维护者在 10 月 21 日已完成了补丁。该补丁已经同 Linux 5.15 版本一同发布。为了确保万无一失,建议 Linux 用户应该更新近期发布的补丁。
来源:https://www.oschina.net/news/167566/flaw-in-linux-kernel-tipc-module