首页
社区
课程
招聘
[翻译]你能信任你的VSCode扩展吗?
发表于: 2023-1-10 10:24 7339

[翻译]你能信任你的VSCode扩展吗?

2023-1-10 10:24
7339

原文地址:https://blog.aquasec.com/can-you-trust-your-vscode-extensions

原文标题:Can You Trust Your VSCode Extensions?

翻译:梦幻的彼岸

Aqua Nautilus的研究人员最近发现,攻击者可以轻易地冒充流行的Visual Studio Code扩展,并欺骗不知情的开发人员下载这些扩展。在最初的漏洞研究中,我们发现了一种新的攻击方法,它可以作为攻击许多组织的一个入口。我们还发现,一些扩展程序可能已经在利用这个攻击载体。在本博客中,我们将进一步探讨我们的发现,包括我们上传到Marketplace的POC,并详细介绍我们如何进行这项研究。

Visual Studio Code是一个非常流行的集成开发环境(IDE)。

有多受欢迎?根据StackOverflow,的调查,VSCode是迄今为止需求量最大的IDE,有74.48%的开发者使用它。

VSCode的强大来自于它巨大的各种扩展。在VSCode Marketplace 上有超过4万个扩展,它们可以帮助你更有效地开发你的代码,集成特定语言的调试器,甚至可以将构件(artifact)部署到生产中。

备注:构件是软件开发的一个副产品。它是为了开发一个软件而创建的任何东西。这可能包括像数据模型、图表、设置脚本这样的东西--不胜枚举。

你可以通过安装的数量来了解VSCode扩展的受欢迎程度。例如,Jupyter扩展有5200万的安装量,Prettier扩展有2700万的安装量,还有很多扩展的安装量已经超过了1000万的门槛。



这不可避免地引出了另一个问题。作为一个VSCode用户,您是否曾问过自己VSCode扩展是否值得信赖?可能不会。但即使您有,您如何检查扩展是否合法?

答案是,即使是有安全意识的开发人员,区分恶意扩展和良性扩展也是一个挑战。当你考虑到任何人都可以创建一个用户,即使是使用临时电子邮件,事实是任何人都能发布一个可以在Marketplace中列出的扩展。

你可能已经问过自己,VSCode扩展能做什么。有些只是改变IDE的主题颜色。然而,所有的扩展都以打开VSCode的用户的权限运行,没有任何沙盒。这意味着,该扩展可以在你的电脑上安装任何程序,包括勒索软件、恶意软件清除程序等等。事实上,它可以访问甚至改变你在本地的所有代码,甚至使用你的SSH密钥来改变你的组织在GitHub的所有存储库中的代码!这可能会产生影响。这可能产生的影响可能是巨大的。

虽然媒体上有很多关于恶意软件包被上传到流行的软件包管理器(如NPM和PyPI)的故事,但关于恶意的VSCode扩展的信息却非常少。我们问自己,这是因为这种攻击媒介不太流行,还是安全社区完全忽略了它?

当在网上搜索恶意的VSCode扩展时,结果很少,而那些返回的查询是关于VSCode或其扩展的漏洞。在这一点上,我们应该强调,一个有漏洞的扩展不一定是一个恶意的。

我们在这里的目标是阐明攻击者可以通过VSCode Marketplace使用的安全威胁。这种威胁之一是伪装(MITRE)。当有人创建了一个类似于另一个流行的扩展,唯一的目的是引诱毫无戒心的开发者下载一个伪装成其他东西的扩。例如,我们选择了流行的VSCode扩展Prettier,并着手创建一个新的扩展,伪装成它。现在,让我们比较一下这些扩展之间的异同:

 

你能发现其中的差别吗?让我们仔细看一下页面的顶部。

正常:


伪装:



如果我们仔细看看指向URL的#1,我们可以看到在发布者的名字(esbenp vs espenp)以及扩展的名字(prettier-vscode vs pretier-vscode)都有恰好两个不同之处。当你搜索Prettier扩展时,我们的冒充扩展出现在第26位,这构成了低风险。我们可能会通过提高下载率和星级来影响排名,但这仍有待商榷。尽管如此,当输入 "pretier "时(开发者很可能在无意中输入),我们的伪装扩展是唯一的结果。我们可以假设,这将给犯了这个错误的人带来很大的风险。

URL中的一个小变化,如省略一个字母 "t "或将 "b "转化为 "p",被称为 "错别字的引用"(MITRE)。这是攻击者用来欺骗开发者的一种流行技术。其他注册机构已经与这种技术进行了斗争,通常不允许用户创建具有这种相似性的新包。根据微软的指导方针网站,微软和红帽公司的官方扩展受到保护,不会出现错别字。然而,在这种情况下,VSCode Marketplace允许我们为一个高度流行的软件包创建一个冒充的软件包。这让我们怀疑VSCode Marketplace是否部署了类似的保护措施,如果没有,是否有空间部署这种保护措施,至少为了阻止攻击者伪装成流行的扩展。

在这一点上,我们希望把重点放在上述截图中的黄色背景的项目上。我们发现这些项目更有影响力。

在上面的截图中,2号标识了扩展的发布者的名字,而3号则标识了扩展的名称。令人惊讶的是,我们能够创建一个与一个高度流行的扩展完全相同的名称。这是被允许的,因为当创建一个新的扩展时,你在一个叫做'displayName'的属性下创建它,这是扩展的名字和发布者的名字,被显示在扩展的页面上。这些名称不需要是唯一的,因此,任何人都可以在这些名称下输入几乎任何想要的值。由于这一点,任何人都可以伪装成几乎任何扩展名!
此外,#4和#5分别确定了安装的数量和星级的数量。目前,这些数字是相当低的。然而,随着时间的推移,越来越多的不知情的用户将下载我们的假扩展。随着这些数字的增长,该扩展将获得可信度。此外,由于在暗网中可以购买各种服务,一个极其坚定的攻击者有可能通过购买服务来操纵这些数字,从而夸大下载量和星星的数量。


接下来,让我们放大到扩展的右下侧,再做一次比较:




6号标识了GitHub存储库中的扩展信息。令人惊讶的是,任何人都可以输入他想要的任何值,而不需要验证或确认这个扩展是否真的与注册表有联系。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 4
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//