Linux 还有另一个高严重性漏洞,它使不受信任的用户可以轻松执行能够执行大量恶意操作的代码,包括安装后门、创建未经授权的用户帐户以及修改特权服务或应用程序使用的脚本或二进制文件。
Dirty Pipe,正如该漏洞所命名的那样,是自 2016 年以来披露的最严重的 Linux 威胁之一,这一年,另一个高严重性且易于利用的 Linux 漏洞(名为 Dirty Cow)在被使用时曝光入侵研究人员的服务器。研究人员在 2016 年展示了如何利用 Dirty Cow 来根植任何 Android 手机,无论移动操作系统版本如何。11 个月后,研究人员在第三方市场发现了 1,200 个恶意利用该漏洞的 Android 应用程序。
当没有人变得强大时
Dirty Pipe 这个名字既是为了表明与 Dirty Cow 的相似之处,又是为了提供有关新漏洞起源的线索。“管道”是指管道,一种 Linux 机制,用于一个 OS 进程将数据发送到另一个进程。本质上,管道是两个或多个链接在一起的进程,因此一个进程的输出文本 (stdout) 直接作为输入 (stdin) 传递给下一个进程。
该漏洞被跟踪为 CVE-2022-0847,当网站建设者 CM4all 的研究人员对客户的 Linux 计算机上不断出现的一系列损坏文件进行故障排除时,该漏洞暴露无遗。经过数月的分析,研究人员最终发现,客户的损坏文件是由于 Linux 内核中的错误造成的。
CM4all 母公司 Ionos 的研究员 Max Kellermann 最终想出了如何利用该漏洞来武器化该漏洞,以允许拥有帐户的任何人(包括最低权限的“nobody”帐户)将 SSH 密钥添加到 root 用户的帐户中。这样,不受信任的用户可以使用具有完全 root 权限的 SSH 窗口远程访问服务器。
Dirty Pipe 启用的其他恶意操作包括创建作为后门运行的cron 作业、将新用户帐户添加到 /etc/passwd + /etc/shadow(赋予新帐户 root 权限),或修改由一项特权服务。
“它与本地内核漏洞一样严重,”开源安全总裁布拉德斯宾格勒在一封电子邮件中写道。“就像 Dirty Cow 一样,基本上没有办法缓解它,它涉及核心 Linux 内核功能。”
该漏洞最早出现在 2020 年 8 月发布的 Linux 内核版本 5.8中。该漏洞一直持续到上个月,随着版本 5.16.11、5.15.25 和 5.10.102 的发布而得到修复。几乎所有 Linux 发行版都受到影响。
Dirty Pipe 还会影响任何基于易受攻击的 Linux 内核版本之一的 Android 版本。由于 Android 如此碎片化,因此无法统一跟踪受影响的设备型号。例如,Pixel 6 和三星 Galaxy S22 的最新版本 Android 运行 5.10.43,这意味着它们很容易受到攻击。与此同时,Android 12 上的 Pixel 4 运行 4.14,不受影响。Android 用户可以通过转到设置 > 关于手机 > Android 版本来检查他们的设备使用的内核版本。
移动安全提供商 Lookout 的安全研究负责人克里斯托夫·河北森在一篇文章中写道:“脏管道漏洞非常严重,因为它允许攻击者临时或永久覆盖系统上他们不应该更改的文件。”电子邮件。“攻击者可以使用它来改变特权进程的行为,有效地获得执行具有广泛系统特权的任意代码的能力。”
Lookout 研究人员表示,该漏洞可以通过提升其权限的恶意应用程序在 Android 手机上被利用,默认情况下,这些权限应该受到限制。他说,另一种攻击途径是使用不同的漏洞来获得有限的代码执行(例如,使用被黑客入侵的合法应用程序的系统权限)并将其与 Dirty Pipe 结合起来,使代码获得不受约束的 root。
虽然 Kellermann 表示 Google 在 2 月份将他的错误修复与 Android 内核合并,但没有迹象表明基于 Linux 内核的易受攻击版本的 Android 版本已得到修复。用户应该假设任何运行基于易受攻击版本的 Linux 内核的 Android 版本的设备都容易受到 Dirty Pipe 的影响。谷歌代表没有回复寻求评论的电子邮件。
脏管道是由一个未初始化的变量引起的,该变量允许攻击者覆盖缓存在内存中的任何文件内容。即使不允许写入文件,脏管道也可以这样做。Kellermann 发现漏洞的关键是他使用 Linux 功能splice
将数据从一个文件移动到另一个文件。
当用于splice
将数据汇集到管道中时,“内核将首先将数据加载到页面缓存中,”Kellermann 解释说。“然后它将struct pipe_buffer
在页面缓存内创建一个指向(零拷贝),但与匿名管道缓冲区不同,写入管道的附加数据不得附加到这样的页面,因为该页面由页面缓存拥有,而不是由管道。通过注入PIPE_BUF_FLAG_CAN_MERGE
页面缓存引用,可以覆盖页面缓存中的数据,只需将新数据写入以特殊方式准备的管道。
研究人员说,所需的步骤是:
PIPE_BUF_FLAG_CAN_MERGE
在所有环条目中设置标志)。struct pipe_buffer
排干管道(在环上的所有实例中设置标志pipe_inode_info
)。O_RDONLY 打开)从目标偏移之前的位置拼接到管道中。
struct pipe_buffer
因为PIPE_BUF_FLAG_CAN_MERGE
已设置。尽管 Dirty Pipe 功能强大,但它的工作有一些关键要求,并且它的功能有限制。它们包括:
出于性能原因,Linux(与其他操作系统一样)缓存在系统使用的内存文件中。当您想对某些缓存数据进行私有修改时,操作系统应该派生一份数据副本供您进行修改,否则您的修改将不是私有的,而是会影响其他任何人阅读或执行该文件。与 Dirty Cow 一样,Dirty Pipe 欺骗操作系统对缓存进行非法修改,从而影响系统上的所有用户。
因此,漏洞利用可以做的是例如更改 suid 根二进制文件(他们具有读取权限)的代码以跳过其系统调用,这会将其权限更改回用户(这意味着二进制文件将在不知不觉中继续运行完全root权限),或者漏洞可以修改一个常用的库,使其执行一些额外的代码,一个简单的例子是改变攻击者复制到/tmp的shell的权限,使其成为suid root。
一个缓解因素是引入漏洞的内核版本 5.8 相对较新。许多生产服务器没有运行 5.8。
2022 年已经出现了另一个高严重性 Linux 漏洞。PwnKit 也是在 Linux 内核中潜伏 12 年后于 1 月发现的提权漏洞。利用它也是微不足道的,并为多种形式的恶意打开了大门。
无论如何,请不要误会:利用 Dirty Pipe 的简易性加上黑客可以用它做的几乎无限的事情,使其成为自 2016 年 Dirty Cow 以来攻击 Linux 的最关键的特权升级漏洞。
斯宾格勒说:“鉴于 Twitter 上已经出现了武器化的漏洞利用,对于那些在他们的系统上存在不受信任的用户的人来说已经太迟了。” “任何具有受影响内核版本(> = 5.8)的人都应该尽快应用修复程序。”
免费试用尝鲜
贴心会员服务
服务可用性
数据安全保障
全年不间断在线
工作时间:早上9:00-下午6:30
河南快米云网络科技有限公司
公安备案编号:41010302002363
Copyright © 2010-2023 All Rights Reserved. 地址:河南自由贸易区开封片区经济开发区宋城路122号