Claude Code如何防御Bash注入
内容提要
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的新架构与传统安全方法有什么不同?
新架构放弃了“检测坏事物”的理念,转而采用“只允许我们理解的结构”的方法,使用AST解析和允许列表。
Claude Code如何处理Bash的复杂引用规则?
Claude Code在AST解析之前运行预检查,以捕捉已知的Tree-Sitter/Bash差异,确保安全性。
Claude Code如何防止eval-like命令的安全风险?
Claude Code维护了一份eval-like命令的列表,任何出现在argv[0]中的命令都会被标记为过于复杂,从而避免风险。
Claude Code的五层防御架构是怎样的?
Claude Code的五层防御包括AST允许列表、预检查、语义检查、旧的正则表达式系统和YOLO分类器,每层都默认阻止不安全的命令。
Claude Code如何处理Zsh的扩展机制带来的安全问题?
Claude Code通过阻止zmodload命令和黑名单列出所有模块内建,来应对Zsh的扩展机制可能带来的安全问题。