Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
copy-fail-cve-2026-31431 — 被动式 Linux 主机扫描器,通过内核版本、发行版变更日志、模块状态及 AF_ALG 可达性对 CVE-2026-31431 暴露风险进行分类,并提供 JSON 输出以支持 SIEM 集成。 | Kitploit
工具/GitHubGitHub/effiesec/copy-fail-cve-2026-31431
漏洞扫描器漏洞分析配置审计
GitHubeffiesec/copy-fail-cve-2026-31431

copy-fail-cve-2026-31431

被动式 Linux 主机扫描器,通过内核版本、发行版变更日志、模块状态及 AF_ALG 可达性对 CVE-2026-31431 暴露风险进行分类,并提供 JSON 输出以支持 SIEM 集成。

查看仓库
3个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Copy Fail 的 CVE 检查器(CVE-2026-31431)

作者/贡献者:Patrick Doyle(作者/维护者)、Effie Renard(合著者)、Kimberly-Lee Banks(合著者)、Chris F.(支持/代码审查)

AI 披露:Claude Code 用于编写测试文件、编写测试数据以及进行代码安全审查。所有编辑均由其中一位贡献者手动审核。

描述

单个静态链接的 Go 二进制文件,用于对 Linux 主机暴露于 CVE-2026-31431 的风险进行分类。

该工具是被动式的。它不会利用该漏洞。机制探测(见下文安全声明)仅发出两次系统调用,且从不触及易受攻击的代码路径。


检查内容

信号来源标志
内核版本与上游修复对比uname(2)--kernel-version
发行版变更日志提及该 CVEapt/rpm/apk 或磁盘上的 changelog.Debian.gz--changelog
algif_aead 模块状态/proc/modules、modprobe.d、/lib/modules--module
易受攻击面是否可达socket(AF_ALG) + bind(authencesn(...))--mechanism
是否编译进 vmlinux/boot/config-$(uname -r) 或 /proc/config.gz(属于 --module 的一部分)

如果未提供任何检查标志,则全部四项都会运行。


输出模式

模式触发条件使用场景
美化样式(默认)TTY 标准输出,无 --format 覆盖,无 NO_COLOR 环境变量交互式 Shell 运行
纯文本非 TTY 标准输出,或 --format=text,或 NO_COLOR=1,或 --no-colorShell 脚本、管道
JSON--format=jsonSyslog/SIEM 接入、Shell 脚本
静默--quiet仅退出码(自动化/脚本)

通过管道时强制美化:cvecheck --pretty | tee report.txt。 在 TTY 中强制纯文本:cvecheck --no-color 或 NO_COLOR=1 cvecheck。


安全声明(机制探测)

该探测仅发出两次系统调用 socket(AF_ALG, SOCK_SEQPACKET, 0) 和 bind(fd, &SockaddrALG{Type:"aead", Name:"authencesn(hmac(sha256), cbc(aes))"}),随后执行 close(fd)。它不会执行用于密钥的 setsockopt、不会执行 accept、不会执行 sendmsg、不会执行 splice,也不会创建管道。易受攻击的代码路径需要将加密数据的 sendmsg 与来自页缓存支持的文件描述符的 splice 结合使用;这些操作均未发生,因此该漏洞无法被触发。

探测成功意味着该攻击面可达。内核是否仍包含该漏洞由内核版本 + 变更日志信号决定。

副作用:成功的 bind 会通过内核模块自动加载器自动加载 algif_aead。模块检查在机制探测之前运行,因此加载状态报告是探测前的状态。要完全抑制自动加载,请先对 algif_aead 进行黑名单设置。


退出码

代码含义
0PATCHED / NOT_VULNERABLE / MITIGATED / LIKELY_NOT_EXPLOITABLE
2VULNERABLE 或 MECHANISM_REACHABLE(部分扫描,未检查内核版本)
3INCONCLUSIVE(信号不足)

发行版覆盖范围

发行版检测方式内核包备注
Ubuntu / Debian / Mint / Pop!_OSaptlinux-image-$(uname -r)优先从磁盘读取变更日志,避免签名内核上 apt changelog 的网络脆弱性
RHEL / CentOS / Rocky / Alma / Fedora / Amazon Linuxrpmkernel内置 algif_aead(CONFIG_..._AEAD=y);黑名单缓解措施无效
Oracle Linuxrpmkernel 或 kernel-uek通过 uname -r 中的 uek 子字符串检测 UEK
openSUSE / SLESrpmkernel-default
Alpineapklinux-lts / linux-virt 等根据发布后缀选择 flavor
Arch / CachyOS / Manjaro / Endeavour / Gentoo无不适用滚动/源码发行版:依赖内核版本检查

部署

自动安装

自动检测您的架构,将正确的二进制文件下载到 $(pwd),并根据发布的 SHA256SUMS 验证其 SHA-256:

root@kitploit:~
curl -fsSL https://copyfail.pcdoyle.dev/install.sh | sh

该脚本在校验和不匹配时以非零状态退出,并删除损坏的文件。

下载二进制文件(手动)

为您的宿主机架构选择对应的二进制文件:

架构二进制文件
Intel/AMD 64 位(x86_64)cvecheck-linux-x86_64
ARM 64 位(aarch64)cvecheck-linux-arm64
Intel/AMD 32 位(i?86)cvecheck-linux-x86

运行前验证:

root@kitploit:~
curl -LO https://github.com/pcdoyle/copy-fail-cve-2026-31431/releases/latest/download/cvecheck-linux-x86_64
curl -LO https://github.com/pcdoyle/copy-fail-cve-2026-31431/releases/latest/download/SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS
chmod +x cvecheck-linux-x86_64

从源码构建

root@kitploit:~
make build  # bin/cvecheck-linux-{x86_64,arm64,x86}
# SCP(SFTP) 到服务器:
scp ./bin/cvecheck-linux-x86_64 host:/tmp/  # 小于 4 MB,静态链接,无 glibc 依赖

运行程序

SSH 到主机

root@kitploit:~
# SSH:
ssh <host>
# 运行二进制文件:
/tmp/cvecheck-linux-x86_64  # 人类友好的美化输出。
/tmp/cvecheck-linux-x86_64 --format=json # 适合脚本、Syslog 和 SIEM
/tmp/cvecheck-linux-x86_64 --format=text # 适合脚本和管道

作为 SSH 远程命令运行

root@kitploit:~
ssh <host> /tmp/cvecheck-linux-x86_64   # 直接运行默认使用 --format=text
ssh <host> /tmp/cvecheck-linux-x86_64 --format=json # 适合 Syslog/SIEM

用于容器/Chroot:

将宿主机根目录挂载到可读位置并传递 --root:

root@kitploit:~
docker run --rm -v /:/host:ro alpine /tmp/cvecheck --root /<host-path>

--root 控制所有磁盘查找(/etc/os-release、modprobe.d、/lib/modules、/boot/config-*、变更日志文件)。内核版本和机制探测仍通过 uname(2) 和 socket(AF_ALG, ...) 触及正在运行的内核。


优先级阶梯

按以下顺序解析(首个匹配者胜出):

  1. PATCHED:发行版变更日志引用了该 CVE ID。
  2. NOT_VULNERABLE:运行中的内核 >= 上游修复版本。
  3. MITIGATED:algif_aead 已被列入黑名单且未加载且未编译进 vmlinux。
  4. LIKELY_NOT_EXPLOITABLE:AF_ALG 不可用且模块不在磁盘上。
  5. MECHANISM_REACHABLE:攻击面可达但未检查内核版本。
  6. VULNERABLE:内核在漏洞范围内且机制可达。
  7. INCONCLUSIVE:以上均不匹配。

如果 --mechanism 与 --kernel-version 同时运行且两者均提示存在问题,则结果为 VULNERABLE 并附带修复提示。


修复提示

  • 可加载模块的发行版(Debian、Ubuntu、SUSE、Alpine、Arch):在内核升级完成前将 algif_aead 列入黑名单。
    root@kitploit:~
    echo 'blacklist algif_aead' | sudo tee /etc/modprobe.d/cve-2026-31431.conf
    sudo rmmod algif_aead 2>/dev/null
    
  • 内置模块的发行版(RHEL、CentOS、Rocky、Alma、Oracle、Amazon):黑名单文件无效,因为 CONFIG_CRYPTO_USER_API_AEAD=y 将该符号置于 vmlinux 内部。只有内核升级(或 kpatch 风格的实时补丁)才能解决暴露问题。该工具可检测到这一点。

故障排除

症状原因修复方法
changelog: error="apt: exit status 100 ... Changelog unavailable for linux-signed-amd64"Debian/Ubuntu 签名内核;apt 镜像不提供源码包的变更日志仅当磁盘上的文件缺失且镜像不可访问时才会出现该错误,请安装 apt-doc 或等待镜像更新。
module: ... config_src=""无法读取内核配置(无 /boot/config-*、无 /proc/config.gz、/boot 仅 root 可读)以 root 身份运行,或接受无法确定 BuiltIn 状态。判定仍可通过其他信号解析。
mechanism: error="EAFNOSUPPORT"内核未启用 CONFIG_CRYPTO_USER_API 编译,因此主机不会通过 AF_ALG 受到漏洞影响判定将为 LIKELY_NOT_EXPLOITABLE。

来源

  • NIST CVE 数据库
  • 官方 Copy.Fail 网站
  • 官方技术分析
  • oss-security 公告
  • Theori 分析
  • Bugcrowd 摘要
下载工具