昨晚亲历 qix 开发者账号泄露导致 NPM 超大规模投毒事件

1 天前
 deepbytes

NPM 仓库中多个周下载量超千万的热门组件被投毒,这些组件均为 qix 开发者发布,可能由于其凭证泄漏导致账号被窃取。

昨晚睡前就在 x 上看到各种信息了:

受影响投毒组件被植入恶意的混淆代码 index.js 文件,该恶意代码会劫持浏览器钱包(如 MetaMask )和网络请求( fetch 和 XMLHttpRequest ),拦截 ETH 、BTC 、SOL 、TRX 等加密货币交易,通过替换目标地址将资金转移至攻击者钱包(如 0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976 )

混淆后的恶意代码 index.js:

攻击非常有针对性,是针对 web3 相关用户的大规模攻击.这个 javascript payload 不复杂,使用了 obfuscator.io 或者类似的工具。

这个开发者账号泄密的原因是因为被钓鱼邮件迷惑了,点击了邮件里面的链接,但未验证链接属于正确的官方发布的地址。


目前 VirusTotal 仍无法检测异常。


自检:


brew install rg

rg -uu --max-columns=80 --glob '*.js' _0x112fa8 


参考 hacker news: https://www.aikido.dev/blog/npm-debug-and-chalk-packages-compromised


提醒,以后这种邮件里面的 login ,如果有 pasaword 管理工具,可以自动对比域名,不对的域名不会显示自动填充的下拉框的! v 友还有啥 tips ,都可以提一下,这些依赖用的人太多了!

8821 次点击
所在节点    信息安全
60 条回复
billlee
1 天前
没理解你说的硬件钱包是怎么兜底这个问题的?既然产生了肉眼几乎分辨不了的地址,那硬件钱包就算专门弄个屏幕显示出来交易信息,用户也还是会批准啊?
deepbytes
1 天前
@billlee 由于地址很长,可以重点核对地址的开头 4-6 位和结尾 4-6 位。这次攻击虽然能生成视觉上相似的地址,但在逐字符比对下,差异是绝对存在的…

硬件钱包,它在被恶意控制的电脑环境之外,提供了一个可信的“信息安全岛”。它给了用户一个机会,在资产离手前的最后一刻,看到这笔交易未经篡改的交易信息。

anyway ,信任硬件钱包,不信任浏览器网页的显示、插件的显示。最终点击前,自己在硬件钱包确认,😑,终究还得提高安全意识
wzy44944
1 天前
好奇这个开发者是如何自证清白的?毕竟这种攻击要提前做大量准备,而且攻击范围有限,只能攻击开发者,要是没有人被成功钓鱼,前期准备就都没用了,代价很大。
Ghostisbored
1 天前
我怎么觉得每年 npm 都会有投毒事件 还不能有效避免
softlight
1 天前
这种攻击时直接访问网站就会被劫持么
latifrons
1 天前
还是 Go 的包管理好,全源代码透明,没有人看不懂的东西在当中作梗。
guoooo00oohao
1 天前
赞同前面人的观点,js 真的可读性不好。包含好自己的资产,远离浏览器钱包生态。
deepbytes
1 天前
@wzy44944 可以了解下这个开发者,不过也有 XZ Utils 后门事件 (2024 年),还有经典的 event-stream 恶意代码事件 (2018 年)先例
deepbytes
1 天前
@softlight 访问用了这些依赖的网站就会被劫持,但你的资金损失是仅在你使用浏览器的插件进行交易时才发生
jiangzm
1 天前
npm 经常出这种投毒就是因为依赖关系复杂和碎片化, 要解决这个问题首先官方或者联盟提供基础库,另外给 NPM 包加信任标签,这样就能减少间接引用不信任的包。
BaiLinfeng
1 天前
啥叫浏览器钱包哦
Seck
1 天前
@jiangzm 是的,我记得好像发生好几次了,NPM 投毒,而且套路好像都一样!
aloxaf
1 天前
@billlee 硬件钱包至少还有机会,但不用硬件钱包的话,由于前端已经被劫持了,你完全没有机会发现问题。

而且我不相信真的能达到「肉眼不可分辨」的地步,顶天碰撞了前后几位。
zazzaz
1 天前
没必要神化硬件钱包,现在讨论的这个攻击场景硬件钱包哪怕是指纹识别也是防不住的。

唯一有用的方式是上链请求发出之前人工仔细检查合约地址的每一个字是不是一致,但一次两次还行,多了肯定会偷懒的
coolcoffee
1 天前
太恐怖了,现在 1password 的界面也是 electron 写的,如果哪天也被这个供应链攻击那就丸辣。
deepbytes
1 天前
@zazzaz 说的对。
人,才是最大的漏洞🤡----> 安全意识的重要性
deepbytes
1 天前
@coolcoffee 佬多虑了,这种级别的大公司,更新都是有严格控制的,electron 也有最佳安全实践,理论上的可能性不等于现实中的高概率。正是因为他们知道自己是最高价值的目标,所以他们投入了业界最高级别的资源和流程来确保这条攻击路径被层层设防、几乎无法走通。
AkinoKaedeChan
1 天前
Safepal 有个注册花 5 USDC 送硬件钱包的,属于能用级别,就是那个服务要 KYC 。
bigtear
1 天前
@stinkytofux bitwarden 浏览器插件应该是解锁插件动态解密的,没有保存明文,设置一个短一点的自动锁定时间就行了
bigtear
1 天前
@stinkytofux 至于如果是官方版本被源码级别劫持,那谁都没办法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1157924

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX