写点什么

NPM 中混入了包含恶意后门的包

  • 2018-05-09
  • 本文字数:1008 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

NPM 团队移除了一个伪装成Cookie 解析器的包。这个包里包含一个恶意后门。还有三个依赖它的包也同时被移除了。这个后门让攻击者可以向运行中的服务器注入任意代码并执行。

NPM 报告确认,getcookies包中包含恶意代码,它会分析 HTTP 头,查找类似gCOMMANDhDATAi这样的数据格式。恶意代码里有三个不同的命令:

  • 0xfffe重置代码缓冲区
  • 0xfffa执行缓冲区中的代码,这是通过执行[vm.runInThisContext][2]实现的
  • default把远程代码加载到内存并执行

除了getcookies之外,还有三个包也被从注册中心里移除了:express-cookieshttp-fetch-cookies以及虽然不建议使用但仍然非常流行的mailparser

据 NPM 员工介绍:

发布到 npm 注册中心并且使用恶意模块的包,它们的使用方式都不会触发后门。

不过,这仍然保留了这种可能性,使用恶意包的外部应用程序面临着被利用的风险,或者已经被利用了。

颇让人不解的是,每周仍然有大约 64000 下载量的mailparser包并没有以任何方式使用恶意模块。据 NPM 安全团队介绍,这可以解释成为将来能够完成攻击所做的准备,或者说是为了提高get-cookieshttp-fetch-cookies的知名度,诱导开发人员使用它们。

这份声明在 Node 开发人员中引发了强烈的反响。虽然人们普遍认为,这类问题不是NPM 特有的,但是,有若干评论者指出,NPM 的一些特性让这样的问题更可能发生。尤其是,NPM 包往往较小,而且聚焦于一组缩减的特性,导致一个应用程序要依赖大量的外部模块,经常是成百上千。要审计所有的依赖项,确保它们都合法,这变得异常困难。此外,NPM 允许开发人员通过最小版本表示依赖,如 mailparser@^2.2.0,这意味着,任何更高的版本,只要没有改变主版本号,就被视为可以兼容,就可以运行 npm install进行安装。这进一步增加了依赖审计的难度。

mailparser已经不再维护了,它已经几个月没有更新了。现在还不清楚,像mailparser这样成功的包为什么会有三个新版本包含一个不使用的依赖。事实上,对于发布在 NPM 上包含恶意代码的版本 2.2.1、2.2.2 和 2.2.3, mailparserGitHub 库中没有任何说明这一变化的信息。因此,不知道是mailparser的作者被诱导添加了恶意依赖,还是某个未知的 NPM 漏洞被利用,可以在他不知情的情况下发布新版本。InfoQ 将继续追踪报道,及时披露最新细节。

查看英文原文 Package Containing Malicious Backdoor Makes its Way Into NPM

2018-05-09 19:002818
用户头像

发布了 1008 篇内容, 共 443.2 次阅读, 收获喜欢 346 次。

关注

评论

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

新闻速递 | KaiwuDB 亮相世界互联网大会

KaiwuDB

数据库 大数据 互联网

Jenkins 安全tips

SEAL安全

安全 jenkins

计算机网络:随机访问介质访问控制之CSMA/CD协议

timerring

计算机网络 11月月更

你要的react+ts最佳实践指南

xiaofeng

React

ModStartBlog v6.1.0 界面显示优化,富文本升级

ModStart

云栖大会“云计算加速开源创新论坛” 揭晓 2022 年度开源人物

云布道师

开源 云栖大会

阿里云丁宇:交付管理一体化的云原生应用平台 KubeVela 再升级

云布道师

云原生 2022云栖大会

从react源码看hooks的原理

flyzz177

React

怎样徒手写一个React

helloworld1024fd

JavaScript

CSS学习笔记(四)

lxmoe

CSS 前端 学习笔记 11月月更

一文读透react精髓

xiaofeng

React

redux原理是什么

xiaofeng

React

react的useState源码分析

flyzz177

React

人人能读懂redux原理剖析

夏天的味道123

React

HTML知识框架 一

默默的成长

oracle 前端 11月月更

Vue组件是怎样挂载的

yyds2026

Vue

react的jsx语法是怎样解析的

夏天的味道123

React

oracle数据库开发优化建议

默默的成长

oracle 前端 11月月更

列存数据仓库怎样更高效

王磊

阿里巴巴云生态 9 大开源项目重磅发布

云布道师

云计算 开源 2022云栖大会

阿里和蚂蚁集团共建并开源的国内第一款IDE框架——OpenSumi新版本发布

云布道师

#开源项目 2022云栖大会

数据预处理和特征工程-数据预处理-数据无量纲化 & 缺失值

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

手写JS函数的call、apply、bind

helloworld1024fd

JavaScript

2022前端常考手写面试题总结

helloworld1024fd

JavaScript

从实现一个React到深度理解React框架核心原理

夏天的味道123

React

基于 Istio + Envoy 的 dubbo-go Proxy Mesh

apache/dubbo-go

dubbo Service Mesh service dubbo-go dubbogo

Vue模板是怎样编译的

yyds2026

Vue

Vue实战必会的几个技巧

yyds2026

Vue

react源码分析:组件的创建和更新

flyzz177

React

Jenkins集群下的pipeline实战

程序员欣宸

jenkins pipeline 11月月更

前端js手写面试题看这篇就够了

helloworld1024fd

JavaScript

NPM中混入了包含恶意后门的包_安全_Sergio De Simone_InfoQ精选文章