CVE-2026-35020Anthropic Claude Code CLI 和 Claude Agent SDK 中存在严重的操作系统命令注入漏洞。该漏洞位于命令查找辅助工具和深度链接终端启动器中,允许本地攻击者通过操纵 `TERMINAL` 环境变量来执行任意命令。由于程序在构造和执行 shell 命令时启用了 `shell=true`,攻击者注入的 shell 元字符会被 `/bin/sh` 解释器执行。此漏洞不仅可以在正常的 CLI 执行过程中被触发,还可以通过深度链接处理程序路径触发,最终导致攻击者获得运行 CLI 的用户权限,执行任意系统命令,对系统的机密性、完整性和可用性造成严重影响。
该漏洞的根本原因是应用程序对环境变量的处理缺乏安全校验。当 Claude Code CLI 或 Agent SDK 尝试启动终端时,它会读取系统中的 `TERMINAL` 环境变量,并将其直接拼接到待执行的 shell 命令字符串中。由于代码逻辑使用了 `shell=true` 来执行命令,底层调用了 `/bin/sh -c`,这导致拼接后的字符串会被 Shell 解析器进行语法分析。
攻击者可以将 `TERMINAL` 变量设置为包含恶意 Shell 元字符(如 `;`, `&&`, `` ` ``, `$()` 等)的值。例如,将变量设置为 `gnome-terminal; malicious_command; #`。当程序执行时,Shell 会先执行终端启动命令,随后执行分号后的恶意命令。由于攻击向量为本地(AV:L)且无需权限(PR:N),任何能够修改环境变量的本地上下文(包括恶意软件或低权限用户)均可利用此漏洞提权或执行破坏性操作。