Linux Kernel 被披露其存在本地权限提升漏洞,漏洞编号CVE-2026-31431,代号 “Copy Fail”。可导致本地低权限攻击者利用 AF_ALG 加密接口与 splice() 系统调用,实现向任意可读文件的页缓存中写入受控的4字节数据,进而通过篡改 setuid 二进制文件获得 root 权限等危害。
--------------------------------------------------------------------------------------------------------------------------------------------------------
影响版本
72548b093ee3 <= commit < a664bf3d603d
目前已知受影响操作系统及版本:
Ubuntu 25.10
Ubuntu 24.04 LTS
Ubuntu 22.04 LTS
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Amazon Linux 2023
Red Hat Enterprise Linux 10
Red Hat Enterprise Linux 9
Red Hat Enterprise Linux 8
SUSE 16
安全版本
commit >= a664bf3d603d
排查方法
# 检查内核版本
uname -r
# 检查内核配置是否启用(推荐)
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)
注:会出现以下三种情况:
CONFIG_CRYPTO_USER_API_AEAD=n 彻底关闭,不受影响,无需处理
CONFIG_CRYPTO_USER_API_AEAD=y 静态编译进内核,Ismod 查不到,但受影响,暂无缓解措施,只能升级内核(例如:RHEL/CentOS/Rocky Linux/AlmaLinux 8, 9, 10 三代产品)
CONFIG_CRYPTO_USER_API_AEAD=m 模块方式,Ismod 可查,加载就有风险,受影响,可通过以下缓解措施缓解
# 检查模块是否已加载受影响模块
lsmod | grep algif
# 检查 AF_ALG socket 是否可创建
python3 -c "import socket; socket.socket(38,5,0); print('VULNERABLE')"
缓解措施(如系统官方暂未发布更新补丁):
# 禁用内核模块
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
# 卸载已加载模块
rmmod algif_aead 2>/dev/null
注:针对静态编译进内核的系统(例如:RHEL/CentOS/Rocky Linux/AlmaLinux 8, 9, 10 三代产品),此缓解措施可能无法生效,建议更新官方内核补丁。
# 验证
python3 -c 'import socket; s=socket.socket(38,5,0); (s.bind(("aead", "authencesn(hmac(sha256),cbc(aes))")) or print("未缓解")) if s else None' 2>/dev/null || echo "已缓解"
容器环境加固
通过 seccomp 禁止 AF_ALG socket 创建(family=38):
"syscalls": [{ "names": ["socket"], "action": "SCMP_ACT_ERRNO", "args": [{"index": 0, "value": 38, "op": "SCMP_CMP_EQ"}]}]