HackerNews 编译,转载请注明出处:
网络安全研究人员发现一起新型供应链攻击事件:npm 和 Python 包索引(PyPI)仓库中的合法包遭攻陷,攻击者推送恶意版本以窃取钱包凭证并实现远程代码执行。
两款遭攻陷的包及其受影响版本如下:
· @dydxprotocol/v4-client-js (npm) – 3.4.1, 1.22.1, 1.15.2, 1.0.31
· dydx-v4-client(PyPI)——1.1.5post1 版本
“@dydxprotocol/v4-client-js(npm)和 dydx-v4-client(PyPI)包为开发者提供与 dYdX v4 协议交互的工具,包括交易签名、下单及钱包管理功能。” Socket 安全研究员 Kush Pandya 指出。“使用这些包的应用会处理高敏感的加密货币相关操作。”
dYdX 是一个非托管、去中心化的加密货币交易所,用于交易保证金和永续掉期,同时允许用户完全控制其资产。该 DeFi 交易所在其网站上称,其累计交易量已超过 1.5 万亿美元。
虽然目前尚不清楚这些被下毒的更新是如何被推送的,但怀疑是开发者账户被盗用所致,因为这些恶意版本是使用合法的发布凭证发布的。
研究发现,威胁攻击者针对 JavaScript 和 Python 生态系统植入了不同的恶意载荷。其中 npm 包中的恶意代码为加密货币钱包窃取器,会窃取助记词和设备信息。而 Python 包除钱包窃取功能外,还植入了远程访问木马(RAT)。
该 RAT 组件在包被导入时立即运行,会连接外部服务器(dydx.priceoracle [.] site/py)获取指令,随后在主机上执行。在 Windows 系统中,其利用 “CREATE_NO_WINDOW” 标记确保执行过程中不弹出控制台窗口。
Pandya 说。“攻击者对包的内部结构了如指掌,将恶意代码植入核心注册表文件(registry.ts、registry.js、account.py),这些代码会在包正常使用过程中执行。”
“PyPI 版本中采用了 100 轮混淆处理,且跨生态系统的攻击部署高度协同,这表明攻击者直接获取了发布基础设施的访问权限,而非利用仓库自身的技术漏洞。”
2026 年 1 月 28 日研究人员依规披露该事件后,dYdX 在 X 平台发布多篇帖子确认此事,并敦促下载过遭攻陷版本的用户隔离受影响设备、在安全系统中将资产转移至新钱包,同时更换所有 API 密钥和凭证。
“托管在 dydxprotocol Github 中的 dydx-v4-clients 版本不包含恶意软件,” 他补充道。
这并非 dYdX 生态系统首次成为供应链攻击的目标。2022年9月,Mend 和 Bleeping Computer 曾报道过一个类似案例,dYdX 一名员工的 npm 账户被劫持,用于发布多个 npm 软件包的新版本,其中包含窃取凭证和其他敏感数据的代码。
两年后,该交易所还披露,与其现已停止的 dYdX v3 平台相关的网站遭到入侵,将用户重定向到一个旨在清空其钱包的钓鱼网站。
“结合 2022 年的 npm 供应链入侵事件和 2024 年的 DNS 劫持事件来看,这次攻击突显了对手通过受信任的分发渠道瞄准 dYdX 相关资产的持久模式,” Socket 表示。
“跨语言近乎相同的凭证窃取实现表明攻击者进行了周密的计划。威胁行为者保持了一致的数据外传端点、API 密钥和设备指纹逻辑,同时部署了针对特定生态系统的攻击向量。npm 版本专注于凭证窃取,而 PyPI 版本则增加了对系统的持久访问权限。”
不存在的软件包带来的供应链风险
此次披露之际,Aikido 详细说明了 README 文件和脚本中引用但从未实际发布的 npm 软件包如何构成了一个有吸引力的供应链攻击载体,允许威胁行为者以这些名称发布软件包来分发恶意软件。
这一发现是软件供应链威胁日益复杂化的最新体现,攻击者利用与开源仓库相关的信任,可以一次性危害大量用户。
“复杂的攻击者正在向软件供应链的上游移动,因为它为进入下游环境提供了一条深入、低噪声的初始访问路径,” Sygnia 的 Omer Kidron 说。
“同样的方法既支持精准入侵(特定的供应商、维护者或构建身份),也支持通过广受信任的生态系统进行大规模的机会主义攻击——这使得它与所有组织都相关,无论它们是否认为自己是主要目标。”
Aikido 的分析发现,在 2025 年 7 月至 2026 年 1 月期间,这 128 个幽灵软件包总共获得了 121,539 次下载,平均每周 3,903 次下载,上个月达到了 4,236 次下载的峰值。下载量最大的软件包列表如下 –
· openapi-generator-cli (48,356 次下载),模仿 @openapitools/openapi-generator-cli
· cucumber-js (32,110 次下载),模仿 @cucumber/cucumber
· depcruise (15,637 次下载),模仿 dependency-cruiser
· jsdoc2md (4,641 次下载)
· grpc_tools_node_protoc (4,518 次下载)
· vue-demi-switch (1,166 次下载)
“仅在过去七天,openapi-generator-cli 就获得了 3,994 次下载,” 安全研究员 Charlie Eriksen 说。“这相当于在一周内,有近 4,000 次有人试图运行一个不存在的命令。”
这些发现凸显了 npm 在仿冒域名保护方面的一个盲点。npm 虽然会主动阻止注册与现有软件包名称拼写相似的企图,但不会阻止用户创建那些原本就未曾注册过的名称的软件包,因为根本没有任何东西可以比对。
为了降低由 npx 混淆带来的这种风险,Aikido 建议采取以下步骤:
· 使用 “npx –no-install” 来阻止回退到仓库下载,如果本地找不到软件包,则安装失败
· 明确安装 CLI 工具
· 如果文档要求用户运行某个软件包,请验证该软件包是否存在
· 注册明显的别名和拼写错误的名称,以防止攻击者抢占
“npm 生态系统有数百万个软件包,” Eriksen 说。“开发者每天运行数千次 npx 命令。‘便捷的默认设置’与‘任意代码执行’之间,只差一个未被认领的软件包名称。”
消息来源:thehackernews.com:
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文