Linux内核tty子系统漏洞利用技术被公开

谷歌零项目团队的研究人员发布了一种利用 Linux 内核 tty 子系统的 TIOCSPGRP ioctl 处理程序实现中的漏洞 (CVE-2020-29661) 的方法,并详细检查了可以阻止此类攻击的保护机制漏洞。

导致该问题的 bug 早在去年 3 月 5.9.13 日就已在 Linux 内核中得到修复。 该问题出现在 2020 版之前的内核中,但大多数发行版都在去年提出的内核包更新中解决了该问题(Debian、RHEL、SUSE、Ubuntu、Fedora、Arch)。 在 TIOCGSID ioctl 调用的实现中同时发现了一个类似的漏洞(CVE-29660-XNUMX),但也已在各处修复。

该问题是由导致 drivers/tty/tty_jobctrl.c 代码中的竞争条件的锁定错误引起的,该代码可用于创建通过 ioct 调用 TIOCSPGRP 从用户空间利用的释放后使用内存访问条件。 一个有效的漏洞已经被证明可以在具有内核 10-4.19.0-amd13 的 Debian 64 上进行权限提升。

同时,在已发表的文章中,重点不是创建有效漏洞利用的技术,而是内核中存在哪些工具可以防止此类漏洞。 结论并不令人鼓舞,在堆中对内存进行分段和释放后控制内存访问等方法在实践中没有使用,因为它们会导致性能下降,而基于 CFI(控制流完整性)的保护会阻塞攻击后期的漏洞,需要改进。

当考虑什么从长远来看可能会有所不同时,在状态检查器的构建阶段使用高级静态分析器或使用内存安全语言,例如 Rust 和带有丰富注释的 C 方言(例如 Checked C)脱颖而出。锁、对象和指针。 在保护方法中,还提到了启用panic_on_oops模式、将内核结构转移到只读模式以及使用seccomp等机制限制对系统调用的访问。

来源: opennet.ru

添加评论