漏洞简述
3月7日,开发者 Max Kellermann 在他的博客(https://dirtypipe.cm4all.com/)中披露了一个能导致 Linux 权限提升的漏洞,编号为 CVE-2022-0847,他称之为 “The Dirty Pipe Vulnerability” (“脏管道”漏洞)。
Linux 5.10版本前的一次 commit 中,重构了匿名管道缓冲区的代码,修改了“可合并”检查的逻辑,这个修改造成了通过匿名管道覆盖任意只读文件的漏洞,攻击者可以利用该漏洞进行本地权限提升。
漏洞评级为严重,受影响 Linux Kernel 版本范围为:
-
5.8 ~ 5.10.102
-
5.8 ~ 5.15.25
-
5.8 ~ 5.16.11
此漏洞很容易被利用以获得root权限,漏洞利用信息已公开,建议用户尽快升级到 5.10.102 或 5.15.25 或 5.16.11 及以上版本 Linux 内核。
漏洞时间线
- 2021年4月29日,Linux 内核错误导致的文件损坏第一次出现
- 2022年2月19日,Kellerman 确定文件损坏是 Linux 内核错误导致的,并证明该漏洞可利用
- 2月20日,Kellerman 向 Linux 内核安全团队提交该漏洞
- 2月21日,Google Pixel 6 上漏洞重现,向 Android 安全团队提交漏洞
- 2月23日,稳定版本 (5.16.11, 5.15.25, 5.10.102) 修复了该漏洞
- 2月24日,Android 内核修复该漏洞
- 3月7日,公开披露
缺陷分析
Max Kellermann 在他的博客中提到 linux 的 commit f6dd975583bd(详见参考链接) 重构了匿名管道缓冲区的代码,修改了“可合并”检查的逻辑。

“可合并”检查逻辑修改前,pipe_buf_can_merge方法对管道缓冲区的操作进行了判断,管道缓冲区的合并是有条件的。

“可合并”检查逻辑修改后,PIPE_BUF_FLAG_CAN_MERGE 是固定值,即默认合并管道缓冲区的内容。

从上述逻辑来看,这个修改就是“脏管道”漏洞的出现的原因了。
Max Kellermann 在博客中描述了自己从一次文件损坏中发现 linux 内核的漏洞的故事,随着文件损坏出现的越来越多,情绪变的更加沮丧,甚至开始怀疑鬼神。最后在排除自身问题后发现了内核错误。
以后遇到bug后多质疑,万一是软件的问题呢?
漏洞检测及修复
关于该漏洞的检测策略已在墨菲安全的所有工具产品中上线,您可以安装使用墨菲安全的JetBrains IDE插件、CLI客户端等对你的项目进行检测,并一键修复。
- JetBrains IDE 代码安全检测插件: 使用文档
- 通用检测客户端: https://github.com/murphysec/murphysec
- 使用我的邀请码注册获取token:https://www.murphysec.com/j?p=mycsdn
如果你觉得这个工具对你有用,可以star我们的开源项目或者提issues,谢谢啦!
参考链接
https://github.com/torvalds/linux/commit/f6dd975583bd8ce088400648fd9819e4691c8958
作者:豆儿 日期:2022年3月8日

博客介绍了Linux内核中的脏管道漏洞(CVE-2022-0847),该漏洞允许本地攻击者通过匿名管道覆盖只读文件,从而实现权限提升。开发者Max Kellermann在2022年2月发现并报告此问题,受影响的Linux Kernel版本为5.8~5.16.11。漏洞已得到修复,建议用户升级到指定版本。墨菲安全提供了检测和修复工具。
583

被折叠的 条评论
为什么被折叠?



