近日,Pillar Security 的研究人员报告称,诸如 GitHub Copilot 和 Cursor 这类人工智能编码助手,可能会通过恶意规则配置文件的分发而被操控,从而生成包含后门程序、漏洞及其他安全问题的代码。
规则文件被人工智能编码代理用于在生成或编辑代码时指导其行为。例如,一个规则文件可能包含指令,让编码助手遵循特定的编码最佳实践、采用特定的格式,或者用特定的语言输出回复内容。
Pillar 的研究人员开发出了一种攻击技术,他们称之为“规则文件后门”。这种技术通过向规则文件中注入对人类用户不可见但人工智能代理可读的指令,将规则文件武器化。研究人员指出,像双向文本标记和零宽度连接符这类隐藏的 Unicode 字符,可被用于在用户界面以及 GitHub 的拉取请求中隐藏恶意指令。
规则配置通常在开发者社区中共享,并通过开源代码库进行分发,或者包含在项目模板里。因此,攻击者可以通过在论坛上分享恶意规则文件、在像 GitHub 这样的开源平台上发布该文件,或者通过向一个热门代码库发送拉取请求来注入恶意规则文件。一旦被篡改的规则文件被导入到 GitHub Copilot 或 Cursor 中,人工智能代理在协助受害者未来的编码项目时,就会读取并遵循攻击者的指令。
在 Pillar 展示的一个例子中,一个看似指示人工智能“遵循 HTML5 最佳实践”的规则文件包含了隐藏文本,这些隐藏文本中还有进一步的指令,要求在每个文件的末尾添加一个外部脚本。这个隐藏的提示还包括一段越狱代码,用于绕过潜在的安全检查,让人工智能确信添加该脚本对于保护项目安全是必要的,并且这是公司政策的一部分,此外还包含了指令,要求在对用户的任何回复中都不要提及添加了该脚本这件事。
Pillar 的研究人员发现,当被要求生成一个 HTML 页面时,GitHub Copilot 和 Cursor 都会遵循指令添加外部脚本,并且在这两个助手的自然语言回复中都没有提到添加了这个脚本。
研究人员称,“规则文件后门”还有可能被用于在生成的代码中引入安全漏洞,或者创建会泄露数据库凭证或 API 密钥等敏感信息的代码。
Pillar 在 2025 年 2 月向 Cursor 披露了这一漏洞利用情况,并在 2025 年 3 月向 GitHub 披露了相关情况。Cursor 表示,这个问题并非源于其平台的漏洞,管理风险是用户的责任。GitHub 也做出了类似回应,称用户有责任审查并接受由 Copilot 生成的代码和建议。
在 GitHub 2024 年“软件开发中的人工智能”调查中,约 97% 的受访者表示,他们在工作中及工作外都使用过生成式人工智能,这表明人工智能编码辅助在开发者中相当普遍。
Pillar 建议开发者审查他们使用的所有规则文件,检查是否存在诸如不可见的 Unicode 字符或不寻常格式等潜在的恶意注入情况,并像审查可执行代码一样严格审查人工智能配置文件。
研究人员表示,对于人工智能生成的代码也应该仔细审查,尤其是对于外部资源引用等意外添加的内容。自动化检测工具也有助于识别规则文件中的可疑内容,或者人工智能生成代码中存在被篡改的迹象。
(文:AI前线)