🌐 English | Português | Español | 中文 | Íslenska
一键缓解和修复 CVE-2026-31431 — Linux 内核 "Copy Fail" 本地权限提升漏洞。该脚本禁用受影响的 algif_aead 模块,通过 apt 升级内核,并(可选)安装 systemd 定时器以保持系统更新。
专为 Ubuntu 服务器设计(也兼容基于 Debian 的系统)。
⚠️ 运行前请审查脚本。 这是一个以 root 身份运行的安全工具。在通过
sudo执行之前,请先阅读copyfail.sh。在可能的情况下,请始终优先使用您发行版的官方内核更新流程。
CVE-2026-31431 ("Copy Fail") 是内核 algif_aead 模块(用户空间加密 API 的 AEAD 套接字接口)中的一个逻辑缺陷。本地非特权用户可以触发对任何可读文件(包括 setuid 二进制文件)的页面缓存的确定性 4 字节写入,并在几秒钟内获得 root 访问权限。该缺陷于 2017 年(commit 72548b093ee3)引入,影响 2017 年至修复期间构建的所有内核。在您应用发行版官方补丁的同时,此脚本会禁用受影响的模块。
apt-get 和 awksudo)wget -O copyfail.sh https://raw.githubusercontent.com/paulorlima9/copyfail-fix/main/copyfail.sh
chmod +x copyfail.sh
sudo ./copyfail.sh
首次运行时,脚本将:
/etc/modprobe.d/disable-algif.conf 以将 algif_aead 模块列入黑名单algif_aead 当前已加载,则卸载它apt-get update && apt-get upgrade -y 以拉取已修补的内核升级后需要重启以加载新内核。
sudo ./copyfail.sh [选项]
完整修复 — 应用缓解并升级内核:
sudo ./copyfail.sh
仅检查状态:
sudo ./copyfail.sh --check
仅缓解(不升级内核):
sudo ./copyfail.sh --mitigate
撤销缓解 在确认内核已修补并重启后:
sudo ./copyfail.sh --revert
启用每日自动更新(Supervision):
sudo ./copyfail.sh --supervision
Supervision 功能安装一个 systemd 定时器,每 24 小时运行一次 apt-get upgrade,确保在您的发行版发布内核补丁后立即获取它们。
启用后,将创建两个 systemd 单元:
copyfail-fix-supervision.service — 以 --upgrade 执行脚本的 oneshot 服务copyfail-fix-supervision.timer — 每天触发服务的定时器(启动后 5 分钟也会触发)# 检查定时器状态
systemctl status copyfail-fix-supervision.timer
# 查看下次计划运行时间
systemctl list-timers copyfail-fix-supervision.timer
# 禁用自动更新
sudo systemctl stop copyfail-fix-supervision.timer
sudo systemctl disable copyfail-fix-supervision.timer
# 手动触发更新
sudo systemctl start copyfail-fix-supervision.service
install algif_aead /bin/false 写入 /etc/modprobe.d/disable-algif.conf,这样下次启动时模块就无法加载rmmod algif_aead 将其从运行中的内核中卸载(如果模块正在使用中则跳过 — 需要重启)apt-get update,然后执行非交互式 apt-get upgrade 以安装最新的内核软件包--check 时,检查 uname -r、lsmod、modprobe 文件以及最新安装的 linux-image-* 软件包--revert 时,删除 modprobe 文件并通过 modprobe 重新加载模块执行过程中,脚本显示进度指示器:
+(绿色)— 操作已应用-(红色)— 操作已撤销.(灰色)— 操作已跳过(已应用或不适用)!(黄色)— 警告(例如需要重启)MIT
| 选项 | 缩写 | 描述 |
|---|
--help | -h | 显示帮助信息 |
--mitigate | -m | 仅应用缓解措施(禁用 algif_aead 模块) |
--upgrade | -u | 仅升级内核/软件包(apt-get upgrade) |
--check | -c | 显示当前状态(内核版本、模块、缓解) |
--revert | -r | 撤销缓解(在内核修补并重启后) |
--supervision | -s | 通过 systemd 定时器启用每日自动更新 |