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

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

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

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

工具目录

分类

查看所有分类
Loading categories
check-cve-2026-23111 — 检查系统是否易受cve-2026-23111漏洞攻击的脚本 | Kitploit
工具/GitHubGitHub/criann/check-cve-2026-23111
权限提升漏洞扫描器漏洞分析配置审计威胁情报学习与教育事件响应
GitHubcriann/check-cve-2026-23111

check-cve-2026-23111

检查系统是否易受cve-2026-23111漏洞攻击的脚本

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-23111 防御性验证脚本

概述

CVE-2026-23111 是 Linux 内核 nf_tables 中的一个漏洞,在启用了用户命名空间和 nftables 的系统上,非特权用户可利用该漏洞实现本地权限提升。[1][2] 公开的厂商和政府公告将其描述为一个影响 Linux 发行版的本地问题,并强调修补是首要修复措施。[3][4]

本仓库包含一个防御性验证脚本,旨在帮助评估主机是否暴露了与该 CVE 相关的技术条件,而无需提供权限提升漏洞利用程序。它会检查相关的内核和运行时条件,可选地加载 nf_tables 模块以进行完整的功能测试,尝试使用 unshare 和 nft 进行受限的非特权验证路径,收集本地诊断跟踪,并将主机分类为诸如可能安全、被本地策略阻止或暴露路径可用等操作判定。[1][5]

该 CVE 是什么

根据 NVD 的说法,CVE-2026-23111 是一个 Linux 内核 nf_tables 漏洞,作为 netfilter 中的一个逻辑错误修复而解决,在受影响的配置中,可通过用户命名空间和 nftables 从非特权用户处利用以实现本地权限提升。[1] Ubuntu 的安全通告描述了相同的高级利用路径,并按发行版跟踪受影响和已修复的软件包状态。[2]

Red Hat 指出,本地低权限用户可能利用该问题导致拒绝服务或可能实现权限提升,并记录了一种基于阻止 nf_tables 模块加载的缓解路径(当此操作可行时)。[3] 加拿大网络安全中心的国家级指南也指导受影响的组织使用供应商更新,并在使用模块阻止缓解措施时提到了 initramfs 重新生成。[4]

脚本的作用

该脚本旨在用于防御性暴露评估,而非漏洞利用。其设计目的是:

  • 识别正在运行的内核、发行版系列以及相关的运行时加固设置。
  • 检查 CONFIG_USER_NS 和 CONFIG_NF_TABLES 是否存在。[1]
  • 检查 kernel.unprivileged_userns_clone 和 user.max_user_namespaces 以估计非特权用户命名空间是否可用。
  • 检测是否对 nf_tables 模块设置了硬性 modprobe 拒绝(install nf_tables /bin/false)或弱黑名单。
  • 检查供应商内核 RPM 变更日志中是否有 CVE-2026-23111 的回传条目(仅限 RHEL 系列)。
  • 在任何模块交互之前,通过 /proc/kallsyms 指纹识别易受攻击的符号(nft_map_catchall_activate)与补丁后的符号(nft_catchall_set_activate)。
  • 可选择通过 modprobe 加载 nf_tables(需指定 --allow-load-module,见下文),并在退出时自动卸载。
  • 在模块加载后,运行受约束的 unshare -U -n --map-root-user + 验证步骤,并记录标准输出、标准错误和最近的内核日志。

脚本将日志存储在脚本目录的子目录中,默认情况下会删除它们,除非使用了 --keep-logs。

模块加载策略

默认情况下,脚本从不加载 nf_tables。如果脚本启动时模块尚未加载,则跳过所有功能性 nft 测试,判定仅基于内核版本、kallsyms 指纹、modprobe 配置、RPM 变更日志以及 sysctl/LSM 策略证据。

这种保守的默认设置避免了在生产主机上无意中扩大攻击面。要在受控或仪表化的系统上启用完整的功能测试,请以 root 身份使用 --allow-load-module(见下文)。

使用方法

root@kitploit:~
# 默认 — 不加载模块,仅基于策略证据进行判定
./check_cve_2026_23111.sh
./check_cve_2026_23111.sh --color
./check_cve_2026_23111.sh --keep-logs
./check_cve_2026_23111.sh --color --keep-logs

# 完整功能测试 — 加载(并卸载)nf_tables,需要 root 权限
sudo ./check_cve_2026_23111.sh --allow-load-module
sudo ./check_cve_2026_23111.sh --allow-load-module --color --keep-logs

选项

何时使用 --allow-load-module

当你需要在隔离的、非生产的或专用测试虚拟机上获得最高置信度的判定时,使用 --allow-load-module。典型场景:

  • 在部署供应商修复之前,正在验证处于易受攻击范围内的内核。
  • 测试系统启用了 KASAN 或其他仪表化工具,并且你希望观察内核跟踪。
  • 目标主机上未使用该模块,并且需要完整的端到端路径检查以获取审计证据。

不要在生产主机上使用 --allow-load-module,如果这些主机上已故意阻止了 nf_tables,或者加载它会违反加固策略。

--allow-load-module 的安全门控

在尝试加载模块之前,脚本会执行以下检查,如果其中任何一项失败,则会退出并报错:

  1. /etc/modprobe.d/ 中必须不存在硬性 modprobe 拒绝(install nf_tables /bin/false)。
  2. 系统上必须存在 modprobe 命令。
  3. 脚本必须以 root(UID 0)身份运行。

如果脚本成功加载了模块,则在退出时通过 cleanup() 陷阱调用 modprobe -r nf_tables,无论脚本如何终止(成功、错误或 CTRL+C)。

判定模型

该脚本使用操作判定而非漏洞利用结果:

这些判定旨在支持修补优先级排序和防御性分类,而非替代供应商软件包状态验证。

内核版本覆盖范围

该脚本将正在运行的内核与记录的上游修复点进行映射:

推荐的缓解措施

主要推荐的操作是安装供应商修复的内核更新,并重启到修正后的内核。[2][3][4] 由于利用依赖于本地内核攻击面,额外的加固可以在安排或验证修补期间减少暴露。[5][6]

优先行动

  1. 修补内核:使用官方发行版公告并重启到已修复版本。[2][3][4]
  2. 限制非特权用户命名空间:在业务需求允许的情况下,因为记录的 attack 路径依赖于非特权用户对其的可用性。[1][5][6]
  3. 禁用或阻止 nf_tables 加载:如果系统不需要 nftables 功能,并且该更改已针对操作影响进行了验证。[3][4]
  4. 限制特权网络能力:例如涉及 CAP_NET_ADMIN 的访问路径,并减少可以操作防火墙状态的账户数量。[5]

示例加固步骤

限制非特权用户命名空间:

root@kitploit:~
echo 'kernel.unprivileged_userns_clone=0' > /etc/sysctl.d/99-cve-2026-23111.conf
echo 'user.max_user_namespaces=0' >> /etc/sysctl.d/99-cve-2026-23111.conf
sysctl --load /etc/sysctl.d/99-cve-2026-23111.conf

在操作安全的情况下阻止 nf_tables 模块加载:

root@kitploit:~
echo 'install nf_tables /bin/false' > /etc/modprobe.d/disable-nf_tables.conf
rmmod nf_tables 2>/dev/null || true

如果使用了模块加载缓解措施,一些指南建议重新生成 initramfs,以便在早期引导期间不加载被阻止的模块。[4]

Ubuntu 特定说明

Ubuntu 记录了对非特权用户命名空间的基于 AppArmor 的限制,作为减少攻击面的一种方式,而不是作为内核修复的完整替代。[6] 主机在运行时测试中可能显得暴露较少,因为攻击路径在本地被阻止,但长期修复仍然需要安装供应商修复的内核软件包。[2][6] 该脚本通过尝试实际的 unshare --user 调用并检查用户+网络命名空间内的 CAP_NET_ADMIN 是否功能正常来验证 AppArmor 限制的有效性。

Red Hat 特定说明

Red Hat 明确将阻止加载 nf_tables 模块列为 CVE-2026-23111 的缓解措施(当该更改适用于环境时)。[3] 该脚本通过 check_modprobe_deny() 检测此配置,并区分硬性拒绝(install nf_tables /bin/false,阻止按需加载)和弱黑名单(不阻止)。在 RHEL 系列系统上,脚本还会检查正在运行的内核的 RPM 变更日志中是否有 CVE-2026-23111 的回传条目,从而能够独立于上游版本号获得供应商确认的判定。

官方参考

  • NVD:CVE-2026-23111 详情 [1]
  • Ubuntu 安全:CVE-2026-23111 [2]
  • Red Hat 安全:CVE-2026-23111 [3]
  • 加拿大网络安全中心公告:AL26-011 [4]
  • Ubuntu AppArmor 用户命名空间限制概述:理解 AppArmor 用户命名空间限制 [6]

范围与安全性

本 README 和附带的脚本旨在用于防御性验证、清单编制和缓解计划。它们不能替代供应商指南、软件包级验证或标准补丁管理流程,也不应作为应用链接公告中描述的官方修复的替代品。[2][3][4]


📚 教育安全研究仓库

一个用于在受控环境中学习、测试和研究网络安全概念的仓库。


⚠️ 安全与法律免责声明

目的

本仓库仅供教育和授权的安全研究使用。

其设计目的是帮助用户了解:

  • 安全漏洞
  • 沙箱和隔离概念
  • 安全编码与防御实践

仅限授权使用

仅在对您有权限的环境中使用本仓库,例如:

  • 个人实验室或虚拟机
  • Docker 或隔离环境
  • 授权的渗透测试
  • 网络安全培训或学术研究

严禁未经授权或非法使用。


无责任

作者和贡献者概不负责因本项目造成的任何损害、误用、法律问题或损失。

使用本仓库即表示您同意:

  • 您对自己的行为负责
  • 您将合法且合乎道德地使用它
  • 本项目按原样提供,不附带任何担保

合乎道德的使用

本项目旨在用于:

  • 防御性安全研究
  • 网络安全教育
  • 漏洞意识
  • 安全系统和软件研究

请遵循负责任的披露实践,并遵守所有适用法律。


联系方式

如需负责披露或合作,请通过 GitHub 联系仓库维护者。

下载工具
nft
  • 验证 unshare --user 是否确实创建了命名空间,并且 CAP_NET_ADMIN 在其中是否正常运行,以确认 AppArmor 或 SELinux 限制是否真正有效。
  • 突出显示本地安全控制(如 AppArmor 或 SELinux)是否似乎阻止了测试路径。[6]
  • 输出带结果判定的输出,可选颜色高亮以便于分类。
  • 选项描述
    --allow-load-module授权脚本在模块尚未加载时通过 modprobe 加载 nf_tables。启用完整的 nft catchall 路径测试器和 CAP_NET_ADMIN 有效性测试。模块会在退出时自动卸载。需要 root 权限。 如果已存在硬性 modprobe 拒绝,则拒绝执行。仅用于非生产或仪表化系统。
    --color当终端支持时,启用彩色标准输出。
    --keep-logs保留脚本目录下的日志和跟踪,而不是在退出时删除。
    --help打印使用信息并退出。
    判定含义
    not-affected内核版本低于 5.13;catchall 元素功能尚未引入,因此不存在易受攻击的代码路径。
    likely-patched-vendor-confirmed在供应商内核 RPM 变更日志中找到了 CVE-2026-23111,确认已回传修复,无论上游版本如何。
    likely-patched-upstream-confirmed内核版本处于已修复的上游范围内,并且功能性 nft 测试返回非零且无内核信号——最强静态+动态证据表明处于安全状态。
    likely-patched-upstream内核版本处于已修复的上游范围内,但未运行功能测试(模块不存在或结果不确定)。仍应检查供应商公告状态。
    likely-safe-or-patched脚本未确认任何可利用路径;原因可能是内核已修复、易受攻击的代码不存在或存在隐式本地阻止。
    blocked-by-local-policy测试路径被 AppArmor、SELinux、用户命名空间限制或 modprobe 拒绝阻止。[6] 策略阻止不能替代供应商修复。
    exposed-path-available主机暴露了与记录的利用前提条件兼容的 userns + nftables 路径。[1][5]
    strong-signal-lab-confirmation观察到与 nf_tables 相关的内存损坏一致的内核日志信号。仅可在可丢弃的、仪表化的实验室中确认。
    prerequisites-missing缺少必需的诊断工具(unshare、nft);未完成有意义的运行时验证。
    分支修复版本上游提交
    6.13.x+≥ 6.13.1f41c5d1
    6.12.x≥ 6.12.128c760ba
    6.6.x≥ 6.6.75b9b6573
    6.1.x≥ 6.1.1288b68a45
    6.2–6.5, 6.7–6.11上游已停止支持仅发行版回传
    5.15.x取决于发行版Amazon Linux: ALAS2KERNEL-5.15-2026-098
    5.10.x取决于发行版Amazon Linux 2: 截至2026年3月待定
    5.4.x取决于发行版Amazon Linux 2: 截至2026年3月待定
    5.13–5.14上游已停止支持仅发行版回传
    < 5.13不受影响catchall 功能不存在