近日,Linux 内核披露本地提权漏洞 CVE-2026-31431(Copy Fail),该漏洞源于内核加密子系统中的一处逻辑缺陷,攻击者可以利用 AF_ALG 加密接口与 splice() 系统调用的组合,向任意可读文件的页缓存写入受控的4字节数据,从而篡改 setuid 程序,无需竞争条件即可直接获得 root 权限,目前该漏洞PoC和技术细节已公开。
鉴于该漏洞影响范围较大,OpenAtom openEuler(简称 “openEuler” 或 “开源欧拉”)社区迅速开展应急响应,2026年4月30日完成对社区全部在维的版本的评估分析,并于2026年5月3日完成了4.19、5.10和6.6全系列内核版本的修复,建议客户尽快做好自查并及时应用对应的修复补丁。
该漏洞的根源涉及 AF_ALG 加密接口、splice 系统调用以及具有 setuid-root 二进制文件,这三者结合导致攻击者能将恶意数据写入内核页缓存,进而篡改二进制文件,从而执行二进制文件可以触发本地提权风险。
系统版本 | 内核版本 | 是否受影响 | 修复补丁链接 |
openEuler-20.03-LTS-SP4 | <=4.19.90-2604.3.0.0369 | 是 | https://atomgit.com/openeuler/kernel/pull/22146 |
openEuler-22.03-LTS-SP4 | <=5.10.0-311.0.0.214 | 是 | https://atomgit.com/openeuler/kernel/pull/22139 |
openEuler-24.03-LTS | <=6.6.0-145.0.6.133 | 是 | https://atomgit.com/openeuler/kernel/pull/22148 |
openEuler-24.03-LTS-SP1 | <=6.6.0-145.0.6.145 | 是 | https://atomgit.com/openeuler/kernel/pull/22148 |
openEuler-24.03-LTS-SP2 | <=6.6.0-145.0.3.144 | 是 | 已停止维护,https://atomgit.com/openeuler/kernel/pull/22148 |
openEuler-24.03-LTS-SP3 | <=6.6.0-145.0.6.137 | 是 | https://atomgit.com/openeuler/kernel/pull/22148 |
各版本修复内核RPM包,可在安全公告中获取:
系统版本 | 修复内核版本 | 公告链接 |
openEuler-20.03-LTS-SP4 | 4.19.90-2605.3.0.0370 | https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-2174 |
openEuler-22.03-LTS-SP4 | 5.10.0-312.0.0.215 | https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-2175 |
openEuler-24.03-LTS | 6.6.0-145.0.7.134 | https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-2176 |
openEuler-24.03-LTS-SP1 | 6.6.0-145.0.7.146 | https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-2172 |
openEuler-24.03-LTS-SP2 | - | 已停止维护,可升级openEuler-24.03-LTS-SP3对应的修复版本:https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-2173 |
openEuler-24.03-LTS-SP3 | 6.6.0-145.0.7.138 | https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-2173 |
内核版本自查:uname -a,确定内核是否在受影响范围:
检查内核配置是否启用:
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)
CONFIG_CRYPTO_USER_API_AEAD=y:openEuler在维的版本模块已静态编译入内核,会自动加载,lsmod不可查,会受影响。
CONFIG_CRYPTO_USER_API_AEAD=m:可通过lsmod检查模块是否加载
lsmod | grep algif,若存在则受影响。
1、升级openEuler社区已发布的修复内核版本,需使用root权限操作:
官方源在线升级:sudo dnf update kernel -y
或手动离线升级:
rpm -ivh kernel-6.6.0-145.0.7.138.oe2403sp3.aarch64.rpm
注:
以24.03-LTS-SP3版本update为例 最新内核包获取地址:
https://repo.openeuler.org/openEuler-24.03-LTS-SP3/update/aarch64/Packages/
2、更新完内核后重启系统并确认内核版本是否正确
sudo uname -a
3、验证漏洞已修复
在无法更新修复补丁的情况下可尝试采取以下规避措施:
1. algif_aead模块禁用
`algif_aead.ko` 为 crypto 框架层提供的 socket 用户态接口,受 `CONFIG_CRYPTO_USER_API_AEAD` 控制(`=m` 时编译成模块,`=y` 是编译进内核),openEuler默认发布的内核是编译进内核的,因此禁用该模块的规避措施不可用,基于openEuler内核将此模块编译为ko的情况下可禁止此模块加载进行规避。
2. Seccomp 禁止相关 syscall
seccomp 是进程级别的控制机制,通过 seccomp 禁止进程使用带有 `AF_ALG` 标志位的 socket。适用容器场景,通过更改容器管理器(如 docker)配置,给新创建的容器增加 seccomp 规则,阻止新容器使用 `AF_ALG` socket。
[1].https://copy.fail/
[2].https://github.com/theori-io/copy-fail-CVE-2026-31431
[3]引入问题补丁
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=72548b093ee38a6d4f2a19e6ef1948ae05c181f7
[4]修复问题补丁
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a664bf3d603dc3bdcf9ae47cc21e0daec706d7a