Cursor 白名单绕过:shell 内建命令污染环境实现 RCE
CVE-2026-22708 允许提示注入利用 export、typeset 等受信任的 shell 内建命令污染 Cursor 的环境变量,把一条已批准的 git 或 python 命令变成远程代码执行。已在 2.3 版本修复。
这是什么?
CVE-2026-22708 是 Cursor AI 代码编辑器中的一个白名单绕过漏洞,由 Pillar Security 研究员 Dan Lisichkin 在《The Agent Security Paradox》中披露(2026 年 1 月 14 日发表;2025 年 8 月 11 日上报给 Cursor)。NVD 为其记录了两个评分:CVSS 3.1 为 9.8(严重),CVSS 4.0 为 7.2(高危)。该漏洞已在 Cursor 2.3 中修复。
技术原理很简单:当 Cursor 智能体以 Auto-Run 模式配合白名单运行时,少数几个 shell 内建命令 —— export、unset、set、typeset、declare —— 会在从不出现于白名单、也不弹出批准请求的情况下执行。控制智能体指令的攻击者(直接控制,或通过智能体读取的恶意文件、网页间接控制)利用这些内建命令悄然污染环境变量,然后等待一条受信任的命令执行。2026 年 6 月 11 日,OWASP《State of Agentic AI Security》报告将其列入如今针对生产环境编码工具的提示注入 CVE 之中,使该话题重新受到关注。
工作原理
Cursor 的白名单在执行前校验外部二进制文件。shell 内建命令并非独立的二进制文件——它们在 shell 会话内部运行——因此完全绕过了服务器端的命令评估器。整个缺口就在于此:白名单检查的是执行了什么,从不检查执行所处的环境上下文。
一旦攻击者能够随意设置环境变量,就会盯上那些会改变普通工具行为的变量。一条常见链路滥用 git 和 man 所调用的分页器:
# 静默执行 —— 一个内建命令,从不请求批准:
export PAGER="[已删除:命令]"
# 看似无害,通常已在白名单中 —— 触发载荷:
git branch
用户以为 git branch 无害而批准它;被污染的 PAGER 却执行了攻击者的代码,而不是显示输出。Pillar 还演示了一种完全”零点击”的变体:利用 typeset 与 zsh 参数展开标志,强制对嵌入字符串求值,完全无需批准;以及一条更长的链路 PYTHONWARNINGS → BROWSER → PERL5OPT,在下一次运行任何 Python 脚本时获得代码执行。此处省略真实载荷;重点在于机制,而非可用的利用字符串。
Pillar 由此得出的深层教训是信任模型的转变。通过操纵环境变量实现 RCE 并非新事(Elttam 早在 2020 年就有记录),但过去需要本地访问以及手动的多步骤准备。一个会遵循不可信内容指令的智能体,把所有这些前提条件压缩为一次提示注入,并以开发者的权限远程执行。
为什么重要
AI 编码助手如今是提示注入攻击最集中的产品之一,因为一次成功的注入会在开发者的机器上运行,可访问源代码、SSH 密钥、云凭证和本地网络。CVE-2026-22708 表明,大多数团队所依赖的”人在回路”批准提示是可以被诱骗说谎的:可见且已批准的命令是无害的,而恶意准备早已通过从不显示的内建命令隐形完成。任何只管控命令却不管控执行上下文的智能体 IDE,都存在这一类弱点,而不仅是 Cursor。
防御
将 Cursor 升级到 2.3 或更高版本,其服务器端解析器现在会要求对任何无法分类的命令进行显式批准。除打补丁外:
- 不要把白名单当作安全边界。 Cursor 自己的文档说明白名单只是尽力而为,绕过是可能的;绝不要启用 “Run Everything” 模式。保持白名单简短,避免自动批准
git、python、npm等宽泛工具。 - 将 shell 内建命令视为安全敏感操作。 环境变量更改(
export、typeset、declare、unset)应与命令执行同等审视,而非隐式放行。 - 优先隔离而非净化。 在沙箱或一次性容器中运行智能体,使代码执行和环境变量更改无法触及真实主机、SSH 密钥或凭证。Pillar 主张——且本次攻击佐证了这一点——对于确实需要执行代码的智能体,执行隔离而非白名单才是持久的控制手段。
- 在智能体会话之间重置环境,防止被污染的变量延续到后续受信任的操作中。
- 限制智能体读取的内容。 间接注入通过仓库文件、文档和网页到达;限制并复核不可信输入可缩小触发面。
状态
| 项目 | 详情 |
|---|---|
| 标识符 | CVE-2026-22708 |
| 受影响 | 2.3 之前的 Cursor(Auto-Run + 白名单) |
| 修复版本 | Cursor 2.3 |
| CVSS(NVD) | 9.8 严重(v3.1)/ 7.2 高危(v4.0) |
| 上报时间 | 2025 年 8 月 11 日 |
| 公开披露 | 2026 年 1 月 14 日(Pillar Security) |
| 利用前提 | 对智能体的提示注入(直接或间接) |
Sources
- → https://www.pillar.security/blog/the-agent-security-paradox-when-trusted-commands-in-cursor-become-attack-vectors
- → https://nvd.nist.gov/vuln/detail/CVE-2026-22708
- → https://github.com/cursor/cursor/security/advisories/GHSA-82wg-qcm4-fp2w
- → https://www.helpnetsecurity.com/2026/06/11/owasp-prompt-injection-ai-security-failures/
- → https://www.sentinelone.com/vulnerability-database/cve-2026-22708/