应急响应与分析

安天是中国网络安全应急响应体系中重要的企业节点,打造了“第一时间启动,同时应对多线威胁,三体系联动,四作业面协同”的应急体系,在高级持续性威胁(APT)的发现、监测和分析方面进行了大量工作。

基于Dirty Frag漏洞发现过程的“攻击原语”思考——再论漏洞发现与分析工作的人机分工

时间 :  2026年06月01日   |   来源:安天CERT

Dirty Frag漏洞概念图

导语


安天CERT基于对Theori研究员Taeyang Lee借助Xint Code平台发现并曝光Copy Fail(CVE-2026-31431)的相关信息的分析挖掘,撰写了《人与AI协同的漏洞分析新范式——Copy Fail发现过程解析》一文。文章指出,在内核漏洞研究从“工匠时代”加速进入“人机协同时代”的过程中,工作范式正在被重构——“人聚焦‘问对问题’,AI负责‘问遍所有相关问题’”。有网友询问:如何理解“问对问题”?我们依托Theori前研究员Hyunwoo Kim(@v4bel)披露的Dirty Frag漏洞,跟进梳理相关细节,完善对“问对问题”的理解,即新一代安全研究者正以“攻击原语”为锚点,重构漏洞发现与分析的范式框架。

1.引言

1.1 事件背景:Dirty Frag漏洞的技术概要与社会化披露冲击

2026年5月,独立安全研究员Hyunwoo Kim(@v4bel)披露了一个影响全系列主流Linux发行版的本地权限提升(LPE)漏洞——Dirty Frag (CVE-2026-43284, CVE-2026-43500)。Dirty Frag的技术本质并非单一漏洞,而是两个页缓存(Page Cache)写入原语的链式组合:根植于IPsec/xfrm子系统的xfrm-ESP Page-Cache Write(2017年1月引入)与根植于RxRPC子系统的RxRPC Page-Cache Write(2023年6月引入)。两者单独利用均存在环境限制,但Hyunwoo Kim通过链式组合实现了跨发行版、跨配置的稳定提权,覆盖Ubuntu 24.04.4、RHEL 10.1、openSUSE Tumbleweed、CentOS Stream 10、AlmaLinux 10、Fedora 44等主流系统。

Dirty Frag的披露在Copy Fail(CVE-2026-31431)曝光后极短时间内出现,两者共享同一攻击哲学——页缓存可控写入(Page-Cache Write Primitive),但Dirty Frag通过跨子系统原语互补,将利用的通用性与可靠性提升至新的高度。这一事件不仅是一次技术层面的漏洞曝光,更对当前的漏洞响应机制、负责任披露流程以及安全研究的人机协同模式提出了深刻挑战。

1.2 问题提出:从“崩溃点发现”到“原语抽象(Primitive)”的认知升级

传统的漏洞研究往往以“发现崩溃点”为起点,以“获得CVE编号”为终点,研究者的注意力集中在触发条件、崩溃现场与补丁差异上。然而,Dirty Frag的发现过程揭示了一种更高阶的研究范式:发现者Hyunwoo Kim并非在寻找“又一个缓冲区溢出”或“又一个UAF”,而是在系统性地狩猎一种稀缺能力——页缓存写入原语。这种范式转换要求研究者从“现象描述”跃迁至“能力抽象”,从关注“哪行代码错了”转向关注“这段代码赋予了利用者什么原子能力”。

攻击原语(Attack Primitive)是漏洞利用研究中的核心工程概念,指攻击者通过某个漏洞或机制获得的、可被稳定复用的基础操作能力。它不是完整的exploit,而是构成exploit的“原子操作”。理解攻击原语,是区分“漏洞分析研究员”与“漏洞利用工程师”的关键分水岭。

1.3 研究目标:以攻击原语为锚点,重构漏洞发现与分析的范式框架

本报告旨在以Hyunwoo Kim发现Dirty Frag漏洞的过程为解剖样本,解析攻击原语的基本框架与分类体系,解构Dirty Frag的双原语链式结构,透视Hyunwoo Kim从子系统审计到“原语狩猎”的方法论路径,并在此基础上重新论述漏洞发现与分析工作中的人机分工。最终,将尝试回答:在AI辅助漏洞挖掘能力爆发的背景下,人类研究员的核心价值何在(即如何问对问题)?工具链应如何进化?防御体系应如何转型?

1.4 报告范围与术语约定

本报告聚焦Linux内核本地提权场景,核心术语定义如下:

• 攻击原语(Attack Primitive):可被稳定复用的基础攻击能力单元,如页缓存写入、任意地址读、控制流劫持等。

• 页缓存写入原语(Page-Cache Write Primitive):在不触碰磁盘文件的前提下,向内存中的页缓存页(page cache page)写入可控数据的能力。

• 链式组合(Chaining):将多个独立攻击原语按逻辑顺序拼接,以绕过各自的环境限制,构建完整杀伤链。

• Dirty家族:指Dirty Pipe(CVE-2022-0847)、Copy Fail(CVE-2026-31431)、Dirty Frag等共享页缓存篡改范式的漏洞谱系。

2.攻击原语的理论框架与分类体系

2.1 概念界定:从密码学原语到漏洞利用原语的语义迁移

在密码学中,“原语”(Primitive)指哈希、对称加密、签名等基础算法——它们本身不解决具体业务问题,但可通过组合构建出TLS、VPN、区块链等复杂协议。攻击原语借用了这一概念:它是构成漏洞利用的“最小功能单元”。单个原语往往不足以完成致效,但它是支撑完整杀伤链的基础。

从密码学原语到攻击原语的语义迁移,体现了安全研究从“防御性抽象”向“攻击性抽象”的范式扩展。密码学原语回答“我能安全地做什么”,攻击原语回答“我能利用系统做什么”。两者共同遵循组合性(Composability)、确定性(Determinism)与可复用性(Reusability)三大原则。

2.2 内核本地提权(LPE)场景的原语四分法:读、写、执、降级

在Linux内核本地提权研究中,攻击原语可按能力类型分为四类:

类型 能力描述 典型来源
读原语(Read Primitive)读取内核/用户态任意地址数据信息泄漏、侧信道、UAF读
写原语(Write Primitive)向内核/用户态任意地址写入可控数据页缓存篡改、OOB写、UAF写
执行原语(Execute Primitive)劫持控制流(修改函数指针、返回地址)ROP、JOP、内核UAF
降级原语(Downgrade Primitive)绕过安全边界(禁用COW、绕过SELinux)逻辑缺陷、配置篡改、引用计数操纵

Dirty Frag和Copy Fail提供的正是写原语中最稀缺的一类——页缓存可控写入原语。这类原语的稀缺性在于:它允许攻击者修改内存中setuid二进制文件的页缓存副本,而无需触碰磁盘,从而绕过文件完整性监控与签名验证机制

2.3 页缓存写入原语(Page-Cache Write Primitive)的特殊地位与稀缺性

页缓存(Page Cache)是Linux内核用于缓存文件系统数据的核心机制。当用户态程序读取文件时,内核将磁盘块映射到内存页缓存页,程序实际读取的是页缓存副本。正常情况下,页缓存页对映射它的用户态进程是只读的;任何写入应触发COW(Copy-On-Write),由内核分配新页并复制数据。

页缓存写入原语的本质是:找到一个内核代码路径,该路径在误认为页缓存页可安全原地修改的情况下,向其写入攻击者可控的数据。这种原语的特殊性在于:

1.无文件写权限要求:攻击者无需拥有目标文件的写权限,甚至无需拥有所在目录的写权限。
2.绕过完整性监控:由于仅修改内存中的页缓存,不触发磁盘回写,文件系统级别的完整性检查(如IMA/EVM)无法感知。
3.高确定性:逻辑漏洞导致的页缓存写入不依赖竞态条件,成功率接近100%。
4.跨版本稳定性:页缓存机制是内核核心架构,利用方式在不同内核版本间高度稳定。

正因上述特性,页缓存写入原语成为本地提权研究中的“魔戒”级能力。Dirty Pipe首次证明该原语可行,Copy Fail证明其可复现,Dirty Frag则证明其可工程化、通用化。

2.4 攻击原语与经典安全模型的映射:杀伤链、ATT&CK、STRIDE 的互补视角

攻击原语思维可与经典安全模型形成互补映射:
杀伤链(Kill Chain):攻击原语对应杀伤链中的“武器化”(Weaponization)阶段。页缓存写入原语是一种通用武器化组件,可适配不同初始访问向量。
ATT&CK框架:页缓存写入原语映射至T1068(Exploitation for Privilege Escalation),但更细粒度地揭示了“利用机制”而非仅“利用行为”。
STRIDE:从威胁建模视角,页缓存写入原语利用了“篡改”(Tampering)威胁的实例化——但篡改对象从传统意义上的“数据”升级为“执行体在内存中的映像”。
将攻击原语纳入经典模型,有助于防御方从“能力消除”而非仅“漏洞修补”的维度重构防御体系。

3.Dirty Frag的攻击原语解构

3.1 技术本质:非单一漏洞,而是双原语链式组合结构

Dirty Frag的技术本质必须被准确理解:它不是一个单一commit引入的缺陷,而是两个独立页缓存写入原语的链式组合。Hyunwoo Kim在披露中明确将其定义为“两个Page-Cache Write primitive的链式利用”,这一自我定位揭示了现代漏洞研究的工程化高度——研究者不再仅追求“发现一个完美的漏洞”,而是追求“一组互补的原语”。

Dirty Frag双原语链式组合示意图

图:xfrm-ESP与RxRPC双原语链式组合逻辑

3.2 xfrm-ESP 写原语:4字节可控写入的能力边界与命名空间约束

xfrm-ESP写原语根植于IPsec/ESP子系统。2017年1月,Steffen Klassert为优化ESP数据路径性能,提交了esp4/6: Avoid skb_cow_data whenever possible,意在减少不必要的COW开销。该优化在ESP输出路径中使用skb_page_frag_refill直接分配页片段,但当通过splice()将外部共享的页缓存页注入skb的frag时,ESP解密路径会原地写入这些共享页。具体而言,攻击者通过splice()将setuid二进制文件(如/usr/bin/su)的页缓存页映射到管道,再将其作为ESP数据包的一部分送入IPsec栈。ESP解密路径中的esp_input()系列函数在解密ESP尾部时,通过skb_put()或pskb_put()向skb的尾部写入4字节的seq_hi字段——而这一写入直接发生在攻击者注入的页缓存页上。由于seq_hi的值可由攻击者通过构造ESP数据包直接控制,因此实现了4字节完全可控写入。然而,xfrm-ESP原语存在关键限制:需要用户创建网络命名空间,在Ubuntu等默认启用并严格配置AppArmor的发行版中,通过apparmor_restrict_unprivileged_userns等策略,非特权用户创建用户命名空间的能力受到限制,导致该原语单独无法利用。

3.3 RxRPC 写原语:8字节写入的无特权路径与 fcrypt 密钥暴力破解机制

RxRPC写原语是Dirty Frag的“第二把钥匙”,其核心价值在于完全不需要任何特权。RxRPC(AF_RXRPC)是Linux内核中用于AFS(Andrew File System)和Kerberos认证的远程过程调用协议。在RxRPC的Kerberos认证路径rxkad_verify_packet_1()中,收到的数据包前8字节会执行原地PCBC(fcrypt)解密。skb_to_sgvec()直接将skb的frag(包含攻击者通过splice()注入的页缓存页)转换为scatterlist,且src与dst指向同一个sg。因此,解密操作将8字节的“解密结果”写回了只读的页缓存页面。与xfrm-ESP不同,RxRPC原语的值无法直接控制——它是fcrypt_decrypt(C, K)的结果。攻击者需要先通过add_key("rxrpc", ...)注册一个密钥K,然后在用户态暴力破解,找到能产出目标8字节明文的那个K。fcrypt是56-bit密钥、8-byte块的AFS专用密码,暴力破解空间可控。最关键的是:RxRPC路径完全不需要用户命名空间、不需要网络命名空间、不需要CAP_NET_ADMIN,且Ubuntu默认加载rxrpc.ko模块。

3.4 原语链式互补:从单点缺陷到跨子系统通用提权框架的跃迁

Dirty Frag的突破性在于原语链式互补的工程化设计:xfrm-ESP原语提供4字节直接可控写入但受限于命名空间;RxRPC原语提供8字节间接可控写入但无任何特权要求。Hyunwoo Kim的利用链逻辑如下:首先通过RxRPC原语在无特权环境下获得初步写入能力,或通过xfrm-ESP原语在允许命名空间的环境中实现精确写入;两者互补覆盖了所有主流发行版的默认配置。这种“拼接”思路意味着:即使单个原语存在环境限制,攻击者仍可通过跨子系统原语互补实现通用提权。这是现代漏洞利用的工程化升级:从“单点原语”进化为“多原语链式组合”,从“特定子系统的漏洞”进化为“跨子系统、跨发行版的通用提权框架”。

3.5 "Dirty"家族谱系:Dirty Pipe → Copy Fail → Dirty Frag 的原语继承与能力进化

三代演进体现了页缓存写入原语的发现、复现与通用化:

代际漏洞核心子系统页缓存写入能力标志性意义
第一代Dirty Pipe(CVE-2022-0847)Pipe子系统首次证明页缓存可篡改开创"Dirty"攻击范式,Max Kellermann发现
第二代Copy Fail(CVE-2026-31431)AF_ALG加密子系统通过加密操作实现写入AI辅助发现,Theori/Xint Code证明范式可复现
第三代Dirty Frag (CVE-2026-43284,CVE-2026-43500)xfrm-ESP + RxRPC双原语链式利用,绕过环境限制通用化、工程化、武器化,Hyunwoo Kim实现

三代漏洞发现演进的核心规律:每一代都在证明同一类攻击原语的可行性,但每一代都在子系统选择、环境适配与工程化可靠性上实现跃迁

4.漏洞发现过程的方法论透视

4.1 研究路径:Hyunwoo Kim 从子系统审计到“原语狩猎”的思维转换

Hyunwoo Kim(@v4bel)的研究路径呈现鲜明的范式特征:从子系统功能审计转向攻击原语狩猎。传统审计路径是:选择一个子系统→阅读代码→寻找bug→构造POC。而Kim的路径是:定义目标原语(页缓存写入)→ 枚举所有可能提供该原语的子系统 → 验证每个候选路径的确定性逻辑缺陷。这种思维转换的实质是从“代码中心”转向“能力中心”——代码只是获得原语的途径,原语本身才是研究目标。

4.2 发现逻辑:页缓存篡改攻击面的系统性梳理与确定性逻辑缺陷识别

Dirty Frag的发现逻辑可分解为三个层次:第一层:攻击面枚举,识别所有内核子系统中满足处理用户态数据、执行原地写操作且未对共享页执行COW检查的代码路径。第二层:确定性逻辑缺陷识别,优先选择不依赖竞态条件的逻辑缺陷。第三层:环境适配验证,单独验证每个原语的环境限制,寻找互补原语覆盖受限环境。

4.3 工程化思维:多原语链式组合、环境适配与利用可靠性设计

Dirty Frag的披露文档展示了高度工程化思维:多原语链式组合、针对Ubuntu与RHEL不同默认配置的自适应利用路径、确定性逻辑漏洞确保高成功率。这种思维标志着内核漏洞研究从“工匠手作”向“工业化生产”转型。

5.漏洞发现与分析工作的人机分工再论

5.1 范式转变:AI辅助漏洞挖掘的能力爆发——仍以Theori / Xint Code的Copy Fail扫描实践为例

Copy Fail的发现过程是人机协同漏洞挖掘的典范样本。Taeyang Lee借助Xint Code平台,通过AI辅助扫描在Linux内核AF_ALG子系统中识别出Copy Fail漏洞。AI的核心价值在于问遍所有相关问题:遍历所有子系统中可能的页缓存交互路径;识别未执行COW检查的代码模式;关联历史补丁与当前代码状态;在人力不可行的时间尺度内完成跨版本、跨子系统的模式匹配。

5.2 机器智能的适用域:大规模模式识别、原语候选发现与代码路径关联

机器智能在漏洞发现中的适用域明确:大规模模式识别、原语候选发现、代码路径关联、历史漏洞复用等计算密集型任务。

5.3 人类研究员的核心价值:原语语义推理、链式组合创新与伦理判断

在Dirty Frag的发现中,Hyunwoo Kim展现了人类不可替代的三重价值:原语语义推理链式组合创新伦理判断。机器可以识别写入操作,但只有人类能判断是否构成页缓存写入原语,是否可控,以及如何链式组合。

5.4 人机协同的理想模型:“人类构造范式,机器狩猎原语”的分工边界

人类负责“问对问题”——构造范式;机器负责“问遍所有相关问题”——狩猎原语。 人类承担原语语义验证、链式组合设计、利用可靠性工程等;机器承担原语候选发现、模式匹配、跨版本关联等。

5.5 对漏洞分析人才培养的启示:从“挖洞手”到“原语架构师”

未来核心能力应是原语架构师素养:系统级视野、抽象思维能力、人机协同能力、工程化能力。

5.6 对工具链建设的启示:原语识别、语义标注与链式组合推演的智能平台

工具链应从单点漏洞扫描进化为攻击原语识别、语义标注与链式组合推演的智能化支撑平台。

6.防御视角的原语对抗与架构反思

6.1 防御范式转换:从“修补CVE”到“消除原语”的策略升级

防御范式必须升级:从“修补CVE”转向“消除原语”。通过架构级改造(如强制COW、共享页标记隔离)消除页缓存写入原语的存在基础。

6.2 页缓存写入原语的缓解策略:COW强制化、共享页标记与路径隔离

三层缓解策略:COW强制化、共享页标记、路径隔离。

6.3 内核安全架构演进:子系统间原语传播阻断与最小权限原则

引入子系统间原语传播阻断,默认禁用非必要子系统等。

6.4 对“执行体治理”理念的映射:运行对象层次的约束、审计与行为基线

防御方必须监控“执行体映像的完整性”而非仅“磁盘文件的完整性”,对setuid二进制等高风险执行体强制内存域隔离。

7.结论与展望

攻击原语思维是漏洞研究认知升级的关键。人机分工再平衡,安全研究者须进化为“原语架构师”。未来威胁对抗趋势:集约化分析平台与应急协调机制融合,预测性防御与泛在感知成为必要。

结语:漏洞是信息系统的自身属性,无法消亡。防御者应构建“盾立方”式安全体系,引入攻击原语思维,精准识别漏洞利用能力基础,科学分配人机协同智力资源。

附录A:Dirty Frag / Copy Fail / Dirty Pipe 攻击原语能力对比矩阵

对比维度Dirty PipeCopy FailDirty Frag
核心子系统PipeAF_ALG / algif_aeadxfrm-ESP + RxRPC
页缓存写入能力通过管道拼接实现篡改通过加密操作实现写入双原语链式组合写入
写入大小任意(管道写)4字节(加密尾部)4字节(ESP)+8字节(RxRPC)
值可控性直接可控直接可控ESP直接可控/RxRPC间接可控
确定性逻辑漏洞逻辑漏洞逻辑漏洞
特权要求无(RxRPC完全无特权)
命名空间要求ESP需命名空间 / RxRPC无需
标志性意义开创页缓存篡改范式AI辅助发现,证明范式可复现通用化、工程化、武器化

附录B:Linux 内核页缓存写入原语的历史演进时间线

时间事件技术意义
Jan-17Steffen Klassert提交esp4/6: Avoid skb_cow_data whenever possibleDirty Frag xfrm-ESP原语根因引入
Feb-22Max Kellermann披露Dirty Pipe(CVE-2022-0847)首次证明页缓存可篡改
Mar-22Steffen Klassert签署CVE-2022-27666修复补丁首次意识到2017年优化隐患
Jun-