仅用 30 分钟!开发者做“山寨版” VSCode 扩展,攻破 4830 亿美元巨头,甚至登上了官方热趋榜?...
06-15 09:12 来源:csdn 阅读(330)

Visual Studio Code(VSCode),一款由微软发布的源代码编辑器,受到了全球许多专业软件开发者的喜爱——然而近日,一组国外研究团队宣称:他们仅在 30 分钟内,开发了一个“山寨” VSCode 扩展程序,并成功黑进了多家市值数十亿美元的公司。


“明明我们正处于安全应用和环境的顶峰,但 30 分钟就能绕过最复杂的安全环境。”


该研究团队不公开“受害者”的具体名称,但透露其中包括一家市值 4830 亿美元的上市公司、多家大型安全公司和某个国家司法法院。


在进入正题前,有一点需要明确:该研究团队做这个实验,是为了发现并解决问题,并不是真正的黑客,也没有造成实质性伤害。


该研究团队由三个人组成,即 Amit Assaraf、Itay Kruk 和 Idan Dardikman,他们自诩是“三个热爱安全和产品开发的人”。在探索网络安全领域时,他们偶然发现了一篇在 VSCode 扩展中发现漏洞的媒体文章。据悉,这个恶意扩展伪装成了另一个被广泛使用、较为知名的扩展,即通过容易混淆的名字欺骗用户安装,以窃取开发者设备上的信息。


对此事进行研究后,该研究团队发现有许多文章都提到了在 VSCode 扩展和其他集成开发环境中均存在类似漏洞,但他们却找不到解决这个问题的相关方法。其背后理由也很好理解:


(1)对于大型安全公司来说,这个问题太小不值得关注;


(2)对于初创安全公司来说,这个市场太小,无法建立自己的业务;


(3)对于微软本身来说,这也不是一个高度优先的问题,甚至还可能有悖于其利益:他们肯定希望市场上能有尽可能多的扩展,若上传过程中与开发者摩擦太多,不利于市场的快速扩大。


“那么,谁来为这个问题提供解决方案呢?三个热爱安全和产品开发的人。”


在这样的背景下, Amit Assaraf、Itay Kruk 和 Idan Dardikman 三人决定进行一个实验:创建一个恶意 VSCode 扩展,看看用它来窃取源代码并将其发送到远程服务器有多难。



开始构建前,这三人想到了之前看过的一篇文章,其中提到在一个山寨扩展中发现了恶意代码,而该扩展盗用了一个名为“Prettier - Code formatter”的主流 VSCode 扩展的名字。


受此启发,他们决定做一个“Dracula Official”的山寨版——“Darcula Officia”(字母 r 和 a 颠倒了位置)。


据了解,正版 Dracula 是一个广受欢迎的开源主题,专为喜欢暗色界面的开发者设计。其暗色模式具有高对比度的色调,视觉上非常吸引人,还有助于减少长时间编码过程中的眼睛疲劳,因此被大量开发人员使用,在 VSCode Marketplace(微软为 VSCode 运营的一个扩展市场)上的安装量甚至已超过 700 万。

瞄准好“山寨”目标后,该研究团队就在 30 分钟内下载了正版 Dracula 源代码、额外添加了部分代码并复制了所有资源后,得到了下面这个山寨版“Darcula Officia”——乍一看,与正版毫无区别。

887b5fa20c813af3fa7d02f6bfa287a4.png

除了下载页面高度相似,该研究团队还特别注册了一个与官方 draculatheme.com 类似的域名:darculatheme.com。令他们感到意外的是,想要成为 VSCode Marketplace 上的验证发布者,也只需验证域名。


于是不过几分钟后,这个山寨版 Darcula 就通过了 VSCode Marketplace 的验证,可信度瞬间提高。

不仅如此,他们发现在 package.json 中添加任何 Github repo 都能让微软将其列为扩展页面上的官方 repo,即使不是该 repo 作者也行。因此,该团队进一步在山寨版 Darcula 上添加了正版 Dracula 的官方 repo,使其可信度再度提升。


既然山寨版 Darcula 的可信度已经有了,接下来就是添加恶意代码了。


上文提到,该研究团队向这个扩展中“额外添加了部分代码”,这实际上是一个附加脚本,用于收集系统信息,还会通过 HTTPS POST 请求将其发送到远程服务器:“简而言之,每次受害者在编辑器上打开文档时,我们都能读取代码并将其发送到我们的 Retool 服务器,此外还会向我们的服务器发送一个信标,其中包含主机信息,如主机名、域名、平台、扩展数量等。”


下面是他们添加到该扩展中的部分具体代码:

b1cb306d61164b431a64925f19170344.png

可能会有人质疑,这样的恶意代码不会被端点检测和响应(EDR)工具标记吗?研究人员表示:不会的,因为 VSCode 作为开发和测试系统,因此在这方面受到了宽大处理。


“不幸的是,传统的端点安全工具(EDR)无法检测到这种恶意活动。VSCode 的构建是为了读取大量文件、执行许多命令并创建子进程,因此 EDR 无法了解 VSCode 的活动是合法的开发者活动还是恶意扩展。”


一切准备就绪,他们便把这个山寨版 Darcula 进行了发布。它在 VSCode Marketplace 刚上线不过几分钟,就迎来了第一位“受害者”:

一天之后,该研究团队并没有特别为此进行推广,但还是又多了 100 多名不同的“受害者”。另外,或许是由于发布者经过验证,在 VSCode Marketplace 搜索“Darcula”时,该扩展显示在第一页。


没想到,几天后这个“受害者”规模愈发庞大。该研究团队确认,有一家市值 4830 亿美元的上市公司落入陷阱,还有数十家市值数十亿美元的公司、全球最大的安全公司之一以及某个国家的司法法院都出现在了“受害者”名单中——为了保护各方利益,研究团队选择不透露公司名称。


更离谱的是,他们最后发现,这个山寨版 Darcula 竟还一度登上了 VSCode Marketplace 的热门趋势!

77e54844db824d4be1173d8868320ea0.png

在亲身经历了创建和发布恶意扩展有多么容易之后,该研究团队自己都感到意外:“当开始这个实验时,我们从未想象过它最终会发展成这样。事后看来,这种攻击载体的风险和高影响潜力显而易见,也凸显了它对攻击者的巨大价值。”


这样的结果,让他们意识到了这个实验的意义重大,由此深入研究了一番 VSCode Marketplace 中恶意扩展的现状,并发现了以下情况:


● 1283 个带有已知恶意代码(共计 2.29 亿次安装)。


● 8161 个与硬编码 IP 地址通信。


● 1452 个运行未知可执行文件。


● 2304 个使用另一个发布者的 Github repo,说明它们是山寨版。


究其原因,是因为微软在 VSCode 市场上缺乏严格的控制和代码审查机制,使得攻击者可以肆无忌惮地滥用平台规则。可以预见的是,随着该平台的使用越来越多,未来情况将愈发糟糕。


研究人员警告称,从数字上可以看出,VSCode Marketplace 中存在大量会给企业带来风险的扩展程序:“VSCode 扩展是一种被滥用和暴露的垂直攻击,具有零可见性、高影响和高风险。这个问题对企业构成了直接威胁,值得安全界关注。”


目前,该研究团队已把检测到的所有恶意扩展都报告给微软,并详述了当前 VSCode Marketplace 存在的巨大安全设计缺陷。不过截至发稿,绝大多数扩展仍可通过 VSCode Marketplace 下载,微软方面也尚未对加强安全审查的要求作出回应。


参考链接:


https://medium.com/@amitassaraf/the-story-of-extensiontotal-how-we-hacked-the-vscode-marketplace-5c6e66a0e9d7


https://www.bleepingcomputer.com/news/security/malicious-vscode-extensions-with-millions-of-installs-discovered/amp/