针对 CVE-2026-31431(“Copy Fail”) 的各发行版缓解脚本——这是一个影响 Linux 内核 algif_aead 的本地权限提升漏洞,几乎影响自 2017 年以来发布的所有发行版。
每个脚本要么从发行版软件仓库安装已修补的内核(如果可用),要么在不可用时将存在漏洞的 algif_aead 内核模块加入黑名单,从而在您重启到已修复内核之前关闭漏洞利用路径。
为您的发行版选择对应脚本,审计后以 root 身份运行。
# Ubuntu
sudo bash scripts/ubuntu.sh
# Debian
sudo bash scripts/debian.sh
# RHEL / Rocky / AlmaLinux / CentOS Stream
sudo bash scripts/rhel.sh
# Fedora
sudo bash scripts/fedora.sh
# Arch
sudo bash scripts/arch.sh
# openSUSE Leap / Tumbleweed
sudo bash scripts/opensuse.sh
# Alpine
sudo bash scripts/alpine.sh
# 其他发行版(Gentoo、NixOS、不可变发行版等)
sudo bash scripts/universal.sh
如果希望先预览而不做任何更改,请先使用 --check。
各发行版脚本执行以下算法;universal.sh 跳过第 4–5 步。
sudo 重新执行。--force,否则拒绝在不匹配的主机上运行。uname -r。PATCHED_KERNEL_VERSION,且当前运行的内核版本不低于该版本,脚本会移除任何残留的缓解文件并退出。--yes 跳过)安装。安装后,您需要手动重启。/etc/modprobe.d/cve-2026-31431.conf,内容为 blacklist algif_aead 和 install algif_aead /bin/true,然后通过 AF_ALG 套接字绑定探测验证漏洞利用路径已关闭。PATCHED_KERNEL_VERSION = PENDING 表示维护者尚未记录该发行版的已修复内核版本。每一行通过一行 PR 更新。
脚本会自动运行此探测。如需自行检查:
python3 - <<'PY'
import socket, errno
try:
s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0)
s.bind(("aead", "authencesn(hmac(sha1),cbc(aes))"))
print("BAD: bind succeeded — host is NOT mitigated")
s.close()
except OSError as e:
print(f"OK: bind blocked, errno={e.errno} ({e.strerror})" if e.errno == errno.ENOENT
else f"INCONCLUSIVE: errno={e.errno}")
PY
已缓解或已修补的主机会输出 OK: bind blocked, errno=2 ...。
在您的发行版发布已修复内核并重启到该内核后,请移除 modprobe 黑名单,以便合法使用 AF_ALG aead 的应用程序能够正常工作:
sudo bash scripts/<your-distro>.sh --undo
当您的发行版发布已修复内核时:
scripts/<distro>.sh 中的一行——将 PATCHED_KERNEL_VERSION 设置为已修复的软件包版本(格式为 dpkg-query -W / rpm -q VERSION-RELEASE / pacman -Q 返回的格式)。<distro>: fix shipped in <version> 的 PR。安全缓解工具。在将任何从互联网上找到的脚本通过管道输入 sudo bash 之前,请先进行审计。维护者不对 MIT 许可证下的任何责任负责。
MIT。
| 发行版 | 内核包 | 已修补版本 | 最后检查时间 |
|---|
| Ubuntu (24.04) | linux-image-generic | PENDING | 2026-05-01 |
| Debian | linux-image-amd64 | PENDING | 2026-05-01 |
| RHEL / Rocky / Alma | kernel | PENDING | 2026-05-01 |
| Fedora | kernel | PENDING | 2026-05-01 |
| Arch | linux | PENDING | 2026-05-01 |
| openSUSE | kernel-default | PENDING | 2026-05-01 |
| Alpine | linux-lts | PENDING | 2026-05-01 |
| 参数 | 含义 |
|---|
-y, --yes | 非交互模式;跳过内核安装提示。 |
--force | 绕过发行版不匹配检查。 |
--check | 只读预览;打印将要执行的操作,不更改任何内容。 |
--undo | 移除 /etc/modprobe.d/cve-2026-31431.conf。在安装已修补内核后使用。 |
-h, --help | 用法信息。 |