Claude Code源码泄漏之后 我仔细分析了安全架构
你有没有想过这个问题:当 AI 可以帮你执行 Shell 命令、编辑文件、访问网络时,它真的安全吗?
最近,Claude Code cli 遭遇泄漏被意外公开,在 深入研究这份源码后,我发现——这家 AI 公司在安全上的投入,远超大多数人想象。
一、AI 助手的安全,不只是「Yes or No」
很多人以为,AI 工具的安全就是「允许」或「拒绝」两种状态。但Claude Code告诉我:安全是一个层层叠加的防御体系。当你对它说「帮我部署这个项目」时,你的指令会依次经过:用户输入→权限模式→ 规则引擎→工具级检查→分类器→用户确认→平台安全,每一层都是独立的检查点,就像机场安检:行李检查→身份验证→登机牌核验,每一关都可能发现问题,但整体不会因为某一关失效而崩溃。这叫「纵深防御」(Defense-in-Depth)。
二、 六种权限模式:不是简单的开关
Claude Code 内置了六种权限模式,对应不同的使用场景:
| 模式 | 行为 | 适合场景 |
|---|---|---|
default |
每次危险操作都问我 | 日常开发 |
plan |
规划模式,定期审批 | 大规模重构 |
acceptEdits |
自动编辑当前目录文件 | 信任目录内工作 |
auto |
AI 自己判断 | 自动化流水线 |
bypassPermissions |
完全放行 ⚠️ | CI 环境 |
dontAsk |
一律拒绝 | 只读模式 |
三、 一个 Shell 命令要过四层安检
如果说权限模式是第一道闸门,那么Bash 命令的安全检查才是真正的硬核部分。一个Shell 命令进入系统后,会依次经过:
Layer 1:23 项静态检测
Claude Code 的安全检查编号定义了 23 种主要类别:

用正则和模式匹配检测:
-
命令注入(
-,&&,||开头) -
进程替换(
<(...),>(...)) -
环境变量劫持(
IFS,PATH,LD_PRELOAD) -
Unicode 空白字符注入
-
/proc文件系统访问 -
Zsh 危险命令(
zmodload、emulate、sysopen等 24 种) -
……共 23 大类
Layer 2:AST 语法树分析
Claude Code 使用 tree-sitter-bash 解析命令,构建语法树。
关键设计:Fail-Closed —— 任何未知的节点类型,默认拒绝。

也就是说,只有被明确认定为安全的语法结构才能通过,未知的一律 Say No。
Layer 3:规则匹配 + 命令白名单
精细到每个命令的安全标志。比如git,只允许 log、diff、show 等只读操作,禁止执行 hooks(防止代码注入)。

Layer 4:ML 分类器
在auto模式下,分类器会在你确认前提前2秒预判风险。

这叫「推测性分类——不阻塞用户体验的前提下,提前知道这个命令有没有问题。

四、命令注入防御:正则的极限挑战
这是最让我震撼的部分。Claude Code 的安全团队要对抗的,是人类智慧的几千种变体。
1、空白字符注入

2、注释符逃逸

3、花括号扩展绕过


五、文件系统也有「红线」
不只是命令,文件操作同样受到严格保护。
1、危险文件黑名单
-
.gitconfig→ Git 配置劫持 -
.bashrc→ Shell 启动注入 -
.zshrc→ Shell 启动注入 -
.mcp.json→ MCP 服务器配置 -
.claude.json→ Claude 配置
Claude Code 会阻止修改这些文件:
2、危险目录黑名单
-
.git→ Git hooks 注入 -
.vscode→ IDE 配置 -
.idea→ IDE 配置 -
.claude→ Claude 配置目录
3、读取限制

六、凭证管理:你的密钥安全吗?
Claude Code 使用macOS Keychain 存储凭证(加密存储)。
关键安全措施:
-
PKCE 认证:防止授权码截获
-
提前刷新:Token 过期前 5 分钟自动刷新
-
受信设备:90 天滚动过期,登录后 10 分钟内注册
⚠️ 但有一个风险点:Linux和Windows降级到明文存储(macOS有 Keychain,Linux/Windows 还没有实现 libsecret)。
七、访问网页也有「防火墙」
当 AI 需要抓取网页时(WebFetchTool),URL 会经过严格验证:

八、安全设计的哲学
回顾 Claude Code 的安全架构,三个核心理念贯穿始终:

1. 默认保守 — 所有操作默认需要确认

2. 白名单优于黑名单 — 只允许已知的安全结构

3. 分层独立 — 每层独立运行,单层失效不影响整体

九、让我震撼的几个细节
分析了这么多代码,有几个细节真的让我印象深刻:
1. 安全检查函数用了整整 2800 行
Claude Code 的安全检查函数总计超过2800+ 行。这还只是冰山一角。
2. 连 PowerShell 注释语法都阻止

3. CR 回车符注入检测

写在最后
深入分析后,我的感受是:Claude Code 在安全上的投入,远超一般人的预期,它不是简单地「允许」或「拒绝」,而是通过纵深防御、层层过滤,在让 AI 足够强大的同时,把风险控制到最低。这也给所有 AI 开发者提了个醒:
安全不是功能的敌人,而是让功能走得更远的护航者。
当 AI 逐渐成为程序员的「第二双手」,我们需要的不仅是能力,更是可以信赖的安全体系。
声明:
-
本文内容基于公开技术资料分析
-
代码示例经脱敏处理,仅用于技术原理说明
-
所有技术细节均可通过公开文档验证
关于首序智能
上海首序智能科技有限公司聚焦人工智能安全与合规治理,依托国际领先科研成果与资深网络安全团队,成立即获上市公司数千万天使投资。公司核心业务围绕大模型构建全链路解决方案,让AI系统能为企业,为国家,为人类提供更好的服务。
公司将国内外顶尖大学实验室在对抗攻防、算力防御和多模态防御等领域的科研成果转化为落地产品,核心团队具备丰富的技术转化与项目落地化经验,解决方案可适配军工、金融、医疗、汽车等多行业,能有效解决人工智能安全合规、有效使用、算力浪费等痛点,为人工智能安全合规与治理提供关键支撑。
夜雨聆风