恶意软件托管在 chatgpt.com 上,而这正是它的用意
一场新活动租用了一个你早已信任的域名的信誉。一条 Google 广告把你送到一个真实的 chatgpt.com 分享链接,分享链接显示一份伪造的故障通知,通知再把恶意软件递到你手上。这里讲的是这份信任是怎么被借走的——以及当整件事发生在一台用完即弃的虚拟机里时,这份借用为什么就不再重要了。
地址栏显示的是 chatgpt.com。锁形图标是绿的。页面由 OpenAI 提供。一个谨慎的人被教导要检查的每一个信号, 返回的结果都是干净的——而这个页面仍然在试图往这台 电脑上安装恶意软件。可信域名不是一次失手。它本就是 整个计划。
你在搜索 ChatGPT。你把它输进 Google,跟每天几亿人做的事一样。
第一条结果是一个广告。广告写着 ChatGPT,链接指向 ChatGPT,把你
带到一个地址确实以 chatgpt.com 开头的页面。到这里为止一切都没
问题。一切看上去都没问题,因为没有任何可见的东西确实有问题:
你身处 OpenAI 真正的域名上。
然后页面告诉你这个网站宕机了。「我们现在正经历高流量,」它说。 「由于用户数量庞大,我们的网站暂时无法使用。」它建议你改为下载 桌面应用。那里有一个按钮。你身在 chatgpt.com 上,服务显然正在闹 脾气,而想要一个桌面应用是一件合情合理的事。你点了下去。
这就是整套把戏,Push Security 的安全研究人员 在五月底记录下了它, 他们把这场活动称为 LLMShare。它值得仔细弄明白, 因为它是一种迟早会反复出现的攻击模式的干净范例:不是攻破 一个可信服务,而是租用它的声誉。
那个页面真的就在 chatgpt.com 上。
ChatGPT 跟大多数大型 AI 产品一样,让你分享一段对话。你点击分享,
得到一个 chatgpt.com/s/ 之下的链接,任何拿到链接的人都能看到这段
交流的一份渲染副本。有用、寻常、随处可见。
蹊跷之处在于「渲染」意味着什么。这些分享出来的页面可以包含模型的 输出,而那些输出可以包含 HTML 和 CSS——任何网页都是用同样的原料 做成的。于是攻击者分享的不是一段对话,而是一段「对话」,其内容是 一份手工打造的伪造品:一份像素级逼真的 OpenAI 故障通知,配着正确 的字体、正确的蓝色、正确的语气。根据该研究,破绽很微妙——这个分享 视图仍然带着 ChatGPT 自家的「显示代码」和「Remix」控件,泄露了这个 「故障页面」不过是某人撰写的自定义标记而已。
这样做的关键在于那条 URL。这个恶意软件诱饵并不住在
chatgpt-downloads-official.biz 上。它住在 chatgpt.com 上,一个
信誉无瑕、证书有效、并且在每一个用过这个产品的人的肌肉记忆里都占
有一席之地的域名。每一种靠问「这是我们信任的域名吗?」来工作的防御
都答了「是」,因为诚实的答案就是「是」。
下载服务器对扫描器说谎。
在那个伪造的故障页面上点击下载按钮,你就被带离 chatgpt.com,送到
openew[.]app,一个被打扮成 OpenAI 官方下载门户的网站。第二段伪装
就藏在这里。
伪装的意思是给不同的访问者看不同的内容。攻击者的服务器会看一看是谁 在请求。如果这次请求闻起来像一个自动化安全扫描器——而互联网安全的 很大一部分都依赖于像 URLScan 这样的服务去爬取 URL 并在沙箱里渲染它们——服务器就送出一些无辜的东西。在这个案例里, 根据该研究,访问该 URL 的扫描器看到的是一个无害的增强现实/虚拟现实 公司网站。干净。没什么可标记的。如果这次请求闻起来像一个跟着诱饵走 过来的真实人类,服务器就送出恶意软件。
于是对 openew[.]app 的自动判定是「良性」,而人类的判定——那个真正
重要的判定——永远得不到第二种意见。下载同时提供给 macOS 和
Windows,因为攻击者并不知道、也不在乎你用的是哪种系统;两群受众他们
都想要。(Windows 样本甚至会在继续之前检查自己是不是跑在一台虚拟机
里,这是躲避分析沙箱的常见招数——先记住这一点。)
这一切都不稀奇。它和我们以前写过的恶意广告与 SEO 投毒链属于同一族手艺。 让 LLMShare 值得写一篇的,是它借用的那份信任的质量。同一批研究人员 说这种模式并非 ChatGPT 独有:他们已经看到其他 AI 产品的分享/渲染功能—— Claude 的 Artifacts、分享出来的 Grok 对话——被驱使来干同样的活。任何让 陌生人可以在你品牌的域名下发布渲染后 HTML 的产品,都在无意之中变成了 任何想要滥用这个品牌的人的托管服务商。
为什么每一道关卡都把它放了过去。
回头走一遍这条链,注意到一个谨慎用户拥有的每一种防御直觉,都被设计 得满足了:
这是真站点吗?
是。地址栏显示 chatgpt.com,证书有效,页面由 OpenAI 提供。 「检查 URL」——我们都会给的那条建议——返回了一个干净的答案, 因为这条 URL 本来就是干净的。
扫描器标记了下载主机吗?
没有。重定向域名做了伪装:它给安全爬虫看一个良性的 AR/VR 站点, 把恶意软件留给人类受害者。信誉源和「此链接已检查」的徽章都报告 一切正常。
这个页面看起来像钓鱼吗?
不像。它是作为忠实的 HTML/CSS 撰写出来,用来模仿一份 OpenAI 故障 通知。没有笨拙的拼写错误,没有不符品牌的徽标,没有粗劣翻译的破绽。 它看上去和它假扮的东西一模一样。
下载一个桌面应用算反常吗?
不算。许多真实服务都会推着你去安装一个原生应用,而一个在负载下 挣扎的网站,是提供这种应用的一个熟悉而可信的理由。这个故事自洽。
这才是让人不舒服的部分。那些标准建议——检查 URL、信任被扫描过的 链接、留意粗糙的钓鱼、警惕奇怪的域名——都是好建议,而这场活动 笔直地穿过了所有这些。当可信域名这个信号本身就是攻击时,这个信号 就不再帮得上忙了。你没法叫一个谨慎的人去对一个通过了他所知一切检查 的页面更加谨慎。
所以有意思的问题不是「用户本来怎么才能识破它」。对大多数用户、在 大多数日子里,他们识破不了。有意思的问题是:在那个二进制文件真正 运行的那一刻,会发生什么?
整件事都发生在一个标签页里。
再看一遍这条链,注意它都活在哪里。广告在浏览器里打开。chatgpt.com 页面在浏览器里渲染。伪造的故障通知是浏览器里的一个网页。重定向发生 在浏览器里。下载由浏览器发起。唯一离开浏览器的那一步是最后一步——当 下载下来的安装程序被运行、开始干它被造出来要干的任何事时,在电脑上, 带着用户的文件和权限。
那最后一跳就是全部的赌注。在它之前的一切都是布景。攻击者在广告预算、 那个令人信服的页面、那套伪装基础设施上花了真功夫——这一切都是为了 让一个二进制文件在一台机器上执行。如果这个二进制文件在一个不含你任何 东西的地方执行,那么攻击者花的所有这些,攻陷的是一间空房间。
这就是 Bromure 改变的几何结构。在 Bromure 里,浏览器并不在通常意义上 跑在你的电脑上。每个标签页都跑在一台用完即弃的 Linux 虚拟机里——一个 封闭的访客系统,有它自己的文件系统,从一个干净的镜像启动,它看不到 你的文件、你的钥匙串、你的其他标签页或者你的本地网络。网页、渲染器、 JavaScript、下载,以及下载下来的程序的首次运行,全都发生在那个访客 系统里。当你关闭窗口时,这个访客系统和里面的一切都被销毁。
注意可信域名这个信号在这里给攻击者买来了什么:什么也没有。整场活动
都是为了击败「我信不信任这个页面」这个问题而设计的。Bromure 不问这个
问题。它不需要知道 chatgpt.com 是否值得信任,因为它根本就不让任何
页面的内容——无论可信与否——越过访客虚拟机。这个页面可以是互联网上
最合法的页面,而遏制效果会完全一样。信任根本就不是这个架构所承担的
载荷。
扫描器伪装那一招也是同理。攻击者费尽心力让 openew[.]app 在自动分析
眼里看起来良性。Bromure 不依赖那个分析是正确的。即便那个下载主机被评
为完全干净、文件被放行,文件也是落进一台用完即弃的访客系统。再回想
那个会在拆包前检查自己是不是跑在虚拟机里的 Windows 样本:那个反分析
的条件反射现在反过来对付攻击者,而不是为他效力了——那个拒绝在虚拟机
里运行的恶意软件,正好拒绝在它唯一能落脚的那个地方运行。
这解决不了什么。
隔离能遏制执行。它修改不了现实。有两个诚实的缺口值得点名。
第一,Bromure 不能阻止你被说服。如果那个页面把你哄得在一个真正的 登录表单里输入你真正的 OpenAI 密码,或者哄你把一个文件从访客系统里 带出来、搬到你的 Mac 上、然后亲手在那里运行它,那么隔离就被你自己的 双手绕了过去。它提供的保护是布景和恶意软件的首次运行被遏制——而不是 让社会工程变得不可能。一个如此擅长冒充的页面仍然是一个值得怀疑的 页面;这个架构降低了被骗的代价,它并不提高你识破骗子的几率。
第二,这本质上是一种浏览器投递的攻击,而这恰恰是遏制之所以决定性的 原因。整条链——广告、页面、重定向、下载、首次执行——都活在标签页里。 没有一个单独的原生应用要去攻陷,没有邮件客户端,没有第二个用户信任 的程序。在二进制文件运行的那个点上把这条链斩首,下游就什么都不剩了。 当一场攻击在浏览器里开始、又在浏览器里结束时,一个能吸收这一击的 浏览器,正是该站立的地方。
下一个也会在一个你同样信任的域名上。
LLMShare 其实并不是一个关于 ChatGPT 的故事。它是一个关于某种技术的 故事:拿一个人们信任的服务,找到它那个允许陌生人以它的名义发布渲染后 HTML 的角落,然后用那个角落来托管诱饵。今天是 ChatGPT;研究人员已经 看到 Claude 和 Grok 被以同样的方式利用;明天它会是任何一个既流行、又 慷慨于愿意替你渲染什么的产品。
你没法靠变得更擅长识别坏域名来赢这一仗,因为这整套手段就是去用好域名。 你赢它的办法,是让地址栏对你的安全变得无关紧要——把事情安排成:一个 页面所能做的最坏的事,无论上面印着谁的徽标,也不过是填满一间用完即弃 的房间,而你关一下窗口就把它清空了。
那就是 Bromure 的用途。装上它,把它设为默认,让那份借来的信任给攻击者 什么也买不到。