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

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

专栏·供应链安全

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

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

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

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

一、概述

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 |

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

0 1

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脚本。

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

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

0 2

build-benchmarks

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

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

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

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

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

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

0 3

is24-desktop

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

三、总结

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

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

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

开源卫士试用地址: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"。

奇安信代码卫士 (codesafe)

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

觉得不错,就点个 "在看" 或 "赞" 吧~

相关推荐
拼图20926 分钟前
Vue.js开发基础——数据绑定/响应式数据绑定
前端·javascript·vue.js
刘志辉31 分钟前
vue反向代理配置及宝塔配置
前端·javascript·vue.js
星叔1 小时前
ARXML汽车可扩展标记性语言规范讲解
java·前端·汽车
编程老船长1 小时前
第18章 从零开始:春节门联网页设计,用DIV+CSS打造传统与现代的完美融合
前端·css·html
sky.fly1 小时前
HTML5+css3(浮动,浮动的相关属性,float,解决浮动的塌陷问题,clear,overflow,给父亲盒子加高度,伪元素)
前端·css·html
Coisini_甜柚か1 小时前
打字机效果显示
前端·vue3·antv
郑小憨2 小时前
Node.js NPM以及REPL(交互式解释器) 使用介绍(基础介绍 二)
开发语言·前端·javascript·npm·node.js
嚣张农民2 小时前
在 WebSocket 连接中出现错误时,如何处理和捕获错误?
前端·javascript·面试
代码搬运媛2 小时前
前端开发利器:npm 软链接
前端·npm·node.js
周三有雨2 小时前
vue3 + vite 实现版本更新检查(检测到版本更新时提醒用户刷新页面)
前端·vue.js·typescript