恶意 VS 代码扩展利用市场漏洞

Enda

网络安全研究人员发现了 Microsoft Visual Studio Code (VS Code) Marketplace 中的一个漏洞,该漏洞使攻击者能够重复使用已删除的扩展名称,从而可能允许恶意软件以可信工具的名义渗透到开发人员工作流程中。

供应链安全公司 ReversingLabs (RL) 的研究人员在 6 月份跟踪一系列名为 ahbanC.shiba 的恶意扩展后发现了这个问题。事实证明,该扩展程序与今年早些时候标记的前两个扩展程序 ahban.shiba 和 ahban.cychelloworld 具有相同的功能,这两个扩展程序均已从市场中删除。

这就提出了一个关键问题:根据 Marketplace 规则,如果 VS Code 要求所有扩展名称都是唯一的,那么“shiba”如何在不同的发布商下重新出现

攻击如何进行

与它的前身一样,ahbanC.shiba 扩展充当一个简单的下载器。该扩展仅注册了一个命令:shiba.aowoo,该命令从远程服务器 (54.85.145.93) 获取 PowerShell 脚本。

根据操作系统的不同,该脚本会加密 testShiba 文件夹中的文件,并索要一个 Shiba Inu 代币(一种基于以太坊的加密货币)作为赎金。然而,与早期版本一样,没有提供钱包地址,这表明勒索软件活动仍在开发中。

当 ahban.shiba 和 ahban.cychelloworld 扩展名被删除后,研究人员认为他们的名字将永久退役。相反,就在几周后的 3 月下旬,市场上出现了一个新的扩展程序 ahbanC.shiba,其中包含与其前身相同的恶意代码。这令人震惊地证明,VS Code Marketplace 上删除的扩展名根本没有被锁定,而是可以自由地重用。

隐藏的市场漏洞

为了理解为什么会发生这种情况,RL 深入研究了 Marketplace 的扩展管理系统。他们的调查显示,问题在于 VS Code 如何处理扩展删除。市场发布者有两个选择:取消发布或删除。

  • 未发布的扩展从市场上消失,但仍与其原始名称和统计数据相关。其他人不能重新发布它们。换句话说,没有其他人可以拥有这个名字。
  • 删除了扩展然而,它们已从市场上完全消失。这意味着他们的名字再次可用,允许任何人(包括恶意行为者)声称拥有该名字并以相同的名字发布恶意代码。

换句话说,一旦合法的扩展被删除,它的可信名称实际上就可供争夺了。强化学习通过使用与之前删除的软件包相关的名称成功发布测试扩展来证实了这一点,其中包括具有恶意软件历史的软件包,例如 Solidity-Ethereum。

开源生态系统中更广泛的问题

这并不是第一次利用名称重用。 2023 年初,RL 发现 Python 包索引 (PyPI) 还允许重复使用已删除包的名称。一个名为 termcolour 的恶意软件包在最初的合法软件包被删除数年后再次出现。

虽然 PyPI 此后实施了限制,以防止重复使用与恶意包相关的名称,但 VS Code Marketplace 没有此类保护措施。

有关的:继Android之后,iOS版Microsoft Edge获得了本机扩展功能

“这个漏洞的发现暴露了一个新的威胁:任何被删除的扩展程序的名称都可以被任何人重复使用。这意味着,如果删除了一些合法且非常流行的扩展程序,那么它的名称就可供争夺。”写道ReversingLabs 软件威胁研究员 Lucija Valenti 在博客文章中说道。

开发人员可以做什么

尽管微软尚未宣布修复 Marketplace 漏洞,但安全专家强调,开发人员必须保持警惕。他们建议在安装前仔细审查扩展,即使名称看起来很熟悉,并验证发布者帐户,而不是仅仅依赖扩展名称。

此外,还建议使用可以检测恶意软件包的安全工具持续监控依赖关系。此外,开发人员可以利用跨多个存储库(包括 VS Code Marketplace)提供免费风险评估的平台。 

“从这次活动中吸取的教训是,重要的是要记住,VS Code Marketplace 和其他开源存储库中潜伏着许多危险。这些平台的开发人员和用户必须留意并了解开发周期中包含的内容,”Valenti 总结道。