研究人员发现VS Code漏洞:攻击者可重新发布同名已删除扩展
网络安全研究人员发现Visual Studio Code Marketplace存在一个漏洞,允许威胁行为者重新使用先前被删除扩展的名称。
恶意扩展重现事件
软件供应链安全公司ReversingLabs表示,他们在识别出一个名为"ahbanC.shiba"的恶意扩展后发现了这一漏洞。该扩展与今年3月被标记的两个扩展(ahban.shiba和ahban.cychelloworld)功能相似。
这三个库都被设计为下载器,用于从外部服务器检索PowerShell有效载荷。该载荷会加密受害者Windows桌面上名为"testShiba"文件夹中的文件,并要求受害者将Shiba Inu代币存入一个未指定的钱包。这些行为表明威胁行为者正在进行持续的开发尝试。
命名机制漏洞分析
该公司表示决定深入调查,因为新扩展名("ahbanC.shiba")与之前发现的两个扩展之一("ahban.shiba")几乎相同。
值得注意的是,每个扩展必须具有唯一的ID,由发布者名称和扩展名称组合而成(即<发布者>.<名称>)。在ReversingLabs调查的案例中,两个扩展仅通过发布者名称区分,而扩展的实际名称保持不变。
然而,根据Visual Studio Code文档,扩展清单中指定的<名称>字段"应为全小写且无空格",并且"必须在Marketplace中唯一"。
安全研究员Lucija Valentić提出疑问:"那么为什么ahban.shiba和ahbanC.shiba扩展最终会有相同的名称,尽管官方文档有发布规则?"最终发现,一旦扩展从存储库中删除,就可能出现这种情况。但此行为不适用于作者取消发布扩展的情况。
跨平台漏洞影响
值得注意的是,删除库后重新使用名称的能力也适用于Python Package Index(PyPI)存储库,ReversingLabs在2023年初就证明了这一点。
当时发现,删除软件包会使其项目名称"可供任何其他PyPI用户使用",只要分发文件名(项目名称、版本号和分发类型的组合)与已删除的分发文件不同。
然而,PyPI有一个例外:如果软件包名称首先被恶意软件包使用,则可以使其不可用。而Visual Studio Code似乎没有类似的限制来防止恶意扩展名称的重复使用。
供应链安全威胁加剧
从泄露的Black Basta聊天记录可以看出,威胁行为者正试图通过勒索软件库污染开源注册表,向可能安装这些库的毫无戒心的受害者索要赎金。这使得组织和开发人员采用安全开发实践并主动监控这些生态系统中的软件供应链威胁变得尤为重要。
Valentić表示:"这个漏洞的发现暴露了一个新的威胁:任何被删除的扩展名称都可以被任何人重新使用。这意味着如果某个合法且非常受欢迎的扩展被删除,它的名称就可以被占用。"
相关恶意npm包事件
这些发现还伴随着八个恶意npm包的识别,这些包被发现会传递一个针对Windows系统的Google Chrome浏览器信息窃取程序,能够将密码、信用卡、加密货币钱包数据和用户cookie传输到railway[.]app URL或作为备用机制的Discord webhook。
由用户ruer和npjun发布的软件包如下:
- toolkdvv(版本1.1.0、1.0.0)
- react-sxt(版本2.4.1)
- react-typex(版本0.1.0)
- react-typexs(版本0.1.0)
- react-sdk-solana(版本2.4.1)
- react-native-control(版本2.4.1)
- revshare-sdk-api(版本2.4.1)
- revshare-sdk-apii(版本2.4.1)
这些软件包的显著特点是使用了70层混淆代码来解包一个Python有效载荷,该载荷旨在促进数据窃取和外泄。
JFrog安全研究员Guy Korolevski表示:"开源软件存储库已成为攻击者在供应链攻击中的主要入口点之一,越来越多的攻击使用拼写错误和伪装,假装是合法的。旨在规避传统安全措施并窃取敏感数据的复杂多层活动的影响,凸显了通过严格的自动扫描和所有软件组件的单一真实来源,在整个软件供应链中保持可见性的重要性。"