聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士
该恶意包的名称是“os-info-checker-es6”,它是一款信息工具,自月初起的下载量已超过1000次。
Veracode 公司的研究人员发现,3月19日该包的第一个版本发布在NPM指数且该版本并非恶意性质,它仅从主机收集操作系统信息。几天后,该包的作者增加了修改器以纳入针对平台的二进制并混淆了安装脚本。5月7日,作者发布了该NPM包的新版本,其中包括“适用于复杂的C2机制”的代码,用于交付最终的payload。当前该包的版本是v1.0.8,且是恶意性质。另外,该程序包是NPM其它四个包(skip-tot、vue-dev-sereverr、vue-dummyy和 vue-bit-all)的依赖,而这四个包声称是可达性和开发者平台工程工具。目前尚不清楚这些包是否以及如何被威胁人员推广。
在恶意包版本中,攻击者将数据嵌入字符串 “|”。然而,该垂直杠后面跟着一长串不可见的来自变体选择器补充范围 (U+E0100 to U+E01EF) 的 Unicode 字符。
正常情况下,这些 Unicode 字符是修改器,通常用于“在复杂脚本中提供特定的字形变化。”在本例中,它们的作用是便于通过基于文本的隐写术在其它数据中隐藏信息。
研究人员解码该字符并取消混淆,发现了复杂C2机制中的一个payload依赖于谷歌日历短链接来触及托管着最终 payload 的位置。研究人员解释称,提取谷歌日历的链接后,在收到该请求的HTTP 200 OK响应之前选择了一系列重定向。之后,它从该事件的HTML页面爬取了一个 data-base-title属性,而该页面持有指向最终payload的基于base64编码的URL。通过名为“ymmogvj”的函数,该URL被解码以获取恶意软件payload。研究人员表示该请求应该会在响应主体中收到一个base编码的第二阶段恶意软件payload,而且很可能在HTTP标头中收到一个初始化向量和一个安全密钥,这说明最终payload可能被加密。
研究人员还发现,该payload 也通过eval() 执行。该脚本在系统的临时目录中包含一个简单的持久性机制,用于阻止在同时运行多个实例。而研究人员在分析时无法检索到最终 payload,说明该攻击可能暂停或者仍然处于早期阶段。
尽管研究人员已将情况告知NPM,但这些可疑的恶意包目前仍然位于平台上。
原文始发于微信公众号(代码卫士):NPM恶意包利用Unicode 隐写术躲避检测
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论