3/6 致微软的一封信:揭露 VSCode 扩展的设计缺陷

3/6 致微软的一封信:揭露 VSCode 扩展的设计缺陷

在上一篇博文“ 2/6 | 揭露恶意扩展:来自 VS Code 市场的令人震惊的统计数据中,我们分享了有关 Visual Studio Code 市场的令人震惊的统计数据,同时揭露了恶意和危险的 VSCode 扩展的世界。

在我们对市场进行研究的过程中,我们发现微软实施了数量惊人的安全设计缺陷,这些缺陷为威胁者提供了获得信誉和访问权限的绝妙方式。让我们来谈谈这些设计缺陷是什么,微软,如果你正在阅读这篇文章,请将这封信视为给你的一封信,为了所有上市公司的首席信息安全官,请尽快解决本文中概述的这些问题。

所以,微软,让我们聊聊吧。

3/6 致微软的一封信:揭露 VSCode 扩展的设计缺陷

VSCode 扩展

让我们首先探索扩展程序的底层工作原理。到目前为止,VSCode 扩展程序最初最大的安全设计缺陷是缺乏任何权限模型。

微软尚未为已安装的扩展实现任何类型的权限管理或可见性,这意味着任何扩展都可以执行任何 API 操作。例如,一个主题扩展应该只更改我的 IDE 的颜色,但它可能会执行代码并读取或写入文件,而无需任何可见性或用户的明确授权。令人惊讶的是,早在2018 年,就有一项开放的 Github 功能请求,要求提供权限模型,但微软尚未解决

另一个令人担忧的问题是,默认情况下,扩展程序会在后台悄悄自动更新到最新版本,这意味着任何人都可以最初发布合法的扩展程序,获得关注,然后引入恶意代码,甚至暂时针对特定版本,以获得初始访问权限。这种情况在 Chrome 网上应用店中发生过很多次,威胁行为者从个别发布者那里购买合法的 Chrome 扩展程序,然后引入恶意威胁。实际上,我们在研究期间利用这种方法改进了数据收集,当时我们开发了一个扩展程序来了解 VSCode 扩展程序的内部情况,请阅读我们最初的博客文章中的故事 — “我们如何使用假的 VSCode 扩展程序在 30 分钟内入侵价值数十亿美元的公司

3/6 致微软的一封信:揭露 VSCode 扩展的设计缺陷

另一个设计缺陷是 VSCode 扩展缺乏限制,VSCode 扩展实际上是在主机上运行的另一个应用程序或可执行文件。与 Chrome 扩展程序或 Gmail 插件等类似情况不同,VSCode 扩展程序对它们在主机上可以执行的操作没有任何限制。它们可以生成子进程,可以执行系统调用,可以导入任何它们想要的NodeJS 包,这使它们具有很高的风险。作为扩展开发人员,您不必以特定方式与操作系统级 API 通信,您可以以各种不同的方式执行命令或生成进程,这使得 VSCode 无法规范这种行为。不幸的是,传统的端点安全工具 (EDR) 无法检测到此活动(正如我们在负责任的披露过程中为选定组织展示的 RCE 示例),VSCode 旨在读取大量文件并执行许多命令并创建子进程,因此 EDR 无法了解来自 VSCode 的活动是合法的开发人员活动还是恶意扩展。VSCode 扩展没有限制或有限的范围,它们可以在它们喜欢的时候做它们喜欢的事情。

可怕的东西。

VSCode 市场控制,或者更准确地说,缺乏控制

好的,扩展可以在主机上执行任何操作,但也许Visual Studio Code Marketplace 已经设置了控制措施,以防止首先安装恶意扩展。TLDR;他们没有这样做,而且情况比你想象的还要糟糕。

让我们从创建发布者帐户开始,在我们的研究中,我们发现在市场上注册的约 45,000 名发布者中,只有 1,800 名是经过验证的发布者。成为经过验证的发布者意味着您的扩展程序名称旁边会有一个闪亮的蓝色徽章。但是,这是一个很大的但是,要成为经过验证的发布者(跻身前 4% 的发布者之列),您需要做的就是将 DNS 验证域添加到您的发布者帐户,这意味着任何购买 5 美元域名的人都可以成为经过验证的发布者并立即获得信誉点数。只需查看我们的实验扩展 –

只需购买域名即可获得如此高的信誉:

3/6 致微软的一封信:揭露 VSCode 扩展的设计缺陷

接下来,让我们讨论一下列表页面。VSCode 从与扩展代码一起打包的package.json文件中获取市场列表页面上显示的所有信息。最值得注意的是,它从中获取列表页面上显示的 Github 存储库。是的,正如你所猜测的,没有验证机制来证明你确实拥有 Github 存储库,也没有任何验证来证明上传的代码实际上就是 Github 存储库上的代码。这意味着你的扩展看起来像是开源的,但实际打包的代码可能 100% 不同。如果这还不够的话,没有重复检查,这意味着你实际上可以复制一个开源扩展并将其 Github 列为你的官方 Github 存储库(!)。

你不必是微软就可以在你的列表页面上显示这一点:

3/6 致微软的一封信:揭露 VSCode 扩展的设计缺陷

我们设法吸引人们对我们的研究扩展的关注的方法之一是,在发布扩展的一天内,我们就登上了 Visual Studio Code Marketplace 首页。我们不确定微软是如何选择热门扩展的,但微软发布的大多数扩展下载量都很少,通常不到 1,000 次。我们还验证了,创建一个安装扩展的 Docker 文件,然后循环运行它,可以增加扩展的安装次数,这意味着你可以很容易地通过安装轰炸的方式登上首页(这个首页每月的点击量达到 450 万次)。

发布扩展后的第二天:

3/6 致微软的一封信:揭露 VSCode 扩展的设计缺陷

微软,请修复这些问题。它为威胁行为者提供了极其简单的途径来获得信誉并让开发人员看到。

致微软

您创建了一款出色的产品,数百万开发人员使用并喜爱它,但这些开发人员信任您能设计出安全的产品。我只能希望这篇博文中提到的安全设计缺陷将在未来几个月内得到修复,如果您能联系到微软任何一位从事 Visual Studio Code 工作的人,请与他们分享这一点。

我只是谈到了我们在研究中发现的主要设计问题,还有许多较小的问题,也许还有一个大问题。VSCode 不受管理。现在,大多数 IDE 都是不受管理的,所以这并不是针对微软的,但它突出了一个简单的解决方案。如果组织能够获得可见性、评估和管理他们的 IDE,那么这种垂直攻击的风险和影响就可以最小化。

但是,在这种情况发生之前,我们决定自己采取行动通过创建一个免费的社区工具来分析可疑的 Visual Studio Code 扩展,在扩展丛林中导航以检测有害代码、有风险的访问和/或其他安全漏洞,从而帮助组织减轻这种威胁。

在下一篇博客文章“4/6 | ExtensionTotal 介绍:如何评估 VS Code 扩展中的风险”(即将发布)中,我们将介绍针对这个小众但有风险的问题的解决方案。一如既往,敬请关注。

3/6 致微软的一封信:揭露 VSCode 扩展的设计缺陷

请务必关注我们——

阿米特·阿萨拉夫(Amit Assaraf )——https : //x.com/amitassaraf

Itay Kruk — https://x.com/ity_krk

Idan Dardikman — https://x.com/IDardikman

有趣的安全设计缺陷被排除在主帖之外

微软开发了一个名为vsce的实用程序包,用于在开发完成后打包扩展代码。微软没有提到的一个有趣事实是,当您使用该实用程序时,它不仅会打包“build”“dist”文件夹,还会打包您当前所在的整个文件夹。在我们的研究中,我们发现数千个扩展意外地打包了它们的源代码和机密,其中一些包括 AWS 密钥、Github 机密凭据、Google 凭据、个人访问令牌、SMTP、OpenAI 密钥。

from

转载请注明出处及链接

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注