NPM供应链攻击——隐藏在QR码中的恶意软件
2025年9月29日 11:44 | 安全动态 | 0条评论
标签:恶意软件, npm, 代码混淆, QR码, 供应链攻击
NPM生态系统再次成为恶意软件传播的温床。就在上次大规模攻击活动余波未平之际,新的威胁已经出现——隐藏在QR码中的恶意软件被植入fezbox软件包。
关键要点
- 安全研究人员报告了新一轮针对NPM供应链的攻击
- 恶意软件被植入fezbox包,该包声称提供支持开发者的JavaScript/TypeScript工具集
- 攻击主要目的是窃取用户存储在Cookie中的登录凭证
- 为规避检测,恶意软件采用了多种隐藏技术:代码混淆、字符串反转、QR码隐写术
- 软件包下载量较小且现代Web应用Cookie构造显著降低了攻击效果
攻击详情
可疑库被Socket Threat Research团队在NPM门户上检测到。名为fezbox的软件包据称应包含帮助开发者工作的JavaScript/TypeScript工具集,具有多种辅助功能,专门用于处理不同模块,允许仅导入项目当前需要的元素,此外还提供处理QR码的模块(生成、解析、读取)。
实际上,该软件包内部隐藏了额外功能——从浏览器Cookie中窃取用户密码和登录信息。
fezbox包分析
fezbox库发布在socket.dev门户上,源代码未公开提供。该包仅包含编译版本——fezbox.cjs,这增加了分析和检测恶意软件的难度。此外,它还包含一系列混淆技术,如:字符串反转、在QR码中隐藏有效载荷、使用隐写术保护有效载荷、从外部服务动态下载代码。所有这些机制都有效阻碍了自动扫描器的检测。
图1显示了fezbox.cjs文件的内容。
特别值得关注的是以下代码片段:
根据图2所示的代码清单,在第一阶段会检查代码是否在开发环境中运行,并随机(三分之二的情况下)不执行任何操作。然后,在执行主要功能前实现了120秒的超时。通过这种方式,攻击者试图躲避自动扫描器。
在反转字符串并转到获得的网页地址后,会显示恶意QR码。分析期间QR码仍然活跃且可读。有趣的是,QR码扫描器无法识别它,主要因为使用了混淆机制。该代码只能通过fezbox包读取。
需要强调的是,QR码对用户不可见,仅被恶意软件使用。指向代码的链接被永久硬编码在软件包中,其应用目的是阻碍自动安全扫描器检测恶意代码。
如图5所示,恶意软件读取浏览器Cookie,尝试获取用户名和密码,然后将读取的数据发送到地址 https://my-nest-app-production[.]up[.]railway[.]app/users。如果未找到这些数据,则终止操作。
恶意软件检测与影响
Socket Threat Research的研究人员和自动恶意软件扫描器——Socket AI Scanner都检测到了该恶意代码。因此,该软件包被阻止并从服务中删除。
软件包下载量(少于100次)表明它在开发者中不太受欢迎。考虑到现代应用不以明文形式在Cookie中存储用户凭证(登录名和密码),可以评估其有效性有限。
然而,攻击的执行方式,特别是应用的混淆机制(字符串反转、在QR码中隐藏有效载荷、代码混淆、从外部服务动态下载恶意软件)值得关注,显示了攻击者的创造力。
展示的攻击向量和用于隐藏恶意活动的技术清楚地表明,网络犯罪分子正在提高他们的编程技能,在不久的将来可能会出现更复杂的攻击方式。