加载中

等一下,英子马上到

文章背景图

Linux 严重漏洞 CVE-2026-31431 (Copy Fail) 修复指南

2026-06-01
12
-
- 分钟
|

摘要 2026 年 4 月 29 日,安全厂商 Theori 公开披露 Linux 内核高危漏洞 CVE-2026-31431,代号 Copy Fail。该漏洞为本地权限提升 + 容器逃逸双重风险,普通用户可一键获取 root 权限,云主机、容器环境面临严重威胁

22.png

⚠️ 安全免责声明

本文仅用于安全研究和防御目的。文中的漏洞分析和技术细节旨在帮助系统管理员和安全工程师理解和修复漏洞,严禁用于非法攻击或未授权测试。

  • 读者应确保在合法授权范围内使用本文信息

一、漏洞核心信息

1.1 基本信息

项目

内容

漏洞编号

CVE-2026-31431

漏洞名称

Copy Fail

漏洞类型

Linux 内核逻辑缺陷、本地提权 (LPE)、容器逃逸

危害等级

严重

CVSS 评分

7.8(高危)/ 9.8(严重)

利用难度

极低,单脚本通杀,无竞态、无复杂堆利用

披露时间

2026-04-29

发现者

Theori 研究员 Taeyang Lee

1.2 受影响范围

该漏洞源自 2017 年内核代码优化,2017 年后主流发行版普遍受影响

已验证受影响系统与内核

发行版

内核版本

状态

Ubuntu 24.04 LTS

6.17.0-1007-aws

受影响

Ubuntu 22.04 LTS

6.2.x-6.17.x

受影响

Amazon Linux 2023

6.18.8-9.213.amzn2023

受影响

RHEL 10.1

6.12.0-124.45.1.el10_1

受影响

SUSE 16

6.12.0-160000.9-default

受影响

Debian 12+

4.14~6.18.22

受影响

Ubuntu 26.04+

7.0+

不受影响

关键利用条件

  • ✅ 本地普通用户权限即可

  • ✅ 内核启用 AF_ALG 加密接口、authencesn 模块

  • ✅ 可调用 splice 系统调用

  • ✅ 目标存在 setuid 程序(如 /usr/bin/su)

二、原理简述

漏洞出现在 Linux 内核 authencesn 加密模板,因 AF_ALG + splice 链式调用的内核优化缺陷,导致可读文件的页缓存被错误赋予可写权限,攻击者可向页缓存写入受控字节,篡改系统关键程序,实现提权与逃逸。

三、有趣的补丁方法

上游补丁信息

  • 补丁 Commit: a664bf3d603d

  • 修复方式: 回退 2017 年的 in-place 优化

  • 提交日期: 2026-04-01

四、临时缓解方案(无法立即升级时)

如果暂时无法升级内核,可采用以下临时缓解措施。

方案 1:禁用 algif_aead 内核模块(推荐)

代码语言:Bash

# 1. 永久禁用 algif_aead 模块
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf

# 2. 卸载已加载模块(失败则忽略,可能内置)
rmmod algif_aead 2>/dev/null || true

# 3. 验证模块是否被禁用
modprobe algif_aead 2>&1 || echo "✓ algif_aead 模块已成功禁用"

# 4. 检查当前使用 AF_ALG 的进程
lsof | grep AF_ALG || echo "未检测到使用 AF_ALG 的进程"

影响说明:

  • ✅ 不影响 dm-crypt/LUKS、kTLS、IPsec/XFRM

  • ✅ 不影响 OpenSSL、GnuTLS、NSS、SSH

  • ⚠️ 可能影响显式配置使用 afalg 引擎的应用

  • ⚠️ 可能影响直接绑定 aead/skcipher/hash 套接字的应用

方案 2:限制普通用户使用 AF_ALG 套接字

代码语言:Bash

# 使用 seccomp 限制 AF_ALG 套接字创建
# 适用于容器环境

# 1. 创建 seccomp 配置文件
cat > /etc/seccomp/block-afalg.json << 'EOF'
{
  "defaultAction": "SCMP_ACT_ALLOW",
  "syscalls": [
    {
      "names": ["socket"],
      "action": "SCMP_ACT_ERRNO",
      "args": [
        {
          "index": 0,
          "value": 38,  # AF_ALG
          "op": "SCMP_CMP_EQ"
        }
      ]
    }
  ]
}
EOF

# 2. Docker 容器使用
docker run --security-opt seccomp=/etc/seccomp/block-afalg.json ...

# 3. Kubernetes Pod 使用
# 在 Pod 配置中添加 securityContext

方案 3:释放页缓存(清理被篡改的缓存)

代码语言:Bash

# 释放页缓存、目录项、inodes
sync && echo 3 > /proc/sys/vm/drop_caches

# 验证效果
free -h

注意: 此操作仅清理已被篡改的缓存,不能阻止漏洞再次被利用,必须配合其他缓解措施。

3.4 验证修复是否成功

方法 1:检查内核版本

代码语言:Bash

# 查看内核版本
uname -r

# Ubuntu: 应 >= 6.17.0-1008-aws
# 通用: 应 >= 6.18.22 或 6.19.12 或 7.0+

方法 2:尝试加载 algif_aead 模块

代码语言:Bash

# 尝试加载模块,应失败
modprobe algif_aead 2>&1

# 成功禁用的输出示例:
# modprobe: ERROR: could not insert 'algif_aead': Operation not permitted

方法 3:运行官方检测脚本

代码语言:Bash

# 下载官方检测脚本
wget https://github.com/theori-io/copy-fail-CVE-2026-31431/raw/main/detect.sh

# 执行检测
chmod +x detect.sh
sudo ./detect.sh

# 输出示例:
# [+] 系统已修复,无漏洞

五、 应急响应流程

发现被入侵后的处理步骤

代码语言:Bash

# 1. 立即禁用 algif_aead 模块
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true

# 2. 释放页缓存
sync && echo 3 > /proc/sys/vm/drop_caches

# 3. 排查后门
ps auxf | grep -E "su|sudo|bash|sh"
ls -la /tmp /var/tmp
ls -la /root/.ssh/ 2>/dev/null

# 4. 检查系统完整性(如果安装了 AIDE/Tripwire)
aide --check

# 5. 升级内核
#

# 6. 重启系统
sudo reboot

评论交流

文章目录