当前位置: 首页 > news >正文

研究人员发现VS Code漏洞:攻击者可重新发布同名已删除扩展

image

网络安全研究人员发现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似乎没有类似的限制来防止恶意扩展名称的重复使用。

image

供应链安全威胁加剧

从泄露的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表示:"开源软件存储库已成为攻击者在供应链攻击中的主要入口点之一,越来越多的攻击使用拼写错误和伪装,假装是合法的。旨在规避传统安全措施并窃取敏感数据的复杂多层活动的影响,凸显了通过严格的自动扫描和所有软件组件的单一真实来源,在整个软件供应链中保持可见性的重要性。"

http://www.xdnf.cn/news/1384885.html

相关文章:

  • 深入理解会话状态管理:多轮对话与API最佳实践
  • STM32的RTC模块及其应用场景
  • 【项目思维】编程思维学习路线(推荐)
  • Golang 面试题「中级」
  • GPT-5 模型 API 中转对接技术精讲:高性价比集成方案与深度性能优化实践
  • 交互设计 | 无人机控制系统的 UI 设计:从人机交互到任务管理
  • 电平移位器的原理
  • 179-183动画
  • Martin Fowler分享了他对大语言模型(LLM)与软件开发现状的一些思考
  • 基于互补素数与最小素因子性质的哥德巴赫猜想证明-陈墨仙
  • VSCODE vue 快速构建模板
  • 如何从 iCloud 存储中删除消息的 4 种方法
  • 【打包压缩】tar包和命令格式简介
  • leetcode算法刷题的第二十一天
  • C# 一个投资跟踪程序的设计与实现:面向对象与设计模式的深度解析
  • Ansys 19 Mechanical 流体密封分析
  • Claude Code 完整手册:从入门、配置到高级自动化
  • 上海市赛/磐石行动2025决赛awd web2-python 4个漏洞详解
  • Java 将HTML文件、HTML字符串转换为图片
  • 抖音基于Flink的DataOps能力实践
  • 洞悉核心,驭数而行:深入理解 Oracle SQL 优化器(RBO 与 CBO)的性能调优哲学
  • SQL优化--OR
  • 医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(四)
  • iOS混淆工具实战 电商类 App 的数据与交易安全防护
  • [awesome-nlp] docs | 精选NLP资源 | 分类
  • 三遥馈线终端:全球配电智能化浪潮下的核心设备与市场格局
  • 技术演进中的开发沉思-83 Linux系列: 信号
  • 把 AI 塞进「智能门锁」——基于指纹和语音双模态的零样本离线门禁系统
  • Spring Boot中MyBatis Provider注解实现动态SQL
  • 云手机中的多开功能具体是指什么?