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

0819991ac82aa498423591de7e9569a9.gif 聚焦源代码安全,网罗国内外最新资讯!

6710f457a5f7a298179d3460a7a3f12c.png

专栏·供应链安全

数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。

随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。

为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。

注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。

17333a08248712f3c102eb6281020000.png

一、概述

npm仓库是最易遭受投毒攻击的开源仓库之一。奇安信开源卫士开源仓库监控平台在2月份检测出近百个恶意组件,其中大部分的恶意组件攻击方式集中在下载安装阶段。

恶意组件利用npm提供的一系列生命周期钩子执行恶意代码获取敏感信息,如用户名、密码、dns、服务器ip、github配置等,发送给攻击者,或者通过反弹shell,造成主机失陷,以此来达到攻击的目的。其中部分恶意代码会经过加密混淆等加工,使检测难度进一步加大。

本文将选取奇安信开源卫士开源仓库监控平台近一个月监测到的部分标志性恶意组件进行分析。

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

奇安信开源卫士近一个月监测到的部分标志性恶意组件如下表所示:

恶意行为

组件

版本

仿冒知名组件窃取用户、服务器信息

ember-cli-3

1.0.0

ember-cli-babel-older

1.0.0

ember-cli-typescript

21.0.0

混淆恶意代码窃取信息

build-benchmarks

15.2.4

后门攻击

is24-desktop

19.0.0、20.0.0、21.0.0

接下来对上表所列的部分组件进行分析。

01

 ember-cli-3、ember-cli-babel-older、ember-cli-typescript

ember-cli-3@1.0.0、ember-cli-babel-older@1.0.0、ember-cli-typescript@21.0.0等版本的恶意包利用包名错误拼写方式,试图仿冒知名组件ember-cli。该包会在安装时运行脚本来窃取服务器信息,其攻击过程如下:

(1)ember-cli-3在安装过程中通过package.json里定义的命令,执行预先编写好的index.js脚本。

c8945c1c2bc41bcb29853b3f120869b8.jpeg

(2)脚本会获取服用户主目录、主机名称、用户名称以及dns配置,其中dns配置用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。这些信息一旦泄漏,可能会被攻击者利用,对服务器发起攻击。

bbec8e1a4e414f8f3e0396a5c4beb1bf.jpeg

(3)最后通过http请求将收集的数据发送到zeh2fdgpp6ds57oc6z9b9fpgg7myasyh.oastify.com网址,该网址目前仍可打开。

d97d89e5c00e8c0893b5058c73cc4098.jpeg

02

build-benchmarks

(1)build-benchmarks@15.2.4版本会在安装时通过package.json里script定义的命令运行同目录下经过混淆的的脚本build-a-benchmark.js窃取服务及用户的信息。

c3e193e29a3ddbb649f7baf9e094d729.jpeg

(2)build-a-benchmark.js文件包含两部分主要代码,其一是混淆后的恶意代码,二是还原恶意代码的还原函数。其中混淆后的恶意代码如下:

1df63c2b228a1a51d7ed51e34c585ec2.png

从图中可以看出,该恶意代码通过_0x58f102函数替换了大部分变量和常量,很难直接辨认出具体的恶意行为。

_0x58f102函数,即还原恶意代码的还原函数如下:

831de95f71aeee0c219a99e338db8de5.png

通过循环将事先定义好的代码字符串放入_0x58f102函数中,其中包括获取用户信息、判断服务器系统信息、构建发送http请求部分的代码字符串,如判断攻击服务器的系统信息字符串‘win32’,窃取用户信息的字符串‘Username’、‘userInfo’、发送窃取信息的字符串‘https’、‘GET’、‘cig6l3l34eboiti6qhjgp47jjg51dznys.oast.me’等。将这些分开的代码串与已经写好的代码拼接,生成恶意代码窃取用户信息。

(3)还原后的恶意代码如下图所示,攻击者通过http请求,获取服务器用户等敏感信息。

a6a9e02ef6a6ff6fc271c0cc121980ef.png

03

is24-desktop

is24-desktop在安装过程中会运行packag.json文件中scripts:preinstall下的bash命令,利用反弹shell直接操控被攻击者服务器。其中,nc 是网络连接工具,作用是在两台电脑之间建立连接,并返回相应数据流,nc –e 、bin/bash是典型的反弹shell命令。

a0ef1882d2713e8b8a4bff4cb262d1fa.jpeg

三、总结

利用npm安装过程中执行各种命令或脚本的攻击方式越来越多,部分恶意组件仍可从官方或镜像仓库中下载安装。因此,开发者需提高安全防范意识,建议在使用第三方组件前先查看package.json文件内容,排查可能引入的安全风险。

开源卫士可以从项目中识别已使用的恶意开源组件,并在结果界面进行展示。

6a13ef24ef142ea02b32a7c86bae2c32.jpeg

点击“阅读原文”,马上试用开源卫士:https://oss.qianxin.com

c759f3e4876ddf40571858d82a0be9a8.jpeg

开源卫士试用地址:https://oss.qianxin.com

代码卫士试用地址:https://codesafe.qianxin.com


推荐阅读

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

在线阅读版:《2023中国软件供应链安全分析报告》全文

奇安信入选全球《软件成分分析全景图》代表厂商

奇安信入选全球《静态应用安全测试全景图》代表厂商

奇安信开源卫士率先通过可信开源治理工具评估

全球软件供应链安全指南和法规概览

英韩:Lazarus 黑客组织利用安全认证软件 0day 漏洞发动供应链攻击

Okta 支持系统遭攻陷,已有Cloudflare、1Password等三家客户受影响

黑客攻陷Okta发动供应链攻击,影响130多家组织机构

Okta 结束Lapsus$ 供应链事件调查,称将加强第三方管控

Okta 提醒:社工攻击正在瞄准超级管理员权限

《软件供应商手册:SBOM的生成和提供》解读

Telegram 和 AWS等电商平台用户遭供应链攻击

美国商务部发布软件物料清单 (SBOM) 的最小元素(上)

美国商务部发布软件物料清单 (SBOM) 的最小元素(中)

美国商务部发布软件物料清单 (SBOM) 的最小元素(下)

速修复MOVEit Transfer 中的这个新0day!

MOVEit 文件传输软件0day被用于窃取数据

MSI UEFI 签名密钥遭泄漏 恐引发“灾难性”供应链攻击

OilRig APT 组织或在中东地区发动更多 IT 供应链攻击

“木马源”攻击影响多数编程语言的编译器,将在软件供应链攻击中发挥巨大作用

GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞

流行的 NPM 包依赖关系中存在远程代码执行缺陷

速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年

Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件

微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析

速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年

SolarWinds 供应链事件后,美国考虑实施软件安全评级和标准机制

找到软件供应链的薄弱链条

GitHub谈软件供应链安全及其重要性

揭秘新的供应链攻击:一研究员靠它成功入侵微软、苹果等 35 家科技公司

开源软件漏洞安全风险分析

开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析

集结30+漏洞 exploit,Gitpaste-12 蠕虫影响 Linux 和开源组件等

限时赠书|《软件供应链安全—源代码缺陷实例剖析》新书上市

热门开源CI/CD解决方案 GoCD 中曝极严重漏洞,可被用于接管服务器并执行任意代码

GitKraken漏洞可用于盗取源代码,四大代码托管平台撤销SSH密钥

因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露

彪马PUMA源代码被盗,称客户数据不受影响

多租户AWS漏洞暴露账户资源

适用于Kubernetes 的AWS IAM 验证器中存在漏洞,导致提权等攻击

PyPI 仓库中的恶意Python包将被盗AWS密钥发送至不安全的站点

热门PyPI 包 “ctx” 和 PHP库 “phpass” 长时间未更新遭劫持,用于窃取AWS密钥

如何找到 AWS 环境下应用程序中易于得手的漏洞?

转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

367e39f6c66669a958f3c24f72e10202.jpeg

e8ca2ef185af7f2826f3eb8ddf89bd69.jpeg

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

   b21b9cfe5f3371a126f23aef8e4b5506.gif 觉得不错,就点个 “在看” 或 "赞” 吧~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瑞熙贝通实验室安全培训考试系统

一、系统概述 瑞熙贝通实验室安全培训考试系统是一种基于互联网和人工智能技术的在线考试平台,旨在旨在提供实验室安全教育和考核的全面解决方案。该系统可以帮助实现实验室安全培训考试的在线化、智能化和规范化,提高实验室安全意识和能力,…

IntelliJ IDEA 面试题及答案整理,最新面试题

IntelliJ IDEA中的插件系统如何工作? IntelliJ IDEA的插件系统工作原理如下: 1、插件架构: IntelliJ IDEA通过插件架构扩展其功能,插件可以添加新的功能或修改现有功能。 2、安装和管理: 通过IDEA内置的插件市场下载…

【机器学习】1 机器学习概述

1.机器学习、人工智能、深度学习的关系 机器学习是人工智能的一个实现途径深度学习是机器学习的一个方法 2.人工智能的起点 1956年,达特茅斯会议,主题是:用机器来模仿人类学习以及他方面的智能。 3.人工智能的三大流派 符号主义学派:由心…

第二门课:改善深层神经网络<超参数调试、正则化及优化>-超参数调试、Batch正则化和程序框架

文章目录 1 调试处理2 为超参数选择合适的范围3 超参数调试的实践4 归一化网络的激活函数5 将Batch Norm拟合进神经网络6 Batch Norm为什么会奏效?7 测试时的Batch Norm8 SoftMax回归9 训练一个SoftMax分类器10 深度学习框架11 TensorFlow 1 调试处理 需要调试的参…

R语言深度学习-5-深度前馈神经网络

本教程参考《RDeepLearningEssential》 本篇我们将学习如何建立并训练深度预测模型。我们将关注深度前馈神经网络 5.1 深度前馈神经网络 我们还是使用之前提到的H2O包,详细可以见之前的博客:R语言深度学习-1-深度学习入门(H2O包安装报错解决…

用 Visual Studio 调试器中查看内存中图像

返回目录:OpenCV系列文章目录(持续更新中......) 前一篇:OpenCV4.9.0在windows系统下的安装 后一篇: ​警告 本教程可以包含过时的信息。 Image Watch 是 Microsoft Visual Studio 的插件,可用于在调…

Webapi(.net6) 批量服务注册

如果不考虑第三方库,如Autofac这种进行服务注入,通过本身的.Core Weabpi实现的,总结了两种实现方法, 1.一种是参考abp框架里面的形式; 1.1 新建个生命周期的文件夹: 三个接口分别为: public interface IScopedDependency { }pu…

tomcat 实现会话绑定

Tomcat 后端服务器实现 Session ID会话保持 基础架构: 7-6 代理服务器nginx配置 7-3 tomcat 服务器 7-5 同理 测试: 此时刷新,会话ID一直在变,这样不好 如何解决呢? 不好的是确定ip之后,会一直在一台机上…

RISC-V 编译环境搭建:riscv-gnu-toolchain 和 riscv-tools

RISC-V 编译环境搭建:riscv-gnu-toolchain 和 riscv-tools 编译环境搭建以及说明 操作系统:什么系统都可以 虚拟机:VMmare Workstation Pro 17.50.x (版本不限) 编译环境:Ubuntu 18.04.5 CPU:i7-8750h(虚拟机分配4核…

JVM学习-JMM

目录 1.什么是JMM 2.JMM怎样保障数据的可见性、有序性、原子性 2.1保证原子性 2.2.保证可见性 2.3保证有序性 3.CAS 3.1乐观锁和悲观锁 3.2 CAS介绍 4.重量级锁的自旋优化 1.什么是JMM JMM即Java内存模型 ,定义了一套在多线程读写共享数据(如数组、成…

openssl3.2 - note - Writing OpenSSL Provider Skeleton

文章目录 openssl3.2 - note - Writing OpenSSL Provider Skeleton概述笔记测试工程的建立复现的provider工程总结Provider包含的头文件openssl/core.h中的数据结构实现 OSSL_provider_init()看一下openssl自带的提供者provider的openssl命令行测试provider的本质是hook了opens…

插入排序:一种简单而有效的排序算法

插入排序:一种简单而有效的排序算法 一、什么是插入排序?二、插入排序的步骤三、插入排序的C语言实现四、插入排序的性能分析五、插入排序的优化六、总结 在我们日常生活和工作中,排序是一种非常常见的操作。比如,我们可能需要对一…

【 c 语言 】指针入门

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…

ChatGPT编程—实现小工具软件(文件查找和筛选)

ChatGPT编程—实现小工具软件(文件查找和筛选) 今天借助[小蜜蜂AI][https://zglg.work]网站的ChatGPT编程实现一个功能:根据特定需求结合通配符和其他条件来进行文件查找和筛选。在这个例子中,我们将创建一个函数find_files,它接受用户输入的…

RK3568平台开发系列讲解(基础篇)内核是如何发送事件到用户空间

🚀返回专栏总目录 文章目录 一、相关接口函数二、udevadm 命令三、实验沉淀、分享、成长,让自己和他人都能有所收获!😄 一、相关接口函数 kobject_uevent 是 Linux 内核中的一个函数, 用于生成和发送 uevent 事件。 它是 udev 和其他设备管理工具与内核通信的一种方式。…

设计模式学习笔记 - 规范与重构 - 8.实践:程序出错返回啥?NULL、异常、错误吗、空对象?重构ID生成器,处理各函数的异常

概述 我们可以把函数的运行结果分为两类。一类是预期结果,也就是正常情况下输出的结果。一类是非预期的结果,也就是函数在异常(或出错)情况下输出的结果。 在正常情况下,函数返回数据的类型非常明确,但是…

【Spring Boot】创建你的第一个 Spring Boot 应用

创建你的第一个 Spring Boot 应用 1.环境配置2.步骤详解3.项目结构分析3.1 入口类 DemoApplication3.2 控制器 PathVariableController3.3 控制器 BasicController3.4 模型 User 4.运行 Spring Boot 目前已经成为了 Java 开发领域的框架范式。本篇博客,我将带领大家…

layui table列表重载后保持进度条位置不变

使用layui的table表格组件时,当我们操作了某行的修改后,刷新了页面,进度条则跳回到最上面。 除了layui高版本应该内置有方法解决了此问题,但是低版本需要另外想办法解决。 具体解决方式如下: 1.在编辑操作成功前&am…

【List、Set、数据结构、Collections】-Collections

day03 【List、Set、数据结构、Collections】 5.3 简述Comparable和Comparator两个接口的区别。 Comparable:强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。只能在类中实现compareTo…

【Linux的 yum_vim工具篇】

Linux学习笔记---004 Linux的yum_vim工具篇1、Linux软件包管理器yum1.1、yum是什么?1.2、软件包是什么?软件包是谁给提供的呢?1.3、Linux系统(其中的centos 7)生态 2、yum的相关操作2.1、yum基本指令格式2.2、软件源 3、yum的本地配置3.1、配…