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

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

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

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

工具目录

分类

查看所有分类
Loading categories
cifswitch-check — CIFSwitch - CVE-2026-46243 的检测脚本 | Kitploit
工具/GitHubGitHub/liamromanis101/cifswitch-check
权限提升漏洞扫描器容器安全漏洞分析漏洞利用脚本与自动化配置审计云安全DevSecOps
GitHubliamromanis101/cifswitch-check

cifswitch-check

CIFSwitch - CVE-2026-46243 的检测脚本

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

cifswitch-check

一个用于检查 Linux 系统是否暴露于 CIFSwitch (CVE-2026-46243) 的 Shell 脚本——这是一个自 2007 年以来一直存在于 Linux 内核 CIFS/SMB 客户端中的本地权限提升漏洞。

可在裸机主机、虚拟机以及容器内运行。设计用于直接嵌入 CI/CD 管道。


背景

CIFSwitch 于 2026 年 5 月 28 日由安全研究员 Asim Manizada 披露。该漏洞将内核 cifs.spnego 密钥类型中缺失的输入验证与 cifs-utils 中拥有 root 权限的 cifs.upcall 辅助程序串联起来。

一个无特权的本地用户可以调用 request_key() 并传入伪造的密钥描述,导致内核以 root 权限调用 cifs.upcall,且参数由攻击者控制。当 upcall_target=app 时,辅助程序会进入攻击者的挂载命名空间,在执行 getpwuid() 查询后才会降权——从而加载攻击者控制的 NSS 模块并以 root 权限执行任意代码。

利用前提条件:

  • 存在漏洞的内核(自 2007 年以来存在,已在 6.18.22 / 6.19.12 / 7.0+ 中修复)
  • 已安装 cifs-utils >= 6.14
  • 启用了无特权的用户命名空间(大多数发行版默认启用)
  • 没有强制性的 SELinux/AppArmor 策略阻止该路径

公开 PoC 可在 manizada/CIFSwitch 获取。


检查项


用法

root@kitploit:~
# 克隆或下载
curl -O https://raw.githubusercontent.com/liamromanis101/cifswitch-check/main/cifswitch-check.sh
chmod +x cifswitch-check.sh

# 交互式运行(彩色输出)
./cifswitch-check.sh

# 静默模式——仅显示失败项和最终结论
./cifswitch-check.sh --quiet

# JSON 输出——适用于 CI/CD 管道、SIEM 接入
./cifswitch-check.sh --ci

# 无颜色输出(纯文本,适用于日志记录)
./cifswitch-check.sh --no-colour

# 该脚本也可作为 Agensi 的 SKILL 使用:
https://www.agensi.io/skills/cve-2026-46243-cifswitch

退出码

退出码含义
0不存在漏洞,或所有关键缓解措施已到位
1存在漏洞——一项或多项检查失败
2脚本错误

输出示例

交互式(人类可读)

root@kitploit:~
  CIFSwitch 漏洞检查  (CVE-2026-46243)
  内核: 6.18.5   主机: myserver   容器: false
────────────────────────────────────────────────────────────────────────
[失败] KERNEL_VERSION         内核 6.18.5 似乎未修补。修复版本: >= 6.18.22, >= 6.19.12, >= 7.0。请更新您的内核。
[通过] CIFS_UTILS             cifs-utils 未安装 —— cifs.upcall 辅助程序不存在,攻击链已断裂
[通过] CIFS_MODULE            CIFS 内核模块在此系统上不存在
[失败] USERNS                 user.max_user_namespaces = 15980(非零)。请禁用以阻止命名空间步骤:
[通过] REQUESTKEY_RULE        未找到 cifs.spnego request-key 规则 —— 拥有 root 权限的 cifs.upcall 将不会被调用
[警告] MAC_POLICY             未检测到强制 MAC 策略(SELinux/AppArmor)
[ -- ] FIX_SYMBOL             CIFS 模块未加载 —— 跳过内核符号检查
────────────────────────────────────────────────────────────────────────

  结论: 存在漏洞 —— 需要修复
  参考: https://heyitsas.im/posts/cifswitch/

JSON(--ci)

root@kitploit:~
{
  "scanner": "cifswitch-check",
  "cve": "CVE-2026-46243",
  "timestamp": "2026-06-03T00:10:08Z",
  "hostname": "myserver",
  "kernel": "6.18.5",
  "in_container": false,
  "overall": "FAIL",
  "checks": [
    {"check": "KERNEL_VERSION", "status": "FAIL", "detail": "Kernel 6.18.5 appears unpatched. Fixed in: >= 6.18.22, >= 6.19.12, >= 7.0. Update your kernel."},
    {"check": "CIFS_UTILS",     "status": "PASS", "detail": "cifs-utils NOT installed — cifs.upcall helper absent, attack chain is broken"},
    {"check": "CIFS_MODULE",    "status": "PASS", "detail": "CIFS kernel module not present on this system"},
    {"check": "USERNS",         "status": "FAIL", "detail": "user.max_user_namespaces = 15980 (non-zero). Disable to block namespace step:"},
    {"check": "REQUESTKEY_RULE","status": "PASS", "detail": "No cifs.spnego request-key rule found — rootful cifs.upcall will not be invoked"},
    {"check": "MAC_POLICY",     "status": "WARN", "detail": "No enforcing MAC policy (SELinux/AppArmor) detected"},
    {"check": "FIX_SYMBOL",     "status": "INFO", "detail": "CIFS module not loaded — symbol check skipped"}
  ]
}

CI/CD 集成

GitHub Actions

root@kitploit:~
- name: CIFSwitch vulnerability check
  run: |
    chmod +x ./cifswitch-check.sh
    ./cifswitch-check.sh --ci | tee cifswitch-result.json
  # 退出码 1 将在运行器存在漏洞时导致步骤失败

GitLab CI

root@kitploit:~
cifswitch-check:
  stage: security
  script:
    - chmod +x cifswitch-check.sh
    - ./cifswitch-check.sh --ci > cifswitch-result.json
  artifacts:
    paths:
      - cifswitch-result.json

Jenkins

root@kitploit:~
stage('CIFSwitch Check') {
    steps {
        sh 'chmod +x cifswitch-check.sh && ./cifswitch-check.sh --ci > cifswitch-result.json'
        archiveArtifacts artifacts: 'cifswitch-result.json'
    }
}

缓解措施(如果无法立即修补)

1. 修补内核(当您的发行版软件包可用时)

上游修复提交为 3da1fdf4efbc,已排队等待稳定版内核 >= 6.18.22、>= 6.19.12 和 >= 7.0。各发行版的后向移植正在积极推出——请查看您厂商的 CVE-2026-46243 安全公告。在软件包可用之前,请应用以下缓解措施。

2. 移除 cifs-utils(如果您不使用 CIFS/SMB 挂载,这完全打破了攻击链)

root@kitploit:~
apt remove cifs-utils       # Debian / Ubuntu
dnf remove cifs-utils       # RHEL / Fedora / AlmaLinux

2. 禁用无特权的用户命名空间(阻止命名空间切换步骤)

root@kitploit:~
# Debian / Ubuntu
sysctl -w kernel.unprivileged_userns_clone=0
echo 'kernel.unprivileged_userns_clone=0' >> /etc/sysctl.d/99-cifswitch.conf

# RHEL / Fedora / upstream
sysctl -w user.max_user_namespaces=0

⚠️ 这可能会破坏 Flatpak、无 root 的 Podman/Docker 以及 Chrome/Chromium 沙箱。

3. 禁用 cifs.spnego request-key 规则

root@kitploit:~
sed -i 's|^create cifs.spnego|#create cifs.spnego|' /etc/request-key.d/cifs.spnego.conf

4. 将 CIFS 内核模块加入黑名单(如果未使用 SMB 网络挂载)

root@kitploit:~
echo 'blacklist cifs' >> /etc/modprobe.d/blacklist-cifs.conf
rmmod cifs 2>/dev/null || true
depmod -a

受影响的发行版

漏洞可利用性要求已安装 cifs-utils >= 6.14 且启用无特权的用户命名空间。确认在默认配置下存在漏洞的发行版包括 AlmaLinux 8/9、RHEL 8/9、CloudLinux 8/9/10 以及部分安装了 cifs-utils 的 Ubuntu/Debian 版本。

默认情况下 SELinux/AppArmor 阻止漏洞利用的发行版:Ubuntu 26.04、Fedora 40–44、CentOS Stream 10、Rocky Linux 10、AlmaLinux 10、SLES 16、openSUSE Leap 16。

不受影响的发行版:Amazon Linux 2、Kali Linux 2019.4/2020.4(cifs-utils 版本缺少命名空间切换功能)。

对于 RHEL/CentOS/Amazon 发行版内核,脚本将参考厂商安全公告,因为仅凭版本字符串无法可靠确定后向移植状态。


需求

  • bash >= 4.0
  • 标准 coreutils(awk、grep、cut、find、sort)
  • 大多数检查无需 root 权限;内核符号检查(FIX_SYMBOL)需要 root(或 CAP_SYSLOG)权限

参考

  • 最初研究人员文章 — Asim Manizada
  • SecurityWeek 报道
  • BleepingComputer 报道
  • CloudLinux 安全公告与缓解指南
  • AlmaLinux 安全公告
  • 上游修复提交 — 3da1fdf4efbc
  • NVD — CVE-2026-46243

免责声明

本脚本仅供防御目的——帮助管理员评估和修复暴露风险。它执行只读检查,不会对系统进行任何更改。PoC 利用代码不包含在此处,也未在此提供链接;请参考原始研究人员的安全公告。

下载工具
检查项描述
KERNEL_VERSION将正在运行的内核与已修补的上游版本进行比较(注意:发行版软件包仍在推出中)
CIFS_UTILS检测 cifs-utils 安装情况以及可利用的版本(>= 6.14)
CIFS_MODULE检查 CIFS 内核模块是否已加载、内建或列入黑名单
USERNS读取 kernel.unprivileged_userns_clone 或 user.max_user_namespaces sysctl 值
REQUESTKEY_RULE检查是否存在调用 cifs.upcall 的活跃 cifs.spnego 规则
MAC_POLICY检测是否启用了强制性的 SELinux 或 AppArmor(在修补后的发行版上会阻止漏洞利用)
CONTAINER_CAPS在容器中:检查是否持有 CAP_SYS_ADMIN 能力(允许无限制的 userns)
CONTAINER_PROC在容器中:检查是否具有 /proc/sys 的写权限(特权容器)
FIX_SYMBOL如果 CIFS 已加载且 /proc/kallsyms 可读:验证修复提交的内核符号是否存在