Claude Code如何防御Bash注入
💡
原文英文,约2600词,阅读约需10分钟。
📝
内容提要
Claude Code允许AI安全地执行Bash命令,通过解析命令生成抽象语法树(AST)并与允许列表匹配,避免复杂的安全漏洞。新架构不再检测坏事物,而是只允许已知结构。
🎯
关键要点
- Claude Code允许AI直接执行Bash命令,通过解析命令生成抽象语法树(AST)并与允许列表匹配,避免复杂的安全漏洞。
- 新架构不再检测坏事物,而是只允许已知结构,采用AST解析和允许列表的方式。
- 传统的安全方法依赖于正则表达式匹配,但Bash的引用规则复杂,容易导致安全漏洞。
- Claude Code的设计哲学是:如果我们不理解它,就不允许它。
- 新的架构完全放弃了“检测坏事物”的理念,转而采用“只允许我们理解的结构”的方法。
- 在AST解析之前,Claude Code运行一系列预检查,以捕捉已知的Tree-Sitter/Bash差异。
- Claude Code维护了一份大约20个eval-like命令的列表,任何出现在argv[0]中的命令都会被标记为过于复杂。
- Bash的数组下标会被评估为算术表达式,可能导致安全漏洞。
- Claude Code的BashTool通过用户默认的shell执行命令,Zsh的扩展机制可能导致安全问题。
- AST分析不仅分解命令结构,还跟踪变量赋值范围,以确保变量的安全性。
- Claude Code实现了对每个包装命令的完整标志解析逻辑,以确保安全。
- 旧的23个正则表达式验证器仍在运行,作为安全网与新AST路径并行工作。
- 代码注释详细记录了每个安全检查的背景和攻击故事,体现了对Bash安全研究的尊重。
- 整体架构包括五层防御,每一层都默认阻止不安全的命令,体现了对Bash复杂性的尊重。
❓
延伸问答
Claude Code是如何执行Bash命令的?
Claude Code通过解析命令生成抽象语法树(AST),并与允许列表匹配,从而安全地执行Bash命令。
Claude Code的安全设计哲学是什么?
Claude Code的设计哲学是:如果我们不理解它,就不允许它,采用只允许已知结构的方法。
传统的Bash安全方法存在哪些问题?
传统方法依赖正则表达式匹配,Bash的引用规则复杂,容易导致安全漏洞。
Claude Code如何处理未知命令结构?
Claude Code通过AST解析命令,任何未识别的节点类型会被标记为过于复杂,阻止执行。
Claude Code的五层防御架构包括哪些内容?
五层防御包括AST允许列表、预检查、语义检查、旧的正则表达式系统和YOLO分类器。
Claude Code如何确保变量的安全性?
Claude Code通过跟踪变量赋值范围,确保变量在执行时的安全性。
➡️