软件供应链投毒 — NPM 恶意组件分析

admin 2023年12月14日20:50:18评论17 views字数 2211阅读7分22秒阅读模式

 

软件供应链投毒 — NPM 恶意组件分析

 

专栏·供应链安全
数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。

软件供应链投毒 — NPM 恶意组件分析

 

一、概述

NPM 仓库是最易遭受投毒攻击的开源仓库之一。最近一个月,奇安信开源卫士开源仓库监控平台检测出超过300个恶意组件,其中大部分的恶意组件攻击方式集中在下载安装阶段。
恶意组件利用 NPM 提供的一系列生命周期钩子执行恶意代码获取敏感信息,如用户名、密码、DNS、服务器ip、GitHub 配置等,发送给攻击者,或者通过反弹shell,造成主机失陷,以此来达到攻击的目的。其中部分恶意代码会经过加密混淆等加工,使检测难度进一步加大。
本文将选取奇安信开源卫士开源仓库监控平台近一个月监测到的部分标志性恶意组件进行分析。

二、部分标志性恶意组件示例及分析

奇安信开源卫士近一个月监测到的部分标志性恶意组件如下表所示:
恶意行为
组件
版本
窃取用户信息
npm_package_devdependencies_sass
2.69.5
banca-movil-ionic-v4
1.1.2
update-material-outline-gap
3.7.14
窃取服务器信息
slotbooking-ui
2.18.0
lifi-contracts
1.0.0
@sber-ufs-sbert/icons
4.45.0
窃取Git账户信息
@gusmano/reext
0.0.225
后门攻击
qr-emvco
1.1.2
deuna-msa-bo-sh-request-manager
6.6.6
doneida
1.0.7
接下来对上表所列的部分组件进行分析。

1 slotbooking-ui

[email protected]版本的包会在安装时运行脚本来窃取服务器信息。
(1)slotbooking-u在安装过程中通过package.json里定义的命令,执行预先编写好的index.js脚本。
软件供应链投毒 — NPM 恶意组件分析

 

(2)脚本会获取服务器内环境变量,以及 /etc/hosts和/etc/resolv.conf 文件内容,hosts 文件是 linux 系统中负责 ip 地址与域名快速解析的文件,/etc/resolv.conf 是DNS客户机配置文件,用于设置 DNS 服务器的 IP 地址及 DNS 域名,还包含了主机的域名搜索顺序。这些信息一旦泄漏,可能会被攻击者利用,对服务器发起攻击。
软件供应链投毒 — NPM 恶意组件分析

 

(3)/etc/hosts 和 /etc/resolv.conf 的文件内容会经过 get_file() 函数进行base64 编码。经过base64编码后的字符串没有特殊字符,不会产生歧义,也没有直接暴露明文,有利于传输。
软件供应链投毒 — NPM 恶意组件分析

 

(4)最后,恶意组件将收集的信息通过 post 请求发送给攻击者。
软件供应链投毒 — NPM 恶意组件分析

2 @gusmano/reext

@gusmano/[email protected] 版本会在安装时运行脚本窃取服务器的 Git 配置信息,主要会造成用户的 Git 账号和邮箱泄露,并且该恶意包会在执行完恶意代码后自动删除恶意代码。该恶意包的周下载量为1560次。遗憾的是,目前为止该恶意包仍没有被 NPM 官方禁止。
软件供应链投毒 — NPM 恶意组件分析
(1)@gusmano/reext 在下载过程中按照顺序运行 package.json:script 中编写好的 preinstall.js 和 postinstall.js,其中 preinstall.js 收集使用者机器上的 Git 配置信息并发送给攻击者,postinstall.js 负责执行完恶意代码后删除恶意代码脚本和文件。
软件供应链投毒 — NPM 恶意组件分析

 

(2)preinstall.js 负责收集 Git 配置并发送给攻击者。首先通过服务器环境变量获取 Git 配置文件的位置,其次判断Git的配置文件是否存在,如果存在,则使用 iniparser 模块的 api 对 Git 配置文件进一步解析,获取用户的 Git 配置信息。
软件供应链投毒 — NPM 恶意组件分析

 

(3)获取解析后的 Git 的配置信息对象,将用户机器上 Git 配置中的用户名和邮箱作为 get 请求的参数发送给攻击者。
软件供应链投毒 — NPM 恶意组件分析

 

(4)postinstall.js 负责销毁攻击代码,在发送完 Git 配置信息后,会删除掉package.json 中的 script 内容,重写 package.json 文件,同时还会删除指定目录下的所有文件。
软件供应链投毒 — NPM 恶意组件分析

 

3 qr-emvco

[email protected] 版本安装包会对使用者服务器进行后门攻击
qr-emvc 在安装过程中会运行 packag.json 文件中 scripts:preinstall 下的bash 命令,利用反弹shell直接操控被攻击者服务器。
软件供应链投毒 — NPM 恶意组件分析

 

三、总结

利用 NPM 安装过程中执行各种命令或脚本的攻击方式越来越多,部分恶意组件仍可从官方或镜像仓库中下载安装。因此,开发者需提高安全防范意识,建议在使用第三方组件前先查看 package.json 文件内容,排查可能引入的安全风险。
奇安信开源卫士可以从项目中识别已使用的恶意开源组件,并在结果界面进行展示。
软件供应链投毒 — NPM 恶意组件分析

原文始发于微信公众号(奇安信集团):软件供应链投毒 — NPM 恶意组件分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月14日20:50:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   软件供应链投毒 — NPM 恶意组件分析https://cn-sec.com/archives/2300546.html

发表评论

匿名网友 填写信息