首页
社区
课程
招聘
[原创]CVE-2022-0847 Dirty Pipe 漏洞原理深度分析 近年来最"干净"的内核提权漏洞之一
发表于: 2026-6-17 19:25 12622

[原创]CVE-2022-0847 Dirty Pipe 漏洞原理深度分析 近年来最"干净"的内核提权漏洞之一

2026-6-17 19:25
12622

这个漏洞的本质是:pipe_buffer 结构体中的 flags 字段未被正确初始化,导致通过 splice() 从文件引入的页面缓存(page cache)被错误地标记为"可合并写入"(PIPE_BUF_FLAG_CAN_MERGE),从而允许后续的 write() 直接写入该页面缓存,修改任意只读文件的内容。

当此标志被设置时,内核认为"这个 pipe_buffer 可以追加写入数据",而不是分配新的 buffer。

补丁commit: 9d2231c5d74e (Linux 5.16.11, 5.15.25, 5.10.102)

这是近年来最"干净"的内核提权漏洞之一 — 无需绕过任何保护机制,一次成功,无副作用。

特性 说明
利用可靠性 100%确定性,无需竞态/堆喷
利用复杂度 极低,~100行代码
前置条件 仅需文件可读
权限要求 普通用户即可
检测难度 不触发 SELinux/审计
影响范围 5.8 - 5.16.11 所有内核
// 内核中的 pipe_buffer 结构体
struct pipe_buffer {
    struct page *page;      // 指向内存页
    unsigned int offset;    // 页内偏移
    unsigned int len;       // 数据长度
    const struct pipe_buf_operations *ops;
    unsigned int flags;     // ← 漏洞关键字段!
    unsigned long private;
};
flags 中的关键标志位:
PIPE_BUF_FLAG_CAN_MERGE = 0x10
┌─────────────────────────────────────────────────────┐
│  prepare_pipe(p)                                     │
│                                                      │
│  1. pipe(p) 创建管道                                  │
│                                                      │
│  2. 填满管道(写满所有 pipe_buffer)                    │
│     ┌──────┬──────┬──────┬──────┬───────────────┐    │
│     │ buf0 │ buf1 │ buf2 │ ... │ bufN          │    │
│     │flags=│flags=│flags=│     │flags=         │    │
│     │MERGE │MERGE │MERGE │     │MERGE          │    │
│     └──────┴──────┴──────┴──────┴───────────────┘    │
│     写入时内核自动设置 PIPE_BUF_FLAG_CAN_MERGE        │
│                                                      │
│  3. 读空管道(drain)                                 │
│     - 所有 pipe_buffer 被"释放"回环形队列             │
│     - 但 flags 字段 **没有被清零**!                  │
│     - flags 仍然保留 PIPE_BUF_FLAG_CAN_MERGE         │
│                                                      │
│  结果:管道为空,但下一个被使用的 pipe_buffer          │
│        仍带有残留的 CAN_MERGE 标志                    │
└─────────────────────────────────────────────────────┘

冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

收藏
点赞 ・88
打赏
分享
最新回复 (39)
雪    币: 250
活跃值: (91)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2 楼
。。
2026-6-25 10:39
0
雪    币: 223
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3 楼
1
2026-6-25 16:52
0
雪    币: 15
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4 楼
mark
2026-6-25 22:29
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5 楼
666
2026-6-25 23:20
0
雪    币: 76
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6 楼
mark
2026-6-26 09:24
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7 楼
我来看看
2026-6-26 16:22
0
雪    币: 8181
活跃值: (9968)
能力值: ( LV13,RANK:409 )
在线值:
发帖
回帖
粉丝
8 楼
666
2026-6-26 18:16
0
雪    币: 230
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9 楼
感谢分享
2026-6-27 15:53
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10 楼
666
2026-6-28 22:23
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11 楼
mark
2026-6-29 14:00
0
雪    币: 1122
活跃值: (2226)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12 楼
666
2026-6-29 14:10
0
雪    币: 17
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13 楼
666
2026-6-29 16:45
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14 楼
666
2026-6-30 15:24
0
雪    币: 26
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15 楼
666
2026-7-1 19:00
0
雪    币: 206
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16 楼
7777777777
2026-7-2 00:01
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17 楼
666
2026-7-2 09:21
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18 楼
讲的真好
2026-7-2 09:53
0
雪    币: 227
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19 楼
…..
2026-7-6 17:31
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
20 楼
666
2026-7-7 09:22
0
雪    币: 232
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21 楼
666
2026-7-7 17:04
0
雪    币: 8
活跃值: (175)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22 楼
666
2026-7-7 18:04
0
雪    币: 5958
活跃值: (6062)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23 楼
666
2026-7-8 17:26
0
雪    币: 206
活跃值: (1328)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
24 楼
777
2026-7-9 15:29
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25 楼
666
2026-7-9 15:47
0
游客
登录 | 注册 方可回帖
返回