WAVE SUMMIT 2021深度学习开发者峰会 点击报名 了解详情
写点什么

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

2020 年 10 月 24 日

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:001681

评论

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

Golang领域模型-开篇

奔奔奔跑

golang 微服务 领域驱动设计 架构设计 后端开发

JVM-技术专题-管程技术分析

李浩宇/Alex

JVM 管程

[租房]刚步入社会的小萌新,休想坑小妹妹,安排!

我是程序员小贱

Docker Web管理工具

雪雷

Docker shipyard dockerui

Linux系统检查脚本

雪雷

Shell 系统检测

同态加密

soolaugust

学习 加密 同态加密

性能优化-技术专题-并发编程

李浩宇/Alex

Java 多线程

在java中使用SPI创建可扩展的应用程序

程序那些事

Java spi 可扩展程序 可扩展应用

Serverless初探

雪雷

Serverless Lambda 无服务器云函数

Apache常用配置指北

亻尔可真木奉

Apache 代理 跨域

Flink高可用性设置-4

小知识点

scala 大数据 flink 流计算

lower_case_table_names参数详解

Simon

MySQL

实战 | Vue + Element UI 页面创建

简爱W

Java 架构师

LeetCode题解:11. 盛最多水的容器,for循环双指针,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

记一次混合云API发布的反思

雪雷

iptables API api发布

MySQL线程状态详解

Simon

MySQL 线程状态

记一次混合监控的反思

雪雷

监控 zabbix redis监控 监控宝

一把年龄,技术一般,怎么去面试

escray

学习 面试 面试现场

Python利用sphinx构建个人博客

雪雷

sphinx Blog

Linux自定义快捷工具

雪雷

Linux Shell tools scripts

Jenkins 详解

雪雷

jenkins

Docker+Jenkins+Gitlab+Django应用部署实践

雪雷

DevOps jenkins CI/CD

API 中签名的使用

架构精进之路

接口安全

理论 | 三天两夜,万字长文,吃透TCP/IP

简爱W

Java TCP

Gitlab Pipeline+Supervisor 实战Python项目CI/CD

雪雷

gitlab jenkins CI/CD Supervisor

Jenkins部署Python项目实战

雪雷

Python jenkins CI/CD

Elasticsearch安装

北漂码农有话说

JVM-技术专题-GCViewer调优GC

李浩宇/Alex

JVM

探测mysqldump详细过程

Simon

MySQL

PHP浮点数精度损失问题

架构精进之路

php 弱类型语言

没有亮点的简历,要用详历来弥补

escray

学习 面试 简历 面试现场

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