关于Linux内核crypto子系统本地内存损坏漏洞(CVE-2026-31431)的安全告知

时间:2026-04-30 17:19:41来源:信息安全部作者:梦之想科技

漏洞详情
CVE-2026-31431(又称CopyFail)是Linux内核crypto加密子系统存在的本地高危漏洞,由algif_aead模块与authencesn加密模板共同引发,攻击者可借助AF_ALG套接字与splice()调用,实现对系统页缓存的可控4字节写入。

漏洞源于2017年Linux内核对algif_aead加入了in-place原地加密优化,会把splice()传入的文件页缓存通过sg_chain()链接到可写的输出散射表中。而authencesn在解密流程中,会越界使用目标缓冲区作为临时存储,在assoclen+cryptlen位置执行4字节写入,这段写入会直接命中页缓存,且内核不会标记脏页、不触发磁盘回写,形成无磁盘痕迹的内存篡改。

本地低权限用户就能利用该漏洞,只需要一段732字节的Python脚本即可稳定触发,不需要竞争条件,也不用针对不同发行版或内核版本做适配。攻击者通过篡改su、sudo等setuid程序的内存页缓存,运行后直接获取root权限,整个利用过程稳定、不触发系统崩溃,也不会在磁盘留下修改痕迹。

成功利用漏洞可直接实现本地提权到root,还能完成容器逃逸控制宿主机。因为攻击只修改内存页缓存,不改动磁盘文件,可绕过常规文件校验、HIDS/EDR等安全检测。同时可导致内核崩溃、业务中断,配合远程命令执行类漏洞可形成完整入侵链路,被广泛用于挖矿、勒索软件与内网横向渗透。

影响范围
漏洞从2017年相关代码提交后开始存在,Linux4.14及以上所有未打补丁的内核版本均受影响,覆盖Ubuntu24.04、AmazonLinux2023、RHEL14.3、SUSE16等主流发行版。

漏洞复现
image006.jpg

排查方法
1.内核版本自查排查
在服务器终端执行uname-r命令,查看当前Linux内核版本,只要是4.14及以上且未升级到官方修复基线版本,即可判定存在CVE-2026-31431漏洞风险,重点核查线上业务服务器、容器节点、云主机等资产。

2.内核模块加载状态排查:
检查系统是否加载漏洞关联的algif_aead内核模块,执行lsmodgrepalgif_aead,若查询到模块正常加载,说明系统具备漏洞触发前置条件,风险等级进一步升高。

3.容器环境资产排查:
梳理内网Docker、Kubernetes所有容器节点及业务容器,核查宿主机内核版本,同时排查是否存在普通低权限容器账户,一旦容器可正常调用AF_ALG套接字接口,就存在容器逃逸攻陷宿主机的风险。

4.异常行为日志排查:
查看系统安全日志、登录日志,重点监控普通低权限用户异常提权、短时间内频繁创建AF_ALG套接字、未知Python脚本异常运行等行为,排查是否已有攻击者利用漏洞尝试提权或植入后门。

5.系统加固配置排查:
检查服务器是否做过相关安全加固,包括是否限制AF_ALG套接字访问、是否通过seccomp规则封禁相关系统调用、是否禁用无用加密内核模块,未做任何加固配置的服务器均需纳入高危整改清单。

修复建议
1.优先升级内核至官方修复版本主线内核已在6.18.22+、6.19.12+、7.0+中合入补丁。各发行版需跟进对应稳定分支更新,例如Ubuntu、RHEL、SUSE等,只要内核版本低于上述基线且未打补丁,均需升级。

2.临时禁用漏洞模块若暂时无法升级,可直接禁止加载algif_aead

3.通过seccomp限制AF_ALG套接字对容器/普通用户环境,用seccomp规则屏蔽AF_ALG相关系统调用,阻止创建加密套接字,避免漏洞被利用。Docker/K8s可在容器运行时直接追加seccomp策略。

产品支持
实战化攻防技能演训平台:模拟真实攻防仿真场景,提升蓝军、红军实战应对能力训练平台。

参考链接
https://xint.io/blog/copy-fail-linux-distributions
https://seclists.org/oss-sec/2026/q2/281
https://gist.github.com/grenkoca/b82281a4706e936072979acf54b608df
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a664bf3d603d