2026 年 Linux 内核内存页面覆写类高危漏洞技术研究
摘要:2026 年 4 月至 5 月,Linux 内核在不到一个月的时间内密集披露了四个高危本地权限提升漏洞,其中 Copy Fail(CVE-2026-31431)、Dirty Frag(CVE-2026-43284/43500)和 Fragnesia(CVE-2026-46300)均属于 "内存页面缓存写破坏" 漏洞家族,而 PinTheft 则暴露了 RDS 子系统的内存操作缺陷。这些漏洞潜伏时间长、影响范围广、利用门槛极低且稳定性接近 100%,攻击者仅需本地普通用户权限即可获取系统最高 root 权限,甚至突破容器隔离边界直接接管 Kubernetes 集群节点。本文系统分析了这四类漏洞的技术原理、利用链路与攻击场景,对比了它们与历史经典漏洞的差异,提出了分层防御与缓解措施,并探讨了其对 Linux 内核安全与云原生安全的深远启示。
关键词:Linux 内核;本地权限提升;页缓存写破坏;容器逃逸;CVE-2026-31431;Fragnesia
1 引言
Linux 内核作为全球应用最广泛的操作系统内核,支撑着从个人电脑、企业服务器到云平台、物联网设备的绝大多数计算基础设施。内存页面缓存(Page Cache)是 Linux 内核提升文件系统性能的核心机制,它将磁盘文件内容缓存到物理内存中,实现了文件访问的加速与全局共享。然而,页缓存的权限隔离与内存管理一直是内核安全的薄弱环节,历史上曾出现过 Dirty Cow(CVE-2016-5195)、Dirty Pipe(CVE-2022-0847)等多个利用页缓存缺陷实现提权的经典漏洞,对全球 IT 基础设施造成了严重威胁。
2026 年 4 月 29 日至 5 月 23 日,Linux 内核相继披露了四个高危本地提权漏洞,其中三个属于页缓存写破坏类型。与历史漏洞相比,这波新漏洞具有以下革命性特点:
零竞态条件:利用过程无需依赖精确的时序配合,稳定性接近 100%
内存级隐蔽性:仅修改内存页缓存而不写入磁盘,传统文件完整性检测手段完全失效
原生容器逃逸:可通过全局共享的页缓存直接突破容器隔离,绕过 Kubernetes 最严格的安全策略
全版本通杀:一套利用代码可覆盖 2017 年至今的所有主流内核版本,无需版本适配
其中 Copy Fail 漏洞已被 CISA 列入已知被利用漏洞目录(KEV),微软威胁情报团队也确认了 Dirty Frag 的在野利用活动。本文旨在对这波内存页面覆写类漏洞进行系统性技术研究,为安全防护与应急响应提供理论依据和实践指导。
2 漏洞背景与技术基础
2.1 Linux 页缓存机制与安全风险
页缓存是 Linux 内核实现的磁盘文件内存缓存系统,其核心设计目标是减少磁盘 I/O 操作。当用户态进程读取文件时,内核首先将文件内容从磁盘加载到物理内存的页缓存中,后续对同一文件的访问将直接命中缓存。页缓存具有三个关键特性,同时也是安全风险的根源:
全局共享性:同一文件的页缓存在系统范围内全局共享,包括宿主机与容器、不同进程之间。这是页缓存写破坏漏洞能够实现容器逃逸的根本原因。
只读保护:对于只读文件,其对应的页缓存页被标记为只读,用户态进程无法直接修改。
内核态权限绕过:内核态代码拥有修改任意内存页的权限,即使该页被标记为只读。如果内核代码存在逻辑缺陷,允许攻击者控制内核态向只读页缓存写入数据,就会形成页缓存写破坏漏洞。
攻击者利用这类漏洞的通用模式是:篡改系统中 setuid root 程序(如/usr/bin/su、/usr/bin/sudo)的页缓存,注入恶意代码并执行,从而实现本地权限提升。
2.2 2026 年 5 月漏洞分类
根据漏洞所在的内核子系统与技术原理,本次披露的四个高危漏洞可分为三类:
漏洞名称 | CVE 编号 | 披露时间 | 受影响模块 | 漏洞类型 |
Copy Fail | CVE-2026-31431 | 2026-04-29 | algif_aead | AF_ALG 加密接口页缓存写破坏 |
Dirty Frag | CVE-2026-43284/43500 | 2026-05-08 | esp4、esp6、rxrpc | XFRM 网络子系统页缓存写破坏 |
Fragnesia | CVE-2026-46300 | 2026-05-13 | esp4、esp6 | XFRM 网络子系统页缓存写破坏 |
PinTheft | 未分配 | 2026-05-23 | rds | RDS 子系统内核内存结构篡改 |
其中前两类均属于页缓存写破坏漏洞,是本文研究的重点。PinTheft 虽然不直接篡改页缓存,但同样属于高危本地提权漏洞,且对 Arch Linux 系统影响尤为严重。
3 核心漏洞技术原理深度解析
3.1 Copy Fail(CVE-2026-31431)漏洞原理
Copy Fail 漏洞由 Theori 团队研究员 Taeyang Lee 通过 Xint Code AI 审计工具发现,在 Linux 内核中潜伏近 9 年,影响 2017 年至今的几乎所有主流 Linux 发行版,CVSS 评分为 7.8(高危)。
3.1.1 漏洞形成的三个关键节点
Copy Fail 并非单一代码错误导致,而是长达 6 年的三次内核变更叠加的结果,每一次变更单独审查均无明显安全问题,但组合后形成了致命的逻辑缺陷:
2011 年:authencesn 算法模板引入:内核加入authencesn算法模板用于支持 IPsec 的 64 位扩展序列号。该算法在解密操作中会向输入缓冲区的末尾写入 4 字节的序列号数据,当时仅使用调用者提供的临时缓冲区,无安全风险。
2015 年:AF_ALG 支持 splice 零拷贝:内核 AF_ALG 加密接口新增 AEAD 算法支持,允许普通用户无特殊权限通过套接字调用内核加密能力,同时支持通过splice()系统调用将文件页缓存直接传入加密操作,无需用户态内存拷贝。此时加密操作采用 out-of-place 模式,不会直接修改源文件缓存。
2017 年:in-place 性能优化补丁:内核提交了72548b093ee3号补丁,将 AF_ALG 的 AEAD 加密操作改为 in-place 模式,直接在源数据所在的内存页执行加密 / 解密操作,以减少内存拷贝提升性能。正是这一补丁,打通了只读页缓存与可写加密操作的连接,成为漏洞形成的最后一块拼图。
3.1.2 漏洞核心逻辑
Copy Fail 漏洞的本质可以用一句话概括:内核通过 in-place 优化,将只读的文件页缓存放入了本不该拥有写权限的加密操作散列表中,而authencesn算法在解密过程中会向输入缓冲区末尾写入攻击者可控的 4 字节数据,最终实现对只读页缓存的受控篡改。
漏洞触发的三个关键技术细节:
splice () 的零拷贝特性:攻击者可以通过splice()将目标文件的页缓存直接传递给内核加密模块,无需将数据拷贝到用户态,从而绕过了用户态对只读内存的保护。
in-place 加密的权限突破:in-place 模式下,加密模块直接修改源数据所在的内存页。由于内核态代码拥有最高权限,即使该页被标记为只读,内核也可以直接写入。
authencesn 的可控写入原语:该算法在解密时写入的 4 字节序列号完全由攻击者控制,为篡改页缓存提供了精确的写入能力。
3.2 Fragnesia(CVE-2026-46300)漏洞原理
Fragnesia 由 V12 Security 团队的 William Bowling 发现,于 2026 年 5 月 13 日公开,CVSS 评分为 7.8(高危)。值得注意的是,Fragnesia 实际上是 Dirty Frag 补丁的副作用,是一个独立的逻辑漏洞。
3.2.1 漏洞根因
Fragnesia 的核心问题位于 Linux 内核的 XFRM ESP-in-TCP ULP(Upper Layer Protocol)子系统中。ESP-in-TCP 是一种将 IPsec ESP 封装数据通过 TCP 传输的方案,用于穿越 NAT 或防火墙。
漏洞的本质是:当 TCP 套接字从 normal 模式切换到espintcp ULP 模式时,如果接收队列中已有通过splice从文件导入的数据,内核会错误地将这些文件页当作 ESP 密文处理,导致 AES-GCM 密钥流被直接 XOR 写入页缓存。具体来说,在执行 skb coalescing(套接字缓冲区合并)操作时,内核 "忘记" 了某个数据片段(frag)实际上是与文件系统共享的,从而允许加密过程中的密钥流写入到共享的页缓存页中。
Fragnesia 的名称正是来源于 "frag + forgotten",意为 "被遗忘的片段"。
3.2.2 关键技术特性
Fragnesia 具有以下使其极具威胁的技术特性:
逐字节任意写入:攻击者可以通过构造不同的 IV 值,实现对页缓存中任意字节的逐字节修改。每次触发漏洞可以修改一个字节,写入 192 字节的提权 stub 大约需要 192 次迭代。
完全无竞态条件:与 Dirty Pipe 等历史漏洞不同,Fragnesia 的利用不需要依赖任何时序配合,稳定性达到 100%。
绕过容器安全策略:攻击者可以通过unshare()系统调用创建独立的用户和网络命名空间,在容器内部获取CAP_NET_ADMIN权限。即使是 Kubernetes 最严格的 PSS Level-3 安全策略也无法阻止unshare()调用。
3.3 PinTheft 漏洞原理
PinTheft 漏洞由 V12 安全团队于 2026 年 5 月 23 日公开,位于 Linux 内核的 Reliable Datagram Sockets(RDS)子系统中。RDS 是一种为集群环境设计的高性能、低延迟通信协议。
PinTheft 的核心是 RDS 内核模块中的一个逻辑错误,允许本地普通用户操控内核内存结构,从而获取 root 权限。与页缓存写破坏漏洞不同,PinTheft 不依赖于篡改文件页缓存,而是通过直接修改内核内存中的关键数据结构实现提权。
该漏洞的最大特点是对 Arch Linux 系统的影响尤为严重。与 Ubuntu、RHEL 等主流发行版默认禁用 RDS 模块不同,Arch Linux 将 RDS 直接编译进标准内核配置,导致 Arch 系统在默认状态下即存在漏洞。此外,漏洞披露时同步公开了可正常工作的利用代码,使得攻击门槛极低,修复窗口从数周缩短至数小时。
4 利用链与攻击场景分析
4.1 典型利用链分析
4.1.1 Copy Fail 利用链
Copy Fail 的利用过程是一条完美的直线型攻击路径,无竞态条件、无复杂的内存喷射,稳定性接近 100%,完整利用仅需 6 个步骤:
无权限初始化加密上下文:攻击者以本地普通用户身份,通过 AF_ALG 套接字初始化 AEAD 加密上下文,指定使用authencesn算法模板。整个过程无需 root 权限。
获取目标 setuid 程序句柄:打开系统中自带的 setuid root 程序(如/usr/bin/su),获取其只读文件句柄。
splice 零拷贝传递页缓存:调用splice()系统调用,将目标程序的文件页缓存零拷贝传入加密套接字中。
触发 in-place 解密篡改:构造特殊的加密输入,触发authencesn算法的解密操作,向只读页缓存写入攻击者可控的 4 字节数据。
注入恶意代码:通过多次构造输入,向/usr/bin/su的页缓存中注入恶意 shellcode,修改其执行逻辑,使其直接为执行用户赋予 root 权限。
获取 root shell:执行/usr/bin/su程序,系统会优先执行已被篡改的内存页缓存中的代码,无需任何密码验证,直接获得 root 权限。
4.1.2 Fragnesia 利用链
Fragnesia 的利用过程比 Copy Fail 稍复杂,但同样无需竞态条件,稳定性极高:
创建独立命名空间:调用unshare(CLONE_NEWUSER | CLONE_NEWNET)创建独立的用户和网络命名空间,在命名空间内部获取CAP_NET_ADMIN权限。
安装 XFRM 安全关联:在命名空间内部安装一条 transport-mode 的 ESP-in-TCP 安全关联,使用 AES-128-GCM 加密算法。
构建密钥流查找表:预先构建一张包含 256 项的查找表,建立 "目标密钥流字节→对应 IV nonce" 的映射。
1触发漏洞:创建 sender-receiver 进程对。Sender 端通过splice()将目标文件的内容传输到 TCP 发送缓冲区;Receiver 端在数据完全进入接收队列之前,延迟设置TCP_ULP espintcp。当 ULP 启用时,内核将文件页当作 ESP 密文解密,密钥流直接写入页缓存。
逐字节写入 Payload:针对 payload 中的每个字节,计算需要翻转的密钥流字节,在查找表中找到对应的 IV,重新触发漏洞,直到所有字节写入完成。
获取 root shell:执行/usr/bin/su,加载已被污染的页缓存中的程序,直接获得 root 权限。
4.2 典型攻击场景
4.2.1 本地权限提升
这是这类漏洞最基本的攻击场景。攻击者通过 Web 应用漏洞、弱密码等方式获取服务器上的普通用户权限后,运行仅 732 字节的 Python 脚本(Copy Fail PoC),即可一键获取 root 权限,进而完全控制服务器。
4.2.2 容器逃逸
这是这类漏洞最具威胁的攻击场景。由于页缓存在容器和宿主机之间全局共享,攻击者可以在低权限容器中,通过相同的利用链路篡改宿主机上的 setuid 程序页缓存。当宿主机上的 root 用户执行该程序时,就会触发恶意代码,实现从容器到宿主机的逃逸,直接接管整个 Kubernetes 节点。
更严重的是,即使容器配置了最严格的安全策略(allowPrivilegeEscalation: false、no_new_privs: true),也无法阻止这类漏洞的利用。
4.2.3 云原生集群攻击
在 Kubernetes 集群环境中,攻击者一旦控制了一个普通 Pod,就可以通过容器逃逸接管整个节点,然后利用节点的服务账户权限访问 Kubernetes API 服务器,进而窃取集群中的所有敏感信息、部署恶意 Pod 或横向移动到其他节点,最终导致整个集群被攻陷。
5 防御与缓解措施
针对这波内存页面覆写类漏洞,我们提出以下分层防御与缓解措施,涵盖永久修复、临时应急、善后清理与纵深防御多个层面。
5.1 永久修复方案:升级内核版本
内核升级是修复这类漏洞的根本方法。各主流 Linux 发行版已陆续发布包含漏洞修复的内核更新,建议所有用户尽快升级到安全版本并重启系统。
各发行版内核升级命令:
Debian/Ubuntu 系列:
bash apt update && apt upgrade linux-image-generic -y reboot |
RHEL/CentOS/Rocky Linux 系列:
bash yum update -y reboot |
Arch Linux 系列:
bash pacman -Syu linux # LTS版本执行 pacman -Syu linux-lts reboot |
Copy Fail 的官方修复补丁提交号为a664bf3d603d,核心是回退了 2017 年的 in-place 优化补丁。Fragnesia 和 Dirty Frag 的补丁已提交至 netdev 邮件列表,将在后续的内核稳定版本中发布。
5.2 临时应急缓解措施
对于无法立即重启升级内核的业务系统,可通过以下临时措施阻断漏洞利用:
5.2.1 禁用相关内核模块
这是最直接有效的临时缓解措施,通过 modprobe 将存在漏洞的内核模块加入黑名单:
针对 Copy Fail:
bash echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf rmmod algif_aead 2>/dev/null || true |
针对 Fragnesia 和 Dirty Frag:
bash tee /etc/modprobe.d/dirtyfrag.conf <<'EOF' install esp4 /bin/false install esp6 /bin/false install rxrpc /bin/false EOF rmmod esp4 esp6 rxrpc 2>/dev/null || true |
针对 PinTheft:
bash echo "blacklist rds" | sudo tee /etc/modprobe.d/blacklist-rds.conf sudo modprobe -r rds |
对于绝大多数用户和业务系统,禁用这些模块不会影响正常功能。
5.2.2 限制 unprivileged user namespace
Fragnesia 和 Copy Fail 的利用需要创建 unprivileged user namespace。可以通过 sysctl 参数限制:
bash sysctl -w kernel.unprivileged_userns_clone=0 echo "kernel.unprivileged_userns_clone=0" >> /etc/sysctl.conf |
5.3 善后清理措施
需要特别注意 "驻留污染" 问题:一旦漏洞利用脚本被执行,即使后续卸载了存在漏洞的内核模块,此前被污染的页缓存仍然驻留在内存中。为确保系统彻底洁净,除了全局重启外,还可以通过以下命令强制回收页缓存:
bash echo 3 > /proc/sys/vm/drop_caches |
5.4 纵深防御措施
部署运行时完整性监控:使用 AIDE、OSQuery 等工具检测异常的内核模块加载和进程权限提升行为。
强制实施访问控制:确保 SELinux 或 AppArmor 政策设置为 enforcing 模式,增加额外的内核级保护。
限制本地用户访问:将 shell 访问权限限制于必要人员,定期审计现有账户。
6 漏洞对比与安全启示
6.1 与历史经典漏洞对比
新一代页缓存写破坏漏洞与历史上著名的 Dirty Cow、Dirty Pipe 漏洞相比,在多个维度的威胁性都实现了 "超越",具体对比如表 2 所示。
表 2 页缓存写破坏漏洞对比
特性 | Dirty Cow (2016) | Dirty Pipe (2022) | Copy Fail (2026) | Fragnesia (2026) |
利用难度 | 高(需竞态) | 中(需精准操作) | 极低(一键利用) | 低(逐字节写入) |
版本适配 | 需逐个版本调整 | 仅支持部分版本 | 全版本通杀 | 全版本通杀 |
隐蔽性 | 低(修改磁盘) | 低(修改磁盘) | 极高(仅内存) | 极高(仅内存) |
容器逃逸能力 | 无 | 无 | 原生支持 | 原生支持 |
利用成功率 | 不稳定 | 较稳定 | 接近 100% | 接近 100% |
6.2 安全启示
这波密集披露的漏洞给整个 Linux 生态带来了以下重要启示:
性能优化与安全的平衡是永恒的挑战:Copy Fail 和 Fragnesia 的根源都是为了提升性能的代码优化。内核开发中,任何涉及内存操作的优化都必须经过严格的安全审计。
组合漏洞是内核安全审计的最大盲区:单个无风险的特性与其他特性组合后可能形成致命漏洞。基于上下文的全链路安全分析和 AI 辅助审计将成为未来内核安全的重要方向。
内核修复可能引入新的漏洞:Fragnesia 是 Dirty Frag 补丁的副作用,这说明安全修复本身也需要充分的回归测试。
云原生安全面临新的挑战:这类漏洞原生支持容器逃逸,暴露了云原生环境中内核安全的薄弱环节。推广使用安全容器(如 Kata Containers)等技术将成为必然趋势。
7 结论
2026 年 4 月至 5 月 Linux 内核密集披露的内存页面覆写类漏洞,是近年来 Linux 生态面临的最严重安全威胁之一。这些漏洞利用门槛低、稳定性高、隐蔽性强且支持容器逃逸,对企业服务器、云平台和物联网设备都构成了巨大风险。
本文系统分析了四个高危漏洞的技术原理、利用链与攻击场景,提出了全面的防御措施。随着 Linux 内核功能的不断增加,新的安全漏洞还会不断出现。未来,我们需要加强内核安全设计,推广 AI 辅助安全审计技术,建立更加完善的漏洞响应机制,共同保障 Linux 生态的安全稳定。