在 Linux 内核 tty 子系统中发现了一个漏洞

谷歌零项目团队研究人员发布 最近通过一篇博文 一种利用漏洞的新方法 (CVE-2020-29661) 在执行 ioctl 处理程序 TIOCSPGRP 的 Linux 内核 tty 子系统,以及可以阻止这些漏洞的详细保护机制。

帖子里提到 该问题是由锁定设置错误引起的,导致 /tty/tty_jobctrl.c 的代码中出现竞争条件,该条件用于创建启动后访问内存的条件(释放后使用),用户空间通过调用 TIOCSPGRP 使用 ioct- 进行操作来利用该条件。

除了公开的信息, 执行了功能性漏洞利用演示 用于特权升级 带有内核 10-4.19.0-amd13 的 Debian 64 并且也不排除它可能会影响各种发行版,其中当然包括基于和衍生自 Debian 的发行版。

我在这里描述的许多单独的利用技术和缓解选项并不新颖。 但是,我认为值得将它们写在一起以展示各种缓解措施如何与相当正常的释放后漏洞利用相互作用。

这篇博文中与漏洞利用相关的代码片段取自之前的 4.19.160 版本,因为这是目标 Debian 内核所基于的; 其他一些代码片段来自 Linux 主线。

同时,在发表的文章中, 重点不是创建功能漏洞的技术,而是哪些工具 在内核中 保护自己 针对此类漏洞。

结论令人失望, 前面提到了在堆中对内存进行分段和在释放后控制对内存的访问等方法在实践中没有应用,因为它们会导致性能下降和基于CFI(控制流完整性)的保护,从而阻止了后面的漏洞利用攻击阶段,需要改进。

一种特殊类型的终端设备是伪终端,例如,当您在图形环境中打开终端应用程序或通过 SSH 连接到远程机器时,就会使用它。 当其他终端设备连接到某种硬件时,伪终端的两端由用户空间控制,用户空间可以自由创建伪终端(无特权)。

每当 /dev/ptmx 被打开(“伪终端多路复用器”的缩写)时,生成的文件描述符代表设备的设备端(在文档和内核源代码中称为“主伪终端”)。终端。

 对应的终端设备(shell通常连接到的)由内核在/dev/pts/下自动创建.

从长远来看可能会产生什么影响时,重点是使用高级静态分析器或使用内存安全语言,如带有扩展注释的 Rust 和 C 方言(如经过验证的 C)来构建状态检查器、锁、对象和指针。 保护方法还提到启用 panic_on_oops 模式,使内核结构只读,并通过 seccomp 等机制限制对系统调用的访问。

导致问题的错误 它于去年 3 月 XNUMX 日在 Linux 内核中修复。 问题 在 5.9.13 版本之前的内核中表现出来, 但是大多数发行版已经在去年提供的内核包更新中解决了这个问题。

还提到了一个类似的漏洞(CVE-2020-29660),它在 TIOCGSID ioctl 调用的实现中同时发现,但也被删除了。

最后 如果您有兴趣了解更多信息, 您可以查看详细信息 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。