VS Code 扩展 Ethcode 遭到恶意拉取请求攻击,目标是加密货币开发人员

2025 年 6 月 17 日,一位名为 Airez299 的用户在 GitHub 上提出了 Ethcode VS Code 扩展的拉取请求。

Ethcode 是 7finney 于 2022 年发布的 VS Code 扩展,用于在基于以太坊虚拟机 (EVM) 的区块链上部署和运行 Solidity 智能合约。该扩展已安装超过 6,000 次。

据 ReversingLabs 称,Airez299 提交了一个拉取请求,其中包含 43 项提交和大约 4,000 行更改,并带有消息“使用 viem 集成和测试框架实现代码库现代化”。它包含两行恶意代码,将名为“keythereum-utils”的 npm 依赖项添加到 package.json 文件中,并将其导入到 src/extension.ts 文件中。

keythereum-utils 由 0xlab(版本 1.2.1)、0xlabss(版本 1.2.2 至 1.2.6)和 1xlab(版本 1.2.7)上传到 npm,并已被下载 495 次。据安全研究员 Petar Kirhmajer 称,该库启动了一个隐藏的 PowerShell,可以从公共文件托管服务下载并执行批处理脚本。

在向 Microsoft 负责任地披露后,该扩展已从 VS Code 扩展市场中删除,并在删除恶意依赖项后恢复。项目维护者 0mkara 于 6 月 28 日提交了删除恶意存储库的拉取请求。

从: 恶意 Pull 请求通过易受攻击的 Ethcode VS Code 扩展攻击 6,000 多名开发人员

【编辑部评论】

这次针对 Ethcode VS Code 扩展的攻击凸显了现代软件开发生态系统的结构性漏洞。这种攻击方法被称为“供应链攻击”,是一种复杂的技术,它利用开发人员日常依赖的工具和依赖项。

让我们解释一下攻击者使用的一种称为“拉请求”的技术。 GitHub 上的拉取请求是建议对开源项目做出贡献的标准机制。通常由善意的开发人员用来建议改进或错误修复,这种信任被恶意行为者利用。

最值得注意的是,攻击者巧妙地在 43 次提交和大约 4,000 行更改的大规模更新中隐藏了两行恶意代码。这被称为“隐藏在噪音中的针”策略,使得审查者很难在大量的变化中发现恶意代码。

这次攻击说明的一个更深层次的问题是对开源生态系统的过度依赖。开发人员如此关注效率,以至于他们倾向于在没有充分验证其安全性的情况下引入依赖关系。根据 Sonatype 的研究,仅 2025 年第二季度就发现了 16,279 个恶意开源包,比去年同期增长了 188%。

另一个重要的一点是为什么加密货币/区块链开发人员特别成为目标。这是因为这些开发人员可能可以获得高价值的加密资产,并且能够损害他们正在开发的智能合约以获取未来的经济利益。

此事件中使用的“keythereum-utils”软件包是一种巧妙的命名方案,它将后缀“-utils”添加到现有的合法软件包“keythereum”中。这是一种称为“误植”技术的变体,旨在分散开发人员的注意力并误导他们认为恶意软件包是合法的。

考虑到这次攻击的技术范围,受感染的系统启动了一个隐藏的 PowerShell,旨在从外部服务器下载其他恶意软件。这使得攻击者能够持续访问受害者的系统并分阶段扩大攻击规模。

监管影响也不容忽视。由于此类攻击的增加,世界各国政府正在考虑加强有关软件供应链安全的法规。特别是涉及关键基础设施和金融服务的公司将需要更严格地管理第三方依赖性。

从长远来看,这一事件为开发者社区提供了重要的教训。需要加强依赖性验证流程,同时平衡效率和安全性。还迫切需要引入自动化安全扫描工具并提高代码审查的质量。

朝鲜的 Lazarus 集团和中国的 Yeshen-Asia 集群等民族国家威胁行为体正在积极利用 npm 生态系统。这些协同攻击使从个人开发人员到大型企业的广泛目标面临风险。

这一事件清楚地表明了现代软件开发中“信任链”的脆弱性。需要提醒开发者的是,在换取便利的同时,可能会在不知不觉中为攻击者打开方便之门。

【术语解释】

供应链攻击
一种在软件开发和分发过程中利用受信任的第三方组件和工具来分发恶意软件的攻击方法。针对开发人员日常使用的库和扩展。

拉取请求
一种使用版本控制系统(例如 GitHub)提出和审查代码更改的机制。开发人员使用它来建议对现有项目添加功能或修复错误。

npm(节点包管理器)
JavaScript 的包管理系统。一个用于发布和共享开发人员创建的库和工具的平台。它被广泛用作 Node.js 的标准包管理器。

EVM(以太坊虚拟机)
用于在以太坊网络上运行智能合约的去中心化虚拟机。为区块链上安全运行程序提供计算环境。

坚固性
用于在以太坊上开发智能合约的编程语言。一种面向对象的语言,用于开发在区块链上运行的分布式应用程序。

难読化(Obfuscation)
一种故意降低代码可读性并使其难以分析的技术。恶意软件作者经常使用它来逃避检测。

错字抢注
一种攻击技术,使用与合法包名称相似的名称发布恶意包,并利用开发人员的拼写错误。

[参考链接]

ETHcode – Visual Studio 市场(外部)
VS Code 扩展,用于在基于 EVM 的区块链上部署和运行 Solidity 智能合约

逆向实验室(外部)
文件和软件安全领域值得信赖的公司。提供现代网络安全平台

索纳型(外部)
提供 Nexus 存储库,作为内部和第三方二进制文件、组件和包的单一信息源

插座(外部)
一个安全平台,可为 JavaScript、Python 和 Go 依赖项提供漏洞预防、可见性和深度防御。

[参考文章]

恶意拉取请求感染 VS Code 扩展 – Reversing Labs(外部)
ReversingLabs 对此次攻击的详细技术分析。解释keythereum-utils包混淆代码的分析结果

[编者后记]

看完这起Ethcode事件,你会如何重新评估自己的开发环境?我们在日常工作中依赖有用的工具和扩展,但它们中的每一个都可能存在潜在的风险。

我特别关心的是开源的“信任”和“验证”之间的平衡。在追求效率的过程中,您是否曾经忘记检查依赖项的安全性?推出新套餐时您使用什么标准?

此外,通过了解像这样的复杂攻击方法,我认为我们可以提高整个开发者社区的安全意识。我们很想听听您的经历和想法。

在 innovaTopia 上阅读更多网络安全新闻