
Fleet規模のCVE-2026-31431監査および修復オーケストレーター。SSH経由でLinuxホストを対象とし、厳格なホストキー検証と複数形式のレポート出力に対応。
本项目是一个舰队级编排工具,用于对企业/内部网络中的 Linux 主机进行 CVE-2026-31431 的审计与修复。
algif_aead)>=3.13uvuv sync
pyproject.toml 中已配置清华镜像源:
[tool.uv]
index-url = "https://pypi.tuna.tsinghua.edu.cn/simple"
cp fleet.env.example fleet.env
然后更新 fleet.env,填入真实的主机信息和凭据。
uv run python main.py fleet.env
.
├── main.py
├── pyproject.toml
├── uv.lock
├── fleet.env.example
├── reports/
└── src/
├── main.py
├── models.py
├── config.py
├── executor.py
├── collector.py
├── analyzer.py
├── adapters.py
├── remediator.py
├── orchestrator.py
└── reporter.py
fleet.env 配置参考格式为 KEY=VALUE。空行和以 # 开头的注释行会被忽略。
MODE
audit:仅检测,不执行修复。fix:检测并执行修复流程。auditAUTO_REBOOT
0 或 10MODE=fix 时生效。SSH_TIMEOUT
12MAX_WORKERS
8REPORT_DIR
./reportsPROGRESS_HEARTBEAT_SECONDS
5DEVICE_MAX_DURATION_SECONDS
1800PROGRESS_LOG_TO_FILE
REPORT_DIR。0 或 11FLEET_COUNT
1..FLEET_COUNT。DEVICE_n_HOST 为空,则跳过该槽位。每台主机使用 DEVICE_{n}_ 前缀,例如 DEVICE_1_*、DEVICE_2_*。
DEVICE_n_NAME
device_n。DEVICE_n_HOST
DEVICE_n_PORT
22DEVICE_n_USER
rootDEVICE_n_PASSWORD
DEVICE_n_KEY 同时使用,或单独使用。fleet.env 中显式设置的凭据。DEVICE_n_KEY
./keys/node-1_ed25519DEVICE_n_PASSWORD 和 DEVICE_n_KEY 均为空,连接将快速失败。DEVICE_n_SUDO_PASSWORD
# =========================
# 全局配置
# =========================
MODE=audit
AUTO_REBOOT=0
SSH_TIMEOUT=12
MAX_WORKERS=8
REPORT_DIR=./reports
PROGRESS_HEARTBEAT_SECONDS=5
DEVICE_MAX_DURATION_SECONDS=1800
PROGRESS_LOG_TO_FILE=1
FLEET_COUNT=3
# =========================
# 设备 1
# =========================
DEVICE_1_NAME=pve-node-1
DEVICE_1_HOST=192.168.1.10
DEVICE_1_PORT=22
DEVICE_1_USER=root
DEVICE_1_PASSWORD=
DEVICE_1_KEY=./keys/pve-node-1_ed25519
DEVICE_1_SUDO_PASSWORD=
# =========================
# 设备 2
# =========================
DEVICE_2_NAME=web-1
DEVICE_2_HOST=192.168.1.20
DEVICE_2_PORT=22
DEVICE_2_USER=admin
DEVICE_2_PASSWORD=your_ssh_password
DEVICE_2_KEY=
DEVICE_2_SUDO_PASSWORD=your_sudo_password
# =========================
# 设备 3
# =========================
DEVICE_3_NAME=
DEVICE_3_HOST=192.168.1.30
DEVICE_3_PORT=22
DEVICE_3_USER=ops
DEVICE_3_PASSWORD=
DEVICE_3_KEY=./keys/db-1_ed25519
DEVICE_3_SUDO_PASSWORD=
MODE=audit
uv run python main.py fleet.env
行为:
MODE=fix
AUTO_REBOOT=0
uv run python main.py fleet.env
行为:
/etc/modprobe.d/disable-cve-2026-31431-algif-aead.confalgif_aeadAUTO_REBOOT 决定是否重启SAFE
algif_aead 未加载。MITIGATED
NEEDS_PATCH
algif_aead 可用/已加载,且缺少补丁线索。UNKNOWN
FAILED
每次运行会在 REPORT_DIR 中生成 3 个文件:
cve_2026_31431_<timestamp>.jsoncve_2026_31431_<timestamp>.csvcve_2026_31431_<timestamp>.mdprogress_<timestamp>.log(实时进度和心跳日志)核心字段:
name、hoststatuskernel、osalgif_loaded、algif_availablepatch_hintfixed、rebootederrorfleet.env 或私钥提交到版本库。audit -> fix -> 重新审计。ModuleNotFoundError: No module named 'paramiko'
uv sync。大量主机显示为 FAILED
BadHostKeyException
known_hosts 记录冲突。fleet.env 中的凭据。ssh-keygen -R <host>ssh-keyscan -H <host> >> $env:USERPROFILE\.ssh\known_hostsServer ... not found in known_hosts
known_hosts,然后重新运行。内核已更新但状态仍为风险