写点什么

NPM 移除 4 个恶意软件包:泄露用户数据已有数月,4 个包分工明确

  • 2020-10-24
  • 本文字数:1362 字

    阅读完需:约 4 分钟

NPM 移除 4 个恶意软件包:泄露用户数据已有数月,4 个包分工明确

近日,NPM 移除了多个托管在其仓库中的包,原因是这些包会向远程服务器建立连接并泄露用户数据。


这 4 个包在过去几个月中累计有超过 1000 次下载,直到 10 月 15 日被 NPM 移除。


这 4 个包是:


  1. plutov-slack-client- manifest 中的信息声称是一个“Node.JS Slack 客户端”。

  2. nodetest199- 没有描述。

  3. nodetest1010- 没有描述。

  4. npmpubman- manifest 中的信息声称是“一个关于 Linux shell 登录的简单实现”。

向攻击者的服务器建立一个反向 shell

尽管恶意软件已经被 NPM 曝光和移除,但我依然从 Sonatype 的自动恶意软件检测系统档案中获得了这些包的源代码,就像它曾经在 NPM 下载时一样。


前 3 个包 plutov-slack-client、nodetest1010 和 nodetest199 共享相同的代码。


这些包中包含的非常简单的代码能够在 Windows 和基于 Unix 的系统上运行。


用户安装了这些包之后,这些包的代码会向攻击者的服务器建立一个反向 shell,允许攻击者能够远程访问受害机器。



前 3 个包 (plutov-slack-client, nodetest1010, and nodetest199) 向攻击者的服务器建立了一个反向 shell

来源:BleepingComputer



在这里我发现了一个关键的点,那就是尽管这 3 个包共享相同的代码,但这 3 个包所包含的 manifest 文件(package.json)中关于作者介绍和他们的 GitHub 简介的元数据却完全不同。


很可能,packge.json 中的数据是恶意软件的作者伪造的,或者恶意软件使用属于不同受害开发者的 GitHub 和 npm 账号发布了这些恶意软件包。

向一个远程服务器上传用户数据

列表中的最后一个包 npmpubman 的代码结构和目标完全不同。


它从环境变量收集用户数据,并将这些信息发送到一个远程主机。


由 NodeJS process.env 提供的环境信息会暴露开发者环境的敏感信息,例如 PATH 变量、数据库服务器、端口、API 密钥等等。



恶意软件 NPM 包 npmpubman 向一个远程服务器泄露环境变量

来源: BleepingComputer



尽管 package.json 文件中提供的数据冲突,但很可能这 4 个软件包都是由相同的攻击者创建的。


在实际的场景中,npmpubman 可以被攻击者当作“侦查工具”来使用,收集系统信息,而其它包则是负责在攻击者和受害者的计算机之间建立一个直接连接。


正如 BleepingComputer 观察到的,与这 4 个包有关的不同的 NPM 作者账户已经被 npm 关闭了。然而,开发人员的 GitHub 仓库并没有显示最近托管包的痕迹,尽管 package.json 文件表明了这种可能性。


渗透到开源生态系统中的恶意软件案例一直在增加。就在上个月,我在博客上写了一篇关于 npm 恶意软件 的博文,这些恶意软件没有被发现,一直在公共 GitHub 页面上实时发布用户信息。


通过利用开源社区的信任,攻击者可以将其恶意代码“下流”到任何可能错误地将这些恶意软件包作为依赖包含在他们的应用程序中的开发人员或客户。


Sonatype 在他们的十月份恶意软件包清单中对这些包进行了说明,并追踪到 sonatype-2020-1013。


作者介绍:


Ax Sharma 是一名安全研究员、工程师和技术专栏作家。他的作品和专业分析经常被头部媒体发表,例如 Fortune、The Register、TechRepublic、CIO 等等。Ax 的专长在于漏洞研究、逆向工程、软件开发和 web 应用程序安全。他是 OWASP 基金会和英国记者协会(BAJ)的一名活跃社区成员。


原文链接:


https://www.bleepingcomputer.com/news/security/npm-nukes-nodejs-malware-opening-windows-linux-reverse-shells


2020-10-24 09:002398

评论

发布
暂无评论
发现更多内容

350道Android面试真题分享,大厂直通车!

欢喜学安卓

android 程序员 面试 移动开发

520特辑丨码神VS爱神:盘点程序员的四大男友力,你偏爱哪一种?

华为云开发者联盟

程序员 代码 520 男朋友 男友力

人工智能基础2 - DAY10

Qien Z.

人工智能 基础 5月日更

数据挖掘从入门到放弃(六):K-means 聚类

数据社

机器学习 5月日更

Dubbo 并发控制

青年IT男

dubbo

华云大咖说 | 华云超融合在论文期刊行业的应用实践

华云数据

Go sync.Pool 浅析

HHFCodeRv

Go 语言

【LeetCode】前K个高频单词Java题解

Albert

算法 LeetCode 5月日更

IDEA 这么设置 Maven,再也不用担心依赖下载失败了

楼下小黑哥

Java IDEA

520单身福利|女朋友又找我要礼物

孙叫兽

程序员 520单身福利 520 单身福利

区块链与资产数字化

CECBC

网络攻防学习笔记 Day20

穿过生命散发芬芳

5月日更 网络攻防

《Spring 手撸专栏》第 2 章:小试牛刀(让新手能懂),实现一个简单的Bean容器

小傅哥

Java spring 容器 小傅哥 hashmap

Nginx高并发调优中常被忽略的参数

运维研习社

nginx 运维 并发 性能调优 5月日更

网络攻防学习笔记 Day19

穿过生命散发芬芳

5月日更 网络攻防

Flutter开发:Warning:CocoaPods minimum required version 1.6.0 or greater not installed…的解决方法

三掌柜

5月日更

Python 多线程 VS 多进程(二)

若尘

多线程 多进程 Python编程 5月日更

Node.js学习 —— 简介

空城机

JavaScript 大前端 Node 5月日更

北京市级预付费资金监管平台正式上线试运行 内嵌区块链存证技术

CECBC

TOB产品需求调研

lenka

5月日更

写给丫头

小天同学

情人节 5月日更 520单身福利 情书 告白

MemVerge认为PB级内存池将随CXL而来

Steven Xu

内存 存储 高性能服务器

初探图像二值化

CagyJ

算法 CV OpenCV 图像处理

Rust从0到1-错误处理-Result

rust Error 可恢复错误 result

CEO观点 | 核心开放:企业拥抱开源的成功之道

极狐GitLab

开源 DevOps 安全 高效 协同办公

有了这三个神器工具集,应用开发想怎么玩就怎么玩

华为云开发者联盟

开发者 华为云 应用开发 工具集 APIExplorer

211本硕如何通过字节跳动、百度、美团Android面试?复习指南

欢喜学安卓

android 程序员 面试 移动开发

学习笔记之:知识地图

Nydia

学习

一文掌握 Java8 的 Optional 的 6 种操作

看山

Java

Hibernate的get和load区别学习笔记

风翱

hibernate 5月日更

低代码“骗局”

ES_her0

5月日更

NPM 移除 4 个恶意软件包:泄露用户数据已有数月,4 个包分工明确_大前端_Ax Sharma_InfoQ精选文章