NPM软件包通过隐写二维码隐藏恶意软件
攻击者以一种新颖方式污染了npm注册表上的代码包,将凭证窃取恶意软件隐藏在声称提供JavaScript实用工具的软件包中的隐写QR码内。
根据本周发布的博客文章,Socket Threat Research的研究人员本周初在npm网站上发现了名为"fezbox"的恶意软件包,并请求将其删除以及暂停发布该包的用户。该软件包据称是"按功能模块组织的JavaScript/TypeScript常用辅助函数工具库",由使用"janedu"网络别名的中文攻击者发布。
实际上,该软件包隐藏了一个从QR码内部执行的有效载荷,可以从浏览器中的Web cookie窃取用户名和密码凭证。它还包含其他混淆层,展示了"威胁行为者如何持续改进其混淆技术"。
在Socket Threat Research文章发布时,该软件包仍处于活跃状态;现已被移除并标记为具有供应链风险的恶意软件。然而,攻击者是否仍在npm注册表上活跃尚不清楚,之前下载该软件包的用户可能仍面临风险。
受污染的NPM包:高级混淆,简单功能
受污染的npm包如今已成为攻击者通过软件供应链快速广泛传播恶意软件的常见手段。然而,作为一个恶意软件包本身,fezbox可能不会如此成功,因为"大多数应用程序不再在cookie中存储明文密码"。
但该软件包使用的高级恶意软件混淆方法使其引起安全研究人员的关注,因为这展示了攻击者如何提高在看似合法的软件包中隐藏恶意代码的能力。
QR码作为恶意软件传播选项
QR码实际上并不是隐藏恶意软件的罕见方式,因为人们期望代码内部包含有效载荷,通常会将用户带到另一个目的地(通常是网站)。
“隐写术是在显而易见的地方隐藏秘密文件的做法,QR码非常适合这种做法,“她在文章中写道。“使用QR码作为隐写混淆技术相当聪明,再次表明威胁行为者将继续使用他们掌握的任何工具。”
在解构代码时,Socket Threat Research团队发现了多层混淆——反转字符串、QR码本身和混淆的有效载荷——然后才能检查有效载荷代码本身。
“反转字符串是经典的反分析隐身技巧,“Brown指出。“在执行静态分析时,某些工具可能无法检测到反转版本的密码或反转的URL。”
分析代码后,研究人员发现有效载荷可以读取Web cookie并提取用户名和密码。“如果被盗cookie中同时存在用户名和密码,它会通过HTTPS POST请求发送信息,“Brown在文章中写道。“否则,它什么都不做就静默退出。”
供应链攻击者不断升级
如前所述,考虑到密码现在在cookie中的存储方式,受污染的软件包本身如果嵌入软件中可能不会造成严重损害。然而,使用QR码进行进一步混淆是"威胁行为者的创造性转折”,这表明网络攻击者如何在看似合法的软件包中隐藏恶意软件方面不断升级。
这就是为什么"开发人员比以往任何时候都更需要使用工具检查其软件依赖项”,以确保不存在恶意代码。
确实,尽管QR码隐写技术可能很危险,但只有当它真正进入受害者的机器时,才对供应链和最终用户构成威胁。这就是为什么开发人员和最终用户都需要在当前混淆技术不断演变和发展的情况下保持领先地位。