Linux 内核曝出高危本地权限提升漏洞(CVE-2026-31431,别名 Copy Fail)。该漏洞源于内核 authencesn 加密模板与 algif_aead 模块组合实现的逻辑缺陷,攻击者可通过 AF_ALG 加密接口与 splice () 系统调用,向任意可读文件页缓存写入 4 字节受控数据,篡改 setuid 程序实现本地提权至 root,容器环境下还可能引发容器逃逸。目前漏洞细节与 POC 已公开,在野利用风险极高,蓝队云已全面启动安全排查与防护预警。

一、漏洞详情

1、成因分析

2017 年 Linux 内核引入 AEAD 解密就地操作优化(提交 72548b093ee3),将 splice () 传递的目标文件页缓存直接链入可写输出散列表。authencesn 算法支持 IPsec 扩展序列号(ESN)时,解密过程会在接收缓冲区偏移assoclen + cryptlen位置写入 4 字节临时数据;当通过 recvmsg () 触发解密时,该写入会跨越缓冲区边界,覆盖后续页缓存页面,导致任意可读文件页缓存被受控篡改。

2、核心危害

本地提权:低权限用户无需竞争条件,篡改/usr/bin/su等 setuid 程序页缓存,直接获取 root 权限,且篡改不触发磁盘脏页回写,可持久化提权。

容器逃逸:容器内普通用户可利用该漏洞突破隔离限制,劫持宿主机控制权,威胁多租户云环境安全。

影响范围广:漏洞潜伏近 9 年,影响 2017 年后主流 Linux 发行版,包括 Ubuntu、RHEL、Amazon Linux、SUSE 及信创系统等。

二、影响范围

1、受影响 操作系统及版本

操作系统

Ubuntu:25.10、24.04 LTS、22.04 LTS、20.04 LTS、18.04 LTS

Amazon Linux:2023

Red Hat Enterprise Linux:10、9、8

SUSE:16

其他:Debian、Arch、Fedora、Rocky、Alma、Oracle Linux 及主流信创 OS 同期内核版本均受影响

2、受影响内核关键配置

CONFIG_CRYPTO_USER_API_AEAD=y(静态编译进内核,存在漏洞)

CONFIG_CRYPTO_USER_API_AEAD=m(模块加载状态,存在漏洞)

CONFIG_CRYPTO_USER_API_AEAD=n(彻底关闭,不受影响)

三、排查方法

1、检查内核版本,uname -r

2、检查内核配置是否启用(推荐)

grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)

注:会出现以下三种情况:

CONFIG_CRYPTO_USER_API_AEAD=n 彻底关闭,绝对不受影响

CONFIG_CRYPTO_USER_API_AEAD=y 静态编译进内核,Ismod 查不到,但存在漏洞可被利用(例如:Centos 8.5)

CONFIG_CRYPTO_USER_API_AEAD=m 模块方式,Ismod 可查,加载就有风险

3、检查模块是否已加载受影响模块,lsmod | grep algif。

4、检查 AF_ALG socket 是否可创建,python3 -c “import socket; socket.socket(38,5,0); print(‘VULNERABLE’)”

四、修复建议

1、官方已发布漏洞补丁及修复版本,请评估业务是否受影响后,升级至安全版https://git.kernel.org/stable/c/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5

2、针对 Ubuntu、Debian、RHEL/CentOS、SUSE 等用户,官方暂未发布安全更新,请及时关注官方安全公告:

Ubuntu:https://ubuntu.com/security/CVE-2026-31431

Debian:https://security-tracker.debian.org/tracker/CVE-2026-31431

RHEL/CentOS:https://access.redhat.com/security/cve/cve-2026-31431

SUSE:https://www.suse.com/security/cve/CVE-2026-31431.html

五、缓解措施

1、禁用内核模块(该方式可能不会对所有linux有效,且执行该命令可能产生未知的风险,建议在与生产环境相同的测试环境中测试没有影响之后使用。)

echo “install algif_aead /bin/false” > /etc/modprobe.d/disable-algif-aead.conf

2、卸载已加载模块 rmmod algif_aead 2>/dev/null(针对静态编译进内核的系统(例如:Centos 8.5),此缓解措施可能无法生效,建议更新官方内核补丁。)

3、容器场景下可通过 seccomp 禁止 AF_ALG socket 创建(family=38)来缓解:”syscalls”: [{ “names”: [“socket”], “action”: “SCMP_ACT_ERRNO”, “args”: [{“index”: 0, “value”: 38, “op”: “SCMP_CMP_EQ”}]}]

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。