招新小广告CTF组诚招re、crypto、pwn、misc、合约方向的师傅,长期招新IOT+Car+工控+样本分析多个组招人有意向的师傅请联系邮箱
[email protected](带上简历和想加入的小组)
前言
这篇文章起源于一个偶然发现的Cursor功能。
在一次编码过程中,Cursor的Chat响应了对某个文件的锚点,我点击发现它直接跳转到了对应文件的对应行及对应的文本光标,如下图。
这引起了我的好奇,我开始尝试构造一些提示文本,最终让Cursor返回了更加有趣的响应,当它渲染并被点击之后,这个快捷的定位跳转功能可以打开我系统上任意一个文件(也可以创建一个新的文件),如视频所示。
接下来我又尝试构造了读取系统敏感文件、以及通过外部URL的方式让Cursor读取并执行页面中的Prompt,它也可以按照我预期的那样可以穿越到任一的目录去读写文件。
相关细节我已经发送到了Cursor。当然这不是本文的主题,既然以Cursor/Windsurf为代表的AI IDE可能由于类似的操作产生可能存在的安全隐患,那国内众多的AI编码助手是否也存在类似的问题。
于是就诞生了本文。
“聪明的威胁媒体”,本文标题取自于Cursor官方对我提交的细节报道的回复Thank you for clarifying, I see your concern now - clever threat vectors.
国内AI编码助手
在正式开始前要事先声明,对于国内任何一款AI编码助手的测试均使用我本人账号,过程也没有任何对VSCode插件本体的任何安全测试。截至目前,我也并不认为这是一种漏洞,最多归属于可能存在的安全隐患。
我使用了最新版本的VSCode,同时安装了主流的AI编码助手,分别是豆包MarsCode AI、腾讯云AI代码助手、通义灵码的最新版本插件(均来自VSCode插件市场)。
本次面向国内AI编码助手测试的目的,一是是否可以通过构造的Prompt,让编码助手返回可跳转定位的链接,并打开任意位置的文件。二是是否可以通过构造的Prompt,让编码助手返回可以访问外部HTTP服务的链接,并将部分源码泄露。那么,正片开始。
通义灵码
经过发送构造后的Prompt,通义灵码在VSCode插件可以返回直接打开本地任意文件的链接,如视频所示。
接下来,我构造了另一个Prompt,通义灵码返回了一个超链接,当我点击之后就会打开浏览器访问一个我的测试URL,这个URL通过GET请求参数将当前源码的部分内容接受并显示在了网页中,如视频所示。
第三步,我将一个带有恶意Prompt的URL丢给通义灵码,希望它可以读取页面上的内容并做出响应(在Cursor中可以复现),结论是通义灵码并不能读取URL中的网页文本。
腾讯云AI代码助手
接下来按照刚才测试通义灵码的步骤来对腾讯云AI代码助手进行测试。
直接说结论,腾讯云AI代码助手对超越当前项目Codebase的目录及文件做了安全防护,它不能通过简单的提示词穿越到其他目录中,如下图所示。
接下来按照第二个步骤,腾讯云AI代码助手成功拼接了部分源码内容,返回了一个超链接。只不过它对一个特征明显的文本做了防御,拦截了我原本接受GET请求的/illegal_content路由,所以我更换了一个新的路由。
更加智能的是,腾讯云AI代码助手将文件的路径也帮我拼接到了URL中,让我的HTTP服务接收到了完整的本地文件路径和部分源码内容,如视频所示。
同样的,腾讯云AI代码助手也无法直接读取外部URL的网页文本,第三步尝试通过外部提示注入的方式失败。
豆包MarsCode AI
在对豆包MarsCode AI进行测试时,它给出的响应无法直接打开本地文件,第一步测试失败。
不过在拼接源码组成可访问外部URL的超链接时,通过逐步引导的方式,构造并访问成功,如视频所示。
同样的,豆包MarsCode AI也无法直接访问外部URL的网页文本,第三步失败。
总结与思考
这是一次非常简单的提示注入测试,截止到本文完结我也并不认为它属于可以构造、可实现攻击的现实场景中的安全漏洞,但是随着智能体应用不断迭代的过程中,我们的IDE/编辑器终将会被AI所完全操控,所有的插件也可能都会接收并理解外部数据源,是否可以在下一个版本中可以看到对本地项目的权限管控以及对打开外部URL的安全提示,拭目以待。
结束
招新小广告
ChaMd5 Venom 招收大佬入圈
新成立组IOT+工控+样本分析 长期招新