Hotdry.

Article

Cloudflare针对Linux内核"Copy Fail"漏洞的安全响应与缓解实践

深度解析CVE-2026-31431漏洞技术原理,披露Cloudflare如何在数小时内通过行为检测与bpf-lsm实现无重启缓解,并给出可落地的检测与防御参数。

2026-05-07security

2026 年 4 月 29 日披露的 Linux 内核本地提权漏洞 "Copy Fail"(CVE-2026-31431)因其攻击方式的特殊性引发了安全社区的广泛关注。该漏洞位于内核 AF_ALG 套接字的 algif_aead 模块,可被低权限用户利用修改 page cache 中的 setuid 二进制文件,从而实现 root 提权。Cloudflare 作为全球规模的基础设施运营商,在漏洞披露后数小时内完成了全网安全评估与缓解部署,整个响应过程未对客户服务造成任何影响。本文将深入解析该漏洞的技术细节,披露 Cloudflare 的检测与缓解工程实践,并给出可落地的防御参数建议。

漏洞技术原理与攻击面分析

Copy Fail 漏洞的核心在于内核加密 API 中 AF_ALG 套接字与 page cache 交互时的边界检查缺失。Linux 内核的加密子系统为用户空间程序提供了通过 AF_ALG 套接字族访问内核加密 API 的能力,其中 algif_aead 模块负责处理 AEAD(Authenticated Encryption with Associated Data)算法的认证加密操作。2017 年,内核开发者对该模块进行了针对原地(in-place)操作的性能优化,将目标页与引用页链入同一个 scatterlist,但这一优化遗漏了关键的边界校验逻辑。

漏洞的触发路径如下:攻击者首先打开一个 AF_ALG 套接字并绑定到特定的 AEAD 算法模板(如 authencesn (hmac (sha256),cbc (aes))),然后设置密钥并接受请求套接字。关键步骤在于使用 sendmsg () 提交包含攻击载荷的 AAD(Additional Authenticated Data)数据,同时通过 splice () 系统调用将目标文件的 page cache 页引入加密 scatterlist。当 recvmsg () 触发解密操作时,authencesn 包装函数会执行一个 4 字节的越界写入:

scatterwalk_map_and_copy(tmp + 1, dst, assoclen + cryptlen, 4, 1);

通过精心构造 assoclen 和 cryptlen 参数,攻击者可以控制写入的目标文件、偏移量以及写入的具体字节值。默认攻击 payload 会指向 /usr/bin/su 这个 setuid-root 二进制,通过修改其代码段内容注入 shellcode。当普通用户执行被污染的 su 命令时,由于二进制的 setuid 属性,内核会以 root 权限加载并执行注入的代码,从而完成本地提权。

该漏洞的影响范围覆盖自 2017 年以来构建的 Linux 内核,主流发行版均受影响。漏洞的严重性在于它不需要任何内核内存泄露或 ROP(Return-Oriented Programming)技术,仅通过合法的系统调用组合即可实现稳定提权,且攻击过程中不会修改磁盘文件,仅操作内存中的 page cache,使得取证难度显著提升。

行为检测机制的验证与部署

在漏洞披露后,Cloudflare 安全团队的首要任务是验证现有终端检测能力是否能够捕获该攻击链。Cloudflare 的服务器运行着持续监控进程执行行为的行为检测系统,该系统不依赖已知漏洞的特征签名,而是通过异常行为模式识别潜在攻击。当安全工程师在授权的内部验证环境中测试漏洞时,行为检测平台在几分钟内就标记了整个攻击链:从脚本解释器开始,经过内核加密子系统,最终到达提权二进制。

这一结果意义重大:检测覆盖在漏洞被公开之前就已经存在,无需更新签名、无需修改规则、也无需人工干预。系统能够将整个攻击执行链路关联为恶意行为,完全基于行为特征而非漏洞特定信息。这验证了 Cloudflare 在运行时安全检测方面的长期投入价值。

在确认检测覆盖后,安全团队立即启动了全网威胁狩猎流程,追溯漏洞公开前 48 小时的日志数据。调查采用 "先假设已失陷" 的原则,系统性地排查以下指标:内核日志中是否存在漏洞触发时产生的特定痕迹、是否存在对受影响系统的异常交互访问、系统二进制文件是否被篡改、加密哈希是否与已知良好的软件包清单匹配、是否存在持久化机制以及是否存在异常网络连接。全网排查结果为阴性,确认在漏洞公开前未发现任何利用迹象。

bpf-lsm 运行时缓解的技术实现

尽管检测机制工作正常,但 Cloudflare 需要更积极的防护手段以消除潜在风险。然而,简单地移除 algif_aead 内核模块会影响依赖内核加密 API 的合法软件,这意味着不能采用直接禁用的粗粒度方案。安全团队转而采用 BPF Linux Security Module(bpf-lsm)实现精细化的运行时缓解。

bpf-lsm 是 Linux 内核提供的安全模块接口,允许通过 eBPF 程序在 LSM 钩子点实施动态安全策略。Cloudflare 的缓解程序部署在 socket_bind 钩子上,逻辑流程如下:对于所有 socket_bind 调用,首先检查套接字所属的协议族;如果不是 AF_ALG,则直接放行;如果协议族为 AF_ALG,则进一步检查调用进程的二进制文件路径是否在白名单中;只有白名单内的已知合法 AF_ALG 用户才被允许绑定,其他所有请求一律拒绝。

该方案的关键优势在于:完全阻断非授权进程的 AF_ALG 套接字创建,从根源上杜绝漏洞利用;同时保留内核加密 API 的完整功能,确保依赖该 API 的合法服务不受影响;最重要的是,部署 bpf-lsm 模块无需重启服务器,实现了热更新。

在全面部署之前,Cloudflare 首先通过 prometheus-ebpf-exporter 对 socket () 系统调用进行钩取,在不修改内核的前提下获取全网 AF_ALG 使用情况的聚合数据。采集结果确认其内部服务是唯一的合法 AF_ALG 用户,这一发现为后续白名单策略的制定提供了数据支撑。缓解部署分为两个阶段:第一阶段仅开启可见性采集,验证 metrics 层确认已知服务是唯一的 AF_ALG 套接字创建者;第二阶段在确认无误后启用 bpf-lsm enforcement,阻止所有非白名单进程的绑定尝试。

部署完成后,安全团队在之前存在漏洞的测试节点上验证了缓解效果:尝试创建 AF_ALG 套接接字会收到 PermissionError(Errno 1: Operation not permitted)或 FileNotFoundError,具体错误取决于激活的缓解策略,确认漏洞已无法被利用。

内核补丁部署与时间线回顾

在运行时缓解进行的同时,Cloudflare 也在推进内核补丁的最终部署。其 Linux 内核发布流程如下:社区 LTS 版本的安全与稳定性更新会触发自动化构建任务,大约每周生成一次内部内核构建版本;新构建首先在预发数据中心进行测试;通过验证后,通过 Edge Reboot Release(ERR)流水线在四周周期内逐步更新边缘基础设施;控制平面基础设施则采用最新内核并根据工作负载需求安排重启。

漏洞披露时,Cloudflare 大部分基础设施运行 6.12 LTS 版本,部分机器已开始迁移到更新的 6.18 LTS。由于上游内核主线已修复但尚未 backport 到 6.12 LTS,在漏洞公开时存在短暂的风险窗口。安全团队决定通过 bpf-lsm 进行临时防护,同时等待 backport 补丁可用。

关键时间线回顾:4 月 29 日 16:00(UTC)漏洞公开;约 21:00 安全与工程团队开始评估暴露面;22:52 确认现有行为检测覆盖漏洞利用模式;23:01 行为检测生成高 severity 告警;4 月 30 日 03:14 宣布安全事件以推动跨职能协作;同日上午完成 bpf-lsm 缓解程序的生产就绪;14:25 宣布工程事件以协调缓解与内核补丁推送;当日晚间 bpf-lsm 缓解程序全面部署;5 月 4 日上午重启自动化恢复正常节奏,未平权的服务器通过正常自动化流程更新。

可落地参数与监控建议

基于 Cloudflare 的实践经验,以下参数和监控点可作为防御部署的参考。

在检测规则层面:监控进程创建 AF_ALG 套接字后的行为序列,特别是后续是否执行了 setuid 二进制;关注内核日志中与 authencesn 相关的错误消息;检测进程对 setuid 二进制文件描述符的异常操作。

在 bpf-lsm 策略层面:socket_bind 钩子的白名单应仅包含已知需要使用内核加密 API 的服务进程;建议在生产环境先开启 audit 模式记录所有 AF_ALG 套接字创建事件,确认无遗漏的合法用户后再切换到 enforce 模式;通过 dmesg 或内核审计日志监控 bpf-lsm 的拦截事件。

在内核升级层面:Debian/Ubuntu 用户应关注 linux-image 包的版本更新;RHEL/CentOS 用户应关注 kernel 和 kernel-tools 的同步更新;更新后需验证 uname -r 显示的版本包含安全修复,同时确认系统启动后加载的模块列表中 algif_aead 的行为符合预期。

在监控指标层面:建议采集 AF_ALG 套接字创建事件按进程维度的聚合统计;跟踪 setuid 二进制执行事件的异常峰值;记录内核加密子系统相关系统调用的错误率变化。

Copy Fail 漏洞的响应展示了 Cloudflare 在面对内核级安全威胁时的快速响应能力:行为检测在漏洞公开前就提供了覆盖,bpf-lsm 实现了无需重启的精细化防护,而内核补丁的稳步推进则提供了最终的长期解决方案。这套 "检测 — 缓解 — 修复" 的三层防御体系为大规模基础设施的安全运营提供了可复制的工程实践范例。

资料来源:Cloudflare 官方博客 "How Cloudflare responded to the 'Copy Fail' Linux vulnerability"(2026 年 5 月 7 日发布)、CERT-EU 安全公告 2026-005。

security