本周 Sonatype 安全研究团队通过 Sonatype 的自动恶意软件检测系统 Release Integrity 在 npm 注册表中发现了一个新的恶意组件,经过分析,研究团队确认该恶意组件的目标是使用 Linux 和 macOS 操作系统的 NodeJS 开发者。
该恶意组件名为"web-browserify",在名称上模仿了知名的 Browserify npm 组件,而 Browserify 组件每周下载量超过 130 万次,被近 36 万个 GitHub 仓库所使用,目前已被开发者下载了超过 1.6 亿次。
相比之下,恶意组件"web-browserify"的下载量只有 50 次,目前该组件已从 npm 中移除,距离其发布仅过去了两天时间。
“web-browserify” 本身是由数百个合法的开源组件组合而成,并在受感染的系统上进行广泛的侦察活动。截至目前,该组件所包含的 ELF 恶意软件在所有领先的反病毒引擎中的检测率为零。
"web-browserify" 是由一个自称是 Steve Jobs (史蒂夫乔布斯)的作者所创建的。
该包由一个 manifest 文件、package.json、postinstall.js 脚本和一个名为"run" 的 ELF 可执行文件组成,并归档在 npm 组件的 run.tar.xz 中。
一旦开发者不小心安装了"web-browserify",脚本就会从归档文件中提取并启动 "run" Linux 二进制文件,该文件会向用户请求提权或 root 权限。
提取出来的 "run" 二进制文件大约有 120MB 大小,虽然其中捆绑了数百个合法的开源 npm 组件,但这些组件会被用于进行恶意活动。
例如,其中一个组件是跨平台的 "sudo-prompt"模块,该模块会被用来向用户发出提示,寻求用户在 macOS 和 Linux 上授予 root 权限。
因为在安装 "web-browserify" 的同时就会要求提升权限,在此过程中开发者可能会被误导,认为是合法的安装程序活动需要提升权限。一旦 ELF 获得了权限,它就会在系统中获得持久性,并将自己复制到 /etc/rot1目录中,随后在每次启动时从自动运行。
“web-browserify” 会从被感染的系统中收集以下信息:
系统用户名;
操作系统信息,如制造商/品牌;
关于 Docker 镜像的信息;
蓝牙连接的设备信息;
系统上存在的虚拟机,或是否启用了虚拟化;
CPU速度、型号和核心数;
内存大小、硬盘容量、磁盘布局、系统架构;
关于网卡/接口、电池、WiFi、USB 设备等硬件信息。
这些信息中至少有一部分是作为 GET 参数,通过明文(HTTP)连接传送至攻击者的服务器中。
病毒总检测率为零
该恶意软件在 VirusTotal 上的评分为零,这可能是由于该恶意软件所有活动都是通过使用合法的开源组件进行所导致的,因此目前还没有杀毒引擎能够标记该样本。