Linux内核中TIPC协议实现的远程漏洞

Linux 内核中提供的 TIPC(透明进程间通信)网络协议的实现中已发现一个严重漏洞 (CVE-2021-43267),该漏洞允许您通过发送专门设计的网络包。 由于攻击需要在系统中显式启用 TIPC 支持(加载和配置tipc.ko 内核模块),因此缓解了该问题的危险,而在非专业 Linux 发行版中默认情况下不会这样做。

Linux内核3.19开始支持TIPC协议,但导致该漏洞的代码包含在内核5.10中。 该漏洞已在内核 5.15.0、5.10.77 和 5.14.16 中修复。 该问题在 Debian 11、Ubuntu 21.04/21.10、SUSE(在尚未发布的 SLE15-SP4 分支中)、RHEL(尚未详细说明漏洞修复是否已向后移植)和 Fedora 中出现且尚未修复。 Arch Linux 的内核更新已经发布。 内核版本早于 5.10 的发行版(例如 Debian 10 和 Ubuntu 20.04)不受该问题的影响。

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

该漏洞出现在tipc_crypto_key_rc函数中,是由于在解析MSG_CRYPTO类型的数据包时,没有正确验证标头中指定的数据与数据的实际大小之间的对应关系而导致的,该类型用于从其他节点获取加密密钥以便对从这些节点发送的消息进行后续解密。 复制到内存中的数据大小是根据消息大小和标头大小的字段值之间的差值计算的,但不考虑加密算法名称和消息内容的实际大小。消息中传输的密钥。 假设算法名称的大小是固定的,并且为密钥额外传递了一个单独的具有大小的属性,攻击者可以在该属性中指定一个与实际不同的值,这将导致写入消息尾部超出了分配的缓冲区。 structtipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; 无符号整数 keylen; /* 以字节为单位 */ char key[]; };

Linux内核中TIPC协议实现的远程漏洞


来源: opennet.ru

添加评论