HackerNews

HackerNews
恶意 npm 包在运行时绕过安装脚本防护

恶意 npm 包在运行时绕过安装脚本防护

给文章评分:

一场涉及 'indexed-btree' 包的持续 npm 恶意软件攻击行动表明,威胁行为者如何通过将恶意代码隐藏在包正常的运行时行为中,而非安装脚本中,来绕过供应链防护。

该包由 Checkmarx 研究人员发现,试图冒充合法的 'sorted-btree' 库,且已积累了 200 万次周下载量。

该行动可能还为攻击者带来了可观收益,据 Checkmarx 称,攻击者使用了一个持有 109 ETH 的钱包。不过,报告并未说明这些资金来自加密货币盗窃。

绕过最新安全措施

2026 年 6 月,GitHub 宣布了一系列 npm 安全措施,旨在帮助防范自 2025 年末以来反复冲击开源生态系统的供应链攻击。

一项关键安全措施是阻止依赖生命周期脚本,如 'preinstall'、'install' 和 'postinstall',除非获得明确批准。

其他措施则阻止 npm 在未经许可的情况下自动从 Git 仓库或远程 URL 获取依赖。

恶意的 indexed-btree 包绕过了这些防护,它避开安装脚本,转而将加载器隐藏在包的 BTree.prototype.set() 方法中,当应用程序以特定键值调用该方法时会在运行时执行。

因此,安装过程看起来干净,不会触发 npm v12 的任何审批机制。

"恶意软件加载器隐藏在库自身的 BTree.prototype.set 方法中,这是每个用户都会频繁调用的主要函数,"Checkmarx 解释道。

"这会触发 sharedLoad.min.js,其中包含经过混淆的恶意软件第一阶段。这是一种精心构建的方式,可悄悄绕过标准的污点分析工具和大多数静态扫描器。"

恶意的运行时触发器

一旦恶意软件被执行,它可以收集系统详情,包括架构、主机名、CPU、内存和运行时间,并通过硬编码的 Slack 和 Telegram 渠道外泄这些信息。

该恶意软件还会轮询 Sepolia 测试网络上的一个以太坊智能合约,以获取命令与控制 (C2) 信息。它使用 X25519 密钥交换来派生 AES 密钥,并解密存储在合约中的第二阶段载荷。

当运营者选择结束攻击时,该恶意软件可以删除其文件并从包代码中移除恶意触发器,以抹去痕迹。

研究人员指出,威胁行为者竭尽全力使该项目看起来合法,包括构建一个看似合法的 GitHub 仓库、填充其提交历史,并精心打理开发者账户。

Checkmarx 还发现了与同一行动相关的另外九个 npm 包,现已将其从 npm 移除。这些包也获得了可观的下载量,如下所示:

  • ordered-kv-index(448,184 次下载)
  • btree-leaderboard(493,685 次下载)
  • priority-slot-queue(402,860 次下载)
  • btree-range-store(468,092 次下载)
  • btree-core(1,951,274 次下载)
  • btree-time-index(425,312 次下载)
  • btree-lru-cache(372,185 次下载)
  • neighbor-key-map(366,019 次下载)
  • sliding-score-window(448,024 次下载)

建议开发者不要仅依赖安装时扫描,还应采用运行时行为分析。


已安装 indexed-btree 或上述任何包的用户,应轮换所有密钥,并从安全备份中恢复其开发环境。




消息来源:bleepingcomputer.com;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文
分享到:
hackernews

hackernews

该作者暂无简介