找回密码
 立即注册
搜索
查看: 3001|回复: 7

[新闻] NPM开发者遭钓鱼攻击,大量热门NPM包被投毒

[复制链接]
     
发表于 2025-9-9 09:26 | 显示全部楼层 |阅读模式
NPM 开发者"qix"遭遇双因素认证主题钓鱼攻击,导致大规模供应链攻击,感染了周下载量超 10 亿次的核心库。植入的恶意软件旨在窃取加密密钥、替换钱包地址并劫持交易。

钓鱼域名:npmjs[.]help
被动 DNS:185.7.81[.]108



在开发者 qix 的 NPM 账户遭入侵后,JavaScript 生态系统遭受重大供应链攻击,导致 chalk、strip-ansi 和 color-convert 等热门软件包被植入恶意更新。该恶意软件是精密设计的加密货币劫持程序,通过替换钱包地址和劫持交易来窃取加密货币。强烈建议立即进行项目审计并锁定依赖项版本。被投毒的包括以下热门核心npm包:

chalk: 每周约 3 亿次下载

strip-ansi: 每周约 2.61 亿次下载

color-convert: 每周约 1.93 亿次下载

color-name: 每周约 1.91 亿次下载

is-core-module:每周约 6900 万次下载

error-ex:每周约 4700 万次下载

simple-swizzle:每周约 2600 万次下载

has-ansi:每周约 1200 万次下载

攻击运作原理:
▸注入这些软件包的恶意程序属于"加密货币劫持器"。其通过两种方式运作:被动模式下使用莱文斯坦距离算法替换钱包地址(使替换行为几乎无法察觉),若检测到浏览器存在加密钱包则会主动劫持交易。
▸被动模式下,恶意程序会拦截网络请求,将合法的加密货币钱包地址(包括 BTC、ETH、SOL、TRX、LTC、BCH 等)替换为视觉相似的黑客控制地址。
▸ 在活动模式下,若检测到 MetaMask 等钱包存在,该恶意软件会篡改钱包的交易方法,在用户签署交易前替换目标地址。

https://jdstaerk.substack.com/p/ ... licious-code-in-the

影响范围:
▸ 此次攻击针对 JavaScript 项目的基础依赖层,意味着任何依赖这些库的项目(包括间接依赖)都可能受到影响。
▸ 攻击者使用的以太坊地址及其他涉案地址已在区块浏览器上公开可见,可供追踪

https://bleepingcomputer.com/new ... upply-chain-attack/


据称投毒一小内,NPM社区便已发现问题并进行处理,仅有满足以下条件时会被投毒:

- 在东部时间上午9点至11点30分之间进行全新安装
- 或者在此期间创建了 Package-lock.json 文件
- 直接或传递依赖中的漏洞软件包

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

     
发表于 2025-9-9 11:19 | 显示全部楼层
NPM这种放个屁都要做成依赖包发布的习惯太难管理了,而且尤其容易受这类供应链攻击。而且这种大量的碎片文件在硬盘里处理起来效率也低。这样搞起来的依赖树盘根错节,时间久了就如同一团乱麻难以理清。
回复

使用道具 举报

     
发表于 2025-9-9 12:01 来自手机 | 显示全部楼层
这种大包发布没有审核的吗?
回复

使用道具 举报

     
发表于 2025-9-9 12:16 来自手机 | 显示全部楼层
我也收到过这种邮件,无视了

—— 来自 Xiaomi 22041211AC, Android 13, 鹅球 v3.5.99
回复

使用道具 举报

     
发表于 2025-9-9 15:04 | 显示全部楼层
js的包管理实在是烂得不行
回复

使用道具 举报

     
发表于 2025-9-10 01:35 | 显示全部楼层
蒜灵 发表于 2025-9-9 12:01
这种大包发布没有审核的吗?

是说让 npm 这边出人审核,先审后发么?不太现实
一来这种大包只会越来越多,大包还要依赖无数的小包
找熟悉 JS + 网络安全的专人来审核,成本巨高
即使是重视安全 / 用户隐私的软件服务,也就只能每年审计 2 ~ 3 个组件而已:https://mullvad.net/en/blog/tag/audits

而且如果公开声明“过审了”就多少得对结果负责,而安全漏洞这个事水太深(指未经公开的,仅黑客才知道的已知漏洞会存在)
赶上有人要发重大 hotfix 还得加急
一个免费服务可能负不起 / 不愿意负这么大的责任
回复

使用道具 举报

     
发表于 2025-9-10 02:19 | 显示全部楼层
这次攻击假如硬要分锅,个人感觉还是开发者个人的锅更多一些
看截图里的 Email 的用词,要每年一次“update 2FA credentials”,非常含混
再者,网站要用户主动改认证方式的情况,目前只听说过已知有数据泄漏(https://haveibeenpwned.com/),或者网站知道自己被攻击了,才会主动发邮件催用户改密码。平时不太可能发这种邮件
再就是如果用了密码管理器,那么在网页上填密码的时候也会因为域名不对而不会立即成功,这也是个会引发警觉的地方
当然如果说受害者本人实在是过劳了,没心情注意这些细节,那也没办法
回复

使用道具 举报

发表于 2025-9-10 04:17 | 显示全部楼层
这件事其实挺值得复盘的。

Josh(Qix-)本人描述被攻击时他碰巧不在状态,那一周很累、早上醒来时脑子还不太清楚,只想赶紧把一些事情从待办清单上划掉。

然后他看到了这样一封邮件:

- 发件人域名和 npm 官方域名相似,如果不经额外查证很难判断它是否来自官方
- 邮件内容形式包括点击邮件内链接跳转的网站都和官方别无二致
- 收件人使用了 Josh 专用于 npm 账号的邮箱,这个邮箱一般不会收到垃圾邮件
- 邮件内容要求 Josh 尽快更新 TFA,否则他的账号将在 48 小时后被临时锁定
- npm 官方一直在联系 Josh 启用新的安全增强措施,所以又一个安全邮件看上去很合理

如果把这封邮件当真,一个不赶快处理会锁定账号的 TFA 更新请求,对于他这个体量的开发者来说毫无疑问在重要且紧急的范围内。
又因为他当时正在用手机又很赶时间,于是直接在手机上点击了邮件中的链接,又碰巧他没有在手机上使用密码管理器的自动填充功能,所以对于网站域名没有触发自动填充这件事并没有产生怀疑,并且还因此暴露了一个 TOTP 码。

这可能是这次钓鱼邮件攻击最致命的地方,你有多注重账号安全,就越有可能在几乎所有信息都看上去真实的情况下因为一点着急和疏忽大意被攻破。

(顺便一件无关的小事,Josh 碰巧还是我最近正参与贡献的某个开源项目的早期核心贡献者,我初看新闻时也着实没想到这件事会这样和我产生联系……)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-9-19 12:41 , Processed in 0.024891 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表