好久没发推文了,最近各大客户项目上都爆出了 CVE-2026-31431 提权漏洞,研究了下,还不了解的小伙伴可以看下!
漏洞背景
一个2017年为了"跑更快"而埋下的内核逻辑缺陷,沉睡九年后以高危漏洞的身份浮出水面。CVE-2026-31431影响从内核4.14到6.19.11的所有版本,Ubuntu、RHEL、Debian、Amazon Linux等主流发行版全线受影响。普通用户无需任何权限,即可通过系统默认开放的加密接口,将自己提升为Root管理员。本文带你看清漏洞原理、快速自查、立即修复。
一个"省了两行代码"的决定,酿成了这个高危漏洞
2017年,Linux内核的一名开发者为了让AEAD加密运算更快、更省内存,在crypto/authencesn.c里做了一个优化:原地拷贝(in-place copy)——不新开辟内存,直接在原有内存区域上读写数据。
优化确实生效了。
但他省掉了两行边界校验代码。
没有检查源地址和目标地址是否重叠,没有限制拷贝长度,没有任何越界保护。
这个决定沉睡了将近九年。
直到2026年3月,研究人员将它正式披露为 CVE-2026-31431,漏洞代号 Copy Fail,风险等级高危,CVSS 3.1评分7.8。
漏洞基本档案
| |
|---|
| |
| |
| |
| |
| crypto/authencesn.c |
| |
| |
| 6.18.22+ / 6.19.12+ / 7.0+ |
受影响内核版本:4.14 ~ 6.19.11(含全部6.18.x、6.19.x未修复版及多个LTS分支)
你可能从没想到:内核加密接口成了攻击入口
要理解这个漏洞,需要先认识三个角色。
第一个:AF_ALG——用户与内核加密的专属通道
AF_ALG是Linux内核自带的加密通信接口,让普通应用程序可以直接调用内核里的加密算法,不需要自己实现复杂逻辑。
关键点在于:系统默认允许所有普通用户使用这个接口,不需要任何管理员权限。
这扇门,对所有人都开着。
第二个:algif_aead模块——AEAD加密的接待员
algif_aead是AF_ALG通道里专门负责AEAD加密请求的模块。用户的加密参数、缓冲区、数据长度,都经由它传递给内核底层。
这个模块在大多数Linux系统上默认加载。
它是漏洞触发的必要前提——没有加载此模块,漏洞就根本触发不了。
第三个:authencesn.c——真正出事的地方
这是内核里真正执行AEAD加密运算的代码文件。前面两个角色负责"接待和传话",这里负责"干活"。
而漏洞,就藏在它"干活"的方式里。
漏洞原理:守规矩的拷贝 vs 越界乱写的拷贝
用一个仓库货架的比喻来理解。
正常的内存拷贝是这样工作的:
搬货之前,先检查源头货架和目标货架有没有重叠;严格按照规定数量搬运;绝不越过划定范围,碰旁边的货架。
而这个漏洞里的拷贝是这样的:
为了搬得快、省空间,不新开货架,直接在原地自己搬自己。 但省掉了检查步骤——不看是否重叠、不限制搬运数量。 攻击者故意设置一个超长的搬运长度,让内核一口气往后多搬了十几格,把隔壁存放系统权限、进程控制的核心内存区域直接改写。
完整攻击链条如下:
普通用户(无任何权限)
↓ 连接 AF_ALG 加密通道(系统默认开放)
↓ 经由 algif_aead 模块传入恶意构造的参数
↓ authencesn.c 执行原地拷贝,跳过边界校验
↓ 越界写入内核权限结构体
↓ 普通账号 → Root 管理员
整个过程不需要任何特殊权限,不需要社会工程,不需要外部网络。 只要能登录这台机器,这个漏洞就可以被利用。
哪些系统受到影响?
受影响的主流Linux发行版(已验证):
| |
|---|
| 18.04 / 20.04 / 22.04 / 24.04 LTS、25.10 |
| |
| |
| 15(所有SP)/ 16 / openSUSE Leap 15.6 / 16.0 |
| |
| Fedora、Arch、Rocky、Alma、Oracle Linux、嵌入式Linux(内核≥4.14) |
同时满足以下三个条件,即为高风险主机:
- ✅ 内核版本在 4.14 ~ 6.19.11 之间
- ✅
algif_aead 模块已加载(默认大多开启) - ✅ 允许非特权用户创建 AF_ALG socket(系统默认允许)
哪些场景风险最高?
以下场景需要优先处理,风险极高:
🔴 多租户服务器多个用户共用一台机器,任何一个普通账号都可能完成提权。
🔴 Kubernetes / 容器平台容器内的低权限进程可借此漏洞提权至宿主机Root,容器隔离形同虚设。
🔴 共享主机 / CI Runner / 沙箱环境这些场景本身就面向不可信用户开放,本地提权漏洞危害极大。
🔴 云服务器 / IoT设备 / 路由器只要运行内核4.14以上的嵌入式Linux,均在影响范围内。
三步自查:两分钟判断你的服务器是否受影响
第一步:查看当前内核版本
uname -r
判断规则:
4.14 ~ 6.19.11 → 大概率存在漏洞,继续查6.18.22+ / 6.19.12+ / 7.0+ → 已修复,安全
第二步:检查关键模块是否加载
lsmod | grep algif_aead
第三步:综合判断
内核版本在 4.14 ~ 6.19.11 之间,且 algif_aead 模块已加载?→ 你的主机存在这个高危本地提权漏洞,请立即处理。
修复与缓解建议
✅ 优先方案:升级内核
将内核升级至以下任一安全版本:
各发行版请关注官方安全公告,通过系统包管理器(apt / yum / dnf / zypper)更新内核,更新后重启生效。
⚡ 临时缓解:禁用漏洞入口模块
若暂时无法升级内核,可执行以下命令卸载模块,阻断漏洞触发路径:
# 卸载模块(立即生效)
modprobe -r algif_aead
# 设置开机不自动加载(持久化)
echo"blacklist algif_aead" >> /etc/modprobe.d/blacklist.conf
⚠️ 注意:禁用此模块可能影响依赖AEAD加密接口的业务,请评估后再操作,并以升级内核为最终目标。
安全建议
CVE-2026-31431 再次说明一件事:性能优化和安全边界校验,必须同时存在,缺一不可。
两行边界检查代码的缺失,换来了九年的隐患窗口期,换来了从普通账号到Root的完整攻击路径。
对于安全团队,以下几点值得重点落实:
1. 建立内核版本基线管控,纳入资产管理,确保可见、可追踪、可响应。
2. 高风险环境优先更新,K8s节点、多租户服务器、CI/CD基础设施应排在第一优先级。
3. 最小权限原则落地,在业务允许范围内限制非必要内核模块的加载。
4. 漏洞通报订阅常态化,订阅各发行版安全邮件列表,将响应时间窗口前移。
总结
| |
|---|
| CVE-2026-31431(Copy Fail) |
| |
| Linux内核 4.14 ~ 6.19.11,覆盖Ubuntu/RHEL/Debian等主流发行版 |
| |
| uname -r + lsmod | grep algif_aead |
| 升级至6.18.22+ / 6.19.12+ / 7.0+ |
| modprobe -r algif_aead |
两分钟,查一下你的服务器。不要等攻击者替你发现这个问题。
你所在的团队是否已经开始排查这个漏洞?欢迎在留言区说说你们的应对方案。