内核中的漏洞允许通过目录操作来提升权限

系统漏洞

最近 Qualys 安全研究人员 (一家云安全、合规和相关服务公司) 发布了漏洞的详细信息 他们发现了什么以及什么 它们会影响 Linux 内核。

CVE-2021-33909 影响内核并允许本地用户实现代码执行 并通过操作高度嵌套的目录来提升权限。

该漏洞是由于缺少对 size_t 转换为 int 类型的结果的验证 在对 seq_file 代码执行操作之前,该代码从一系列记录创建文件。 在创建、挂载和删除具有非常高嵌套级别(路径大小大于 1GB)的目录结构时,缺乏验证可能会导致写入缓冲区限制之外的区域。

通过在默认配置中利用此漏洞,任何非特权用户都可以在易受攻击的主机上获得 root 权限。

结果,攻击者可以获得一个 10 字节的字符串 “// 删除”,偏移量为“- 2 GB - 10 字节”,指向分配缓冲区之前的区域。

脆弱性的威胁因以下事实而加剧: 研究人员能够准备功能利用 在默认设置下的 Ubuntu 20.04、Debian 11 和 Fedora 34 上。 需要注意的是,其他发行版尚未经过测试,但理论上它们也容易受到该问题的影响并且可能受到攻击。

成功利用此漏洞允许任何非特权用户在易受攻击的主机上获得 root 权限。 Qualys 安全研究人员已经能够独立验证漏洞、开发漏洞并获得 Ubuntu 20.04、Ubuntu 20.10、Ubuntu 21.04、Debian 11 和 Fedora 34 Workstation 默认安装的完全 root 权限。 其他 Linux 发行版可能容易受到攻击并且可能被利用。

漏洞利用的工作归结为创建大约一百万个目录的层次结构 通过 mkdir() 调用嵌套 实现大于 1GB 的文件路径大小。

该目录被绑定挂载在单独的用户命名空间中,之后运行 rmdir() 函数将其删除。 同时,创建一个线程来加载一个小的 eBPF 程序,该程序在验证 eBPF 伪代码之后,但在其 JIT 编译之前挂在舞台上。

在非特权用户ID命名空间中,打开/proc/self/mountinfo文件,读取bind-mount挂载的长目录路径,导致缓冲区开始前的区域写入“//deleted”行。 选择写入行的位置以覆盖已测试但尚未编译的 eBPF 程序中的指令。

此外,在 eBPF 程序级别, 不受控制地写出缓冲区被转换为读/写能力 通过操作 btf 和 map_push_elem 结构在其他内核结构中进行控制。

然后,漏洞利用将 modprobe_path [] 缓冲区放在内核内存中并覆盖其中的路径“/sbin/modprobe”,如果发出 request_module() 调用,则允许任何可执行文件以 root 身份启动,例如在创建时执行一个 netlink 套接字...

研究人员提供了几种仅对特定漏洞有效的解决方案,但它们并不能解决问题本身。

因此,建议将参数“/proc/sys/kernel/unprivileged_userns_clone”设置为 0 以禁用在单独的用户 ID 命名空间中安装目录,将“/proc sys/kernel/unprivileged_bpf_disabled”设置为 1 以禁用 eBPF 程序的加载进入内核。

此外,还建议 Linux 发行版的所有用户更新他们的系统以获得相应的补丁。 问题从2014年XNUMX月开始就很明显了 它会影响自 3.16 以来的内核版本。 该漏洞补丁与社区协调并于 19 月 XNUMX 日被内核接受。

最后,如果您有兴趣了解更多,可以咨询 以下链接中提供了详细信息。


发表您的评论

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

*

*

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