Dirty Pipe:允许数据被覆盖的漏洞

最近有消息说 在 Linux 内核中发现了一个漏洞 并且已经在 CVE-2022-0847 下编目,他们将其命名为 《肮脏的管道》.

这个漏洞被称为“脏管道”允许覆盖缓存的内容 任何文件的页面,包括那些设置为只读、使用 O_RDONLY 标志打开或位于以只读方式安装的文件系统的文件。

在实际方面,漏洞 可用于将代码注入任意进程 或打开文件中的损坏数据。 例如,您可以更改 sshd 进程的 authorized_keys 文件的内容。

关于脏管

它类似于关键漏洞 Dirty COW 在 2016 年发现,并且 Dirty Pipe 被提及在危险方面与 Dirty COW 处于同一水平, 但是这个更容易操作。

在分析档案定期损坏投诉时发现脏管 在从日志服务器下载压缩文件的系统上通过网络下载(在加载的系统上 37 个月内有 3 次损坏),这些文件是使用 splice() 操作和未命名管道准备的。

脆弱性 自 Linux 内核版本 5.8 以来一直存在,于 2020 年 XNUMX 月发布。

从另一种方式来看,我们可以说它存在于 Debian 11 中,但它不影响 Ubuntu 20.04 LTS 中的基本内核,而对于最初基于旧分支的 RHEL 8.x 和 openSUSE/SUSE 15 内核,但这是可能的导致问题的更改已转移给他们(尚无确切数据)。

该漏洞是由于在函数 copy_page_to_iter_pipe() 和 push_pipe() 的代码中缺少值“buf->flags”的初始化,尽管在分配结构时内存没有被清除,并且对未命名的某些操作进行了某些操作管道,“buf->flags”可能包含来自另一个操作的值。 使用此功能,非特权本地用户可以实现标志中 PIPE_BUF_FLAG_CAN_MERGE 值的出现,允许他们通过将新数据写入专门准备的未命名管道来覆盖页面缓存中的数据。

攻击 可以,你需要一个必须可读的目标文件 并且由于在写入管道时不会检查访问权限,因此可以在页面缓存上执行替换,即使对于位于只读分区上的文件(例如,对于 c CD-ROM 文件)也是如此。

这样,在替换了页面缓存中的信息后,进程在从文件中读取数据时,将不会收到真实数据,而是替换后的数据。

有人提到 Dirty Pipe 操作归结为创建一个未命名的管道并用任意数据填充它 实现在与之关联的所有环结构上设置 PIPE_BUF_FLAG_CAN_MERGE 标志。

然后从管道中读取数据,但在 pipe_inode_info 环结构中的 pipe_buffer 结构的所有实例上仍然设置标志。 然后调用 splice() 将数据从目标文件读取到未命名的管道中,从所需的偏移量开始。 当向这个未命名的管道写入数据时,PIPE_BUF_FLAG_CAN_MERGE 标志将覆盖页面缓存中的数据,而不是创建 pipe_buffer 结构的新实例。

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

另外,如果你有兴趣 能够关注或了解更新的发布 主要发行版中的软件包,您可以从以下页面进行操作: DebianSUSEUbuntuRHELFedoraGentoo的Arch Linux。

提到建议的漏洞修复程序在 Linux Kernel 版本 5.16.11、5.15.25 和 5.10.102 中可用,并且该修复程序也包含在 Android 平台上使用的内核中。


成为第一个发表评论

发表您的评论

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

*

*

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