Security Model¶
重要性:⭐⭐⭐ 目标读者:安全工程师 / 企业 IT / 高级用户 关联:analysis/security-audit.md
1. 安全概览¶
Claude Code 采用纵深防御(Defense in Depth):
┌─────────────────────────────────────┐
│ Layer 0: OS 层(反调试 / PATH) │
├─────────────────────────────────────┤
│ Layer 1: 用户层(信任对话框) │
├─────────────────────────────────────┤
│ Layer 2: 配置层(白/黑名单) │
├─────────────────────────────────────┤
│ Layer 3: 工具层(25+ validator) │
├─────────────────────────────────────┤
│ Layer 4: AI 层(LLM classifier) │
├─────────────────────────────────────┤
│ Layer 5: 监控层(audit / telemetry)│
└─────────────────────────────────────┘
6 层防御。
2. 6 大安全面¶
2.1 Bash 命令¶
风险:命令执行
防御:
- 25+ validator(tools/BashTool/bashSecurity.ts)
- 6 层决策(exact → wildcard → sandbox → early deny → semantic → classifier)
- 50 subcommands 上限
- speculative LLM classifier
- 完整审计见 analysis/security-audit.md
2.2 MCP¶
风险:外部 server 任意工具 防御: - OAuth 2.0 + PKCE 强制 - 2 步动态 client registration - 12 项敏感参数脱敏 - 30s timeout - Step-up auth - 完整审计见 deep-dive-mcp-auth.md
2.3 Path¶
风险:rm -rf / 等 防御: - 680 行 CmdletPathConfig - 50+ cmdlet 配置 - isDangerousRemovalRawPath - 保守 deny(未明确路径 = deny) - glob 不展开 - 完整审计见 deep-dive-powershell-path.md
2.4 Auth¶
风险:API key 泄露 防御: - 5 种方式(API key / helper / OAuth / AWS / GCP) - macOS keychain 隔离 - pending401Handlers 去重 - 5min / 15min / 1h TTL - 完整审计见 deep-dive-auth.md
2.5 Settings¶
风险:配置篡改 防御: - 4 级 settings 源(policy > local > project > user) - Enterprise policy limits - Remote managed settings(失败 open) - Settings 同步(feature gate)
2.6 Telemetry¶
风险:敏感信息泄露
防御:
- 命名约定 _I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS
- URL 凭证脱敏
- 12 项 OAuth 敏感参数脱敏
- 用户可控 isAnalyticsDisabled
- 完整审计见 logging-telemetry.md
3. 6 层防御详解¶
3.1 Layer 0: OS 层¶
// Windows PATH 防御
process.env.NoDefaultCurrentDirectoryInExePath = '1'
// 反调试(商业版)
if ("external" !== 'ant' && isBeingDebugged()) {
process.exit(1)
}
2 措施。
3.2 Layer 1: 用户层¶
// 信任对话框
if (!checkHasTrustDialogAccepted()) {
// 警告 + 退出
}
// Sandbox 模式
function checkSandboxAutoAllow(command): boolean { ... }
2 措施。
3.3 Layer 2: 配置层¶
白/黑名单。
3.4 Layer 3: 工具层¶
25+ 规则。
3.5 Layer 4: AI 层¶
// LLM classifier
async function bashClassifier(command): Promise<{ allow, reason }> { ... }
// speculative
const speculativeChecks = new Map()
LLM 兜底。
3.6 Layer 5: 监控层¶
审计。
4. 信任模型¶
4.1 完全信任¶
- ✅ 用户的 settings.json
- ✅ 项目级 .claude/settings.json
- ⚠️ Plugin(需审查)
- ❌ MCP server(需审查)
4.2 零信任¶
- ❌ 用户输入
- ❌ Hook 输出
- ❌ Tool result 内容
- ❌ Bash 命令
- ❌ 网络响应
零信任外部输入。
4.3 部分信任¶
- ⚠️ Skill 内容
- ⚠️ Command 描述
- ⚠️ Agent 描述
部分信任——需校验。
5. 攻击面¶
5.1 攻击者能做什么¶
4 攻击面。
5.2 攻击者不能做什么¶
4 不能。
6. Prompt 注入防御¶
6.1 攻击向量¶
4 攻击向量。
6.2 防御¶
// 1. @ 提及隔离为独立 message
// 2. bash 输出引用(非内联)
// 3. tool 描述截断 2KB
const MAX_MCP_DESCRIPTION_LENGTH = 2048
// 4. system prompt 显式声明
4 防御。
7. 数据流¶
用户输入
↓
@ 提及(隔离)
↓
attachments(无恶意)
↓
system prompt
↓
Claude API
↓
tool 决策
↓
hook 检查
↓
实际执行
↓
tool result
↓
引用(而非内联)
↓
下轮 prompt
11 步。
8. 凭据保护¶
8.1 5 种凭据¶
| 凭据 | 存储 | 加密 |
|---|---|---|
| API key (env) | env var | OS env 隔离 |
| API key (keychain) | macOS keychain | OS 加密 |
| OAuth token | local file | filesystem perms |
| AWS STS | 内存 | OS mem |
| GCP creds | 内存 | OS mem |
5 种。
8.2 防御¶
- ❌ 不存 plaintext 到 log
- ❌ 不上报 API key
- ❌ 不进 telemetry
- ✅ 内存隔离
- ✅ OS 加密(keychain)
5 措施。
9. 5 个反模式(项目避免的)¶
9.1 静默失败¶
避免静默。
9.2 错误信息含敏感¶
避免泄露。
9.3 sudo¶
避免 sudo。
9.4 路径跳出¶
避免跳出。
9.5 不验证输入¶
验证输入。
10. 合规考虑¶
10.1 SOC 2¶
- 审计日志
- 访问控制
- 数据加密
3 项。
10.2 GDPR¶
- 数据最小化
- 用户控制
- 透明度
3 项。
10.3 HIPAA¶
- 不存 PHI
- 加密传输
- 审计
3 项。
11. 5 个企业部署建议¶
11.1 Policy Settings¶
// /etc/claude-code/policy.json
{
"permissions": {
"deny": ["Bash(rm -rf:*)", "WebFetch", "Bash(curl:*)"]
}
}
强制。
11.2 远程管理¶
集中管理。
11.3 审计日志¶
审计。
11.4 关闭 telemetry¶
关闭。
11.5 Sandbox¶
沙箱。
12. 5 个安全更新检查¶
12.1 bash validator¶
检查。
12.2 凭证脱敏¶
检查。
12.3 路径校验¶
检查。
12.4 信任模型¶
检查(推测)。
12.5 feature flag¶
检查。
13. 5 个常见误解¶
- "plugin 沙箱" —— ❌ 没有
- "MCP server 隔离" —— ❌ 没有
- "hook 沙箱" —— ❌ 没有
- "自动审核" —— ❌ 没有
- "100% sandbox" —— ❌ 没有
5 误解——用户自己负责。
14. 5 个推荐工作流¶
14.1 启动前¶
审计。
14.2 启动时¶
信任。
14.3 运行时¶
观察。
14.4 完成后¶
清理。
14.5 团队¶
- 共享
.claude/settings.json模板 - 共享 plugin 集合
- 共享 hook 脚本
- 共享 marketplace
共享。
15. 总结¶
Claude Code 的安全模型 = 纵深防御 + 用户责任。
核心: - 6 层防御 - 6 大安全面 - 25+ bash validator - 5 种凭据保护 - 4 种 credential 存储 - 用户负责审查
下一步: - 审计 security-audit.md - 配 policy - 监控