CVE-2026-31431 是 Linux 内核模块 algif_aead(AEAD 异步密码接口)中的一个本地权限提升(LPE)漏洞。该漏洞允许本地用户将权限提升至 root 级别。
该工具可帮助:
注意:此工具仅供系统管理员进行内部审计和补丁管理。仅可在您拥有或获得授权的主机上使用。

algif_aead 模块状态(已加载/未加载)通过包管理器自动升级易受攻击主机的内核:
选项: 补丁完成后自动重启
algif_aead 模块已打补丁的内核版本数据库,适用于:
paramiko>=3.0.0 # SSH library
rich>=13.0.0 # Beautiful terminal UI
git clone https://github.com/gagaltotal/cve-2026-31431-copy-fail.git
cd cve-2026-31431-copy-fail
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
或手动安装:
pip install paramiko>=3.0.0 rich>=13.0.0
python3 copyfail_scanner.py --help
# 使用 SSH 密钥扫描子网
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH_TO_KEY>
# 扫描多个特定主机
python3 copyfail_scanner.py --hosts <IP1>,<IP2>,<IP3> --user <USERNAME> [--password <PASSWORD>]
# 扫描 + 自动打补丁
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH> --patch
# 扫描 + 临时缓解
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH> --mitigate
| 选项 | 描述 | 示例 |
|---|---|---|
--subnet | 目标子网 CIDR(与 --hosts 互斥) | --subnet 192.168.1.0/24 |
--hosts | 逗号分隔的 IP 列表(与 --subnet 互斥) | --hosts 192.168.1.10,192.168.1.20 |
--user | SSH 用户名 (必填) | --user root |
--password | SSH 密码(可选,无密钥时使用) | --password secret123 |
--key | SSH 私钥路径 | --key ~/.ssh/id_rsa |
--port | SSH 端口(默认:22) | --port 2222 |
--threads | 并行线程数(默认:30) | --threads 50 |
--patch | 自动升级易受攻击主机的内核 | --patch |
--reboot | 补丁后自动重启(与 --patch 一起使用) | --patch --reboot |
--mitigate | 应用临时缓解措施(禁用 algif_aead) | --mitigate |
--output | 将扫描结果导出到 JSON 文件 | --output hasil.json |
--yes | 在补丁/缓解前跳过确认提示 | --yes |
python3 copyfail_scanner.py \
--subnet 192.168.1.0/24 \
--user ubuntu \
--key ~/.ssh/id_rsa
输出:显示扫描结果表格和摘要
python3 copyfail_scanner.py \
--hosts 10.0.1.5,10.0.1.6,10.0.1.7 \
--user admin \
--password my_password123
python3 copyfail_scanner.py \
--subnet 172.16.0.0/16 \
--user root \
--key ~/.ssh/id_rsa \
--mitigate
操作:扫描所有主机,然后在易受攻击的主机上禁用 algif_aead 模块(需要确认)
python3 copyfail_scanner.py \
--subnet 192.168.0.0/24 \
--user ubuntu \
--key ~/.ssh/id_rsa \
--patch
操作:升级内核,但不自动重启(需要手动重启)
python3 copyfail_scanner.py \
--subnet 10.10.0.0/24 \
--user root \
--key ~/.ssh/id_rsa \
--patch \
--reboot \
--yes
操作:扫描、修补内核、自动重启、跳过确认
python3 copyfail_scanner.py \
--subnet 192.168.1.0/24 \
--user sysadmin \
--key ~/.ssh/id_rsa \
--output scan_results_$(date +%Y%m%d_%H%M%S).json
输出:终端表格 + JSON 文件结果
python3 copyfail_scanner.py \
--subnet 10.0.0.0/25 \
--user ubuntu \
--key ~/.ssh/id_rsa \
--port 2222 \
--threads 50
扫描输出示例:
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━┓
┃ IP ┃ Hostname ┃ Distro ┃ Kernel ┃ algif ┃ Status ┃ Action ┃ Notes ┃
┣━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━━┫
┃ 192.168.1.10 ┃ web-01 ┃ Ubuntu 22.04 ┃ 6.8.0-60 ┃ LOADED ┃ ✓ 安全 ┃ - ┃ 已修补 ┃
┃ 192.168.1.11 ┃ web-02 ┃ Ubuntu 20.04 ┃ 5.4.0-200 ┃ NOT_LDD ┃ ✗ 易受攻击 ┃ 已修补 ┃ - ┃
┃ 192.168.1.12 ┃ db-01 ┃ RHEL 8.9 ┃ 5.14.0-560 ┃ LOADED ┃ ? 未知 ┃ - ┃ 发行版 ┃
┗━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━━┛
摘要:
扫描的主机总数:12
可访问(SSH):11
离线:1
易受攻击:2
已修补:8
状态未知:1
hostname -f 的结果uname -r){
"cve": "CVE-2026-31431",
"scan_time": "2026-05-08T15:30:45.123456",
"results": [
{
"ip": "192.168.1.10",
"ssh_reachable": true,
"auth_ok": true,
"hostname": "web-01",
"distro": "Ubuntu 22.04 LTS",
"os_id": "ubuntu",
"kernel_version": "6.8.0-60-generic",
"algif_loaded": true,
"modprobe_blocked": false,
"patched": true,
"patch_applied": false,
"mitigation_applied": false,
"retry_count": 0,
"error": ""
}
]
}
扫描器支持以下发行版的自动检测:
| 发行版 | 包管理器 | 已修补的内核版本 | 备注 |
|---|---|---|---|
| Ubuntu | apt | 6.8.0-60、5.15.0-130、5.4.0-216 | LTS 及当前版本 |
| Debian | apt | 6.1.137、5.10.235 | 稳定版 |
| RHEL | dnf/yum | 5.14.0-570 | 包括 CentOS Stream |
| AlmaLinux | dnf | 5.14.0-570 | RHEL 的直接替代品 |
| Rocky | dnf | 5.14.0-570 | 面向企业 |
| Fedora | dnf | 6.14.4、6.13.12、6.12.25 | 前沿版本 |
| Amazon Linux | dnf | 6.1.134、5.10.235、4.14.353 | AWS 兼容 |
| SUSE / openSUSE | zypper | 6.4.0-18、5.14.21-150600.24 | 企业版和社区版 |
| Arch Linux | pacman | 6.14.4 | 滚动更新 |
对于未检测到的发行版:手动验证内核版本。内核 >= 6.14.4 通常已安全。
如果您更倾向于手动打补丁或自动补丁失败,请按照各发行版的指南操作:
sudo apt update
sudo apt upgrade linux-image-generic kmod
sudo reboot
sudo dnf clean metadata
sudo dnf upgrade kernel
sudo reboot
sudo dnf upgrade kernel
sudo reboot
sudo dnf upgrade kernel
sudo reboot
sudo zypper update kernel-default
sudo reboot
sudo pacman -Syu linux linux-headers
sudo reboot
如果您无法立即重启以进行内核升级,请应用以下缓解措施:
# 通过 modprobe.d 禁用 algif_aead 模块
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif_aead.conf
# 如果模块已加载则卸载
sudo rmmod algif_aead 2>/dev/null || echo "Module not loaded"
重要:
CONFIG_CRYPTO_USER_API_AEAD=y 的 RHEL 系列,模块内置于内核,modprobe.d 无效 → 内核升级是唯一解决方案Error: Port SSH tidak terbuka
解决方案:
nc -zv <IP> 22--portError: Autentikasi SSH gagal
解决方案:
chmod 600 ~/.ssh/id_rsassh -i ~/.ssh/id_rsa user@host--passwordExit code 1: dpkg: error processing...
解决方案:
sudo visudoapt/dnf/yumRetry: 3x | Host temporary unavailable
解决方案:
--threads 10Status: ? TIDAK DIKETAHUI
解决方案:
uname -r 并与公告比较Exit code 1: Failed to lock apt database
解决方案:
sudo tail -f /var/log/apt/term.log仅供内部使用 — 此工具仅供有权限的系统管理员进行审计和补丁管理。
免责声明:
- 仅可在您拥有或获得明确授权访问的系统上使用
- 自动打补丁和重启可能导致停机
- 在生产环境部署前先在暂存环境测试
- 打补丁前确保有备份
- 开发者对数据丢失或服务中断不承担责任
作者:GagalTotal
仓库:https://github.com/gagaltotal/cve-2026-31431-copy-fail
联系方式:ghostgtr666
如需报告错误、请求功能或有疑问:
最后更新:2026 年 5 月 8 日
扫描器版本:1.0