写点什么

细思极恐:后门代码被隐藏在 npm 模块中,差点就得逞

  • 2018-05-13
  • 本文字数:1596 字

    阅读完需:约 5 分钟

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

npm Registry 中没有哪个软件包可以以一种触发后门程序的方式使用恶意模块,虽然未发布到 Registry 的应用程序直接使用恶意模块的能力很小,但它超出了我们的分析范围。

初始报告

来自社区的最初报告显示,该软件包 getcookies 潜藏后门程序,而 express-cookies 和 http-fetch-cookies 依赖于 getcookies,而 mailparser 依赖于 http-fetch-cookies。

系统诊断

收到报告后,npm 的安全团队开始对其进行诊断。诊断的目的是确定报告中提到的软件包是否真的含有恶意代码,如果有,其影响的范围将会有多大。

这里不会披露后门程序的所有信息,但我们会给出在审查过程中得到的一些重点信息。

后门程序通过解析用户提供的 HTTP request.headers,寻找专门为后门程序提供三种不同命令的格式化数据。

JSON.stringify(req.headers).replace(/g([a-f0-9]{4})h((?:[a-f0-9]{2})+)i/gi, (o, p, v) => {})

我们可以在这里看到头文件被字符串化,搜索结果的格式为:gCOMMANDhDATAi

可用的控制流代码:

  • 0xfffe- 重置代码缓冲器
  • 0xfffa- 通过调用 vm.runInThisContext 和提供 module.exports、require、req、res 和 next 参数运行缓冲器内的代码。
  • default - 将远程代码加载到内存中运行。

这些控制代码允许攻击者将任意代码输入到正在运行的服务器运行。

除了后门程序代码,这些模块的其他方面也引起我们的关注:

  • 基于反向图像搜索,发布 getcookies 的用户上的配置文件图像看起来像是一张股票照片。
  • GitHub 用户链接的这些 npm 包是在三月份创建的。
  • getcookies、express-cookies 和 http-fetch-cookies 的下载次数在几个星期前激增,这似乎与依赖于 http-fetch-cookie 的 mailparser 版本相关。

模块的依赖关系

虽然 mailparser 已被弃用,但 mailparser 每周的下载量仍能达到 64,000 次,经过调查,我们发现已发布的依赖于 http-fetch-cookies 的 mailparser 版本并未以任何方式使用过该模块,从而消除了后门程序所带来的风险。我们推测,mailparser 所需的 http-fetch-cookies 会在将来发动攻击或者为了增加 express-cookies 的下载次数而增加其合法性。

因此,mailparser 用户在过去没有受到影响,只有直接需要和使用 express-cookies 或 getcookies 软件包的用户才会受到影响。

采取的行动

对此,npm 官方采取了如下措施:

  • 删除了 dustin87 用户和撤销发布 getCookies,express-cookies 和 http-fetch-cookies;
  • 删除了依赖于 http-fetch-cookies 模块的 3 个 mailparser 版本;
  • 重置 mailparser 作者的 npm tokens 以防止未经授权的发布。

如何看待这次事件

早在 2017 年 8 月,npm 团队就曾删除了 38 个 JavaScript npm 软件包,这些包在受感染的项目中被盗取了环境变量。而目前,npm Registry 已经拥有将近 70 万个软件包和 1000 万用户,这足以吸引攻击者们的注意。

npm 官方似乎也意识到了问题的严重性,他们最近也开始进行了一些行动,上个月,npm 收购了 ^ Lift Security 和 Node Security Platform,并将 Baldwin 并入 npm 团队中,致力于解决 npm Registry 和 npm 应用程序的安全问题。同时,他们在最近新发布的 npm 6 中也加入了安全功能,如安装不受信任或易受攻击的模块时,系统会自动发出警报。

原文链接

https://blog.npmjs.org/post/173526807575/reported-malicious-module-getcookies

前端之巅

「前端之巅」是 InfoQ 旗下关注大前端技术的垂直社群。紧跟时代潮流,共享一线技术,欢迎关注。

活动推荐

PWA、Web 框架、UI 与动画、Node… 大前端的下一站在哪里?前端工程师的价值和成长路径是什么?GMTC2018 上,来自 Google、Facebook、BAT 等 60+ 国内外一线前端大牛,将与你面对面探讨大前端领域最新技术趋势和实践,想要升职加薪就快来吧!扫描下方二维码或点击“阅读原文”了解更多大会详情!

目前大会 8 折热销中,团购更优惠,购票咨询:18514549229(同微信)

2018-05-13 19:003202
用户头像

发布了 83 篇内容, 共 51.8 次阅读, 收获喜欢 187 次。

关注

评论

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

大数据系统包含哪些组件?需要过等保吗?

行云管家

大数据 数据 过等保

云堡垒机单机部署的优缺点讲解-行云管家

行云管家

网络安全 堡垒机 云堡垒机 堡垒机部署

如何使用物联网低代码平台进行数据分析?

AIRIOT

物联网 低代码开发

人才一站式服务平台开发,高层次人才管理系统

a13823115807

帮助中心应该怎样设计?

小炮

为什么不建议你用 MongoDB 这类产品替代时序数据库?

TDengine

数据库 tdengine 时序数据库

Javascript API自动代码生成需求征集

老豆还编程

JavaScript OpenAPI axios

易观分析《计算机视觉市场研究,2022》研究报告正式启动

易观分析

人工智能

InfoQ 极客传媒 15 周年庆征文|跨平台应用开发进阶(二十二) :uni-app Android APP上线准备工作汇总

No Silver Bullet

前端 签名 安全检测 6月月更 InfoQ极客传媒15周年庆

多年亿级流量下的高并发经验总结,我毫无保留的写在了这本书中

冰河

并发编程 多线程 高并发 异步编程 6月月更

web前端培训如何提高React界面性能

@零度

前端开发 React

基于深度学习的水冷工作站加速遥感测绘应用研发

GPU算力

华为云携手鸿蒙,培养创新型开发者

华为云开发者联盟

云计算 鸿蒙 华为云

阿里云CIPU下笔惊雷,方寸间书写中国算力故事

脑极体

java程序员培训 | 10年后程序员的薪资会怎么样

@零度

JAVA开发

个推TechDay直播预告 | 6月22日,开启大数据降本提效的破局之道!

个推

大数据 分布式计算 分布式存储 标签

特定MPC问题包含哪些常见技术,有什么作用,什么场景需要用到?

Jessica@数牍

隐私计算 安全多方计算 特定mpc问题

ABAP-调用WebService服务

桥下本有油菜花

abap

科创人·酷渲科技创始人华少:用双赢思维做产品、连生态,实现规模化发展

科创人

java就业培训 | 面试官如何判断应聘者能力的,这一篇就够了

@零度

JAVA开发

Mysql数据库查询好慢,除了索引,还能因为什么?

C++后台开发

MySQL 数据库 中间件 后端开发 C++后台开发

Vue-12-条件渲染(可重复元素)

Python研究所

6月月更

2023年广州美博会-2023年春季广州美博会

Geek_0b38bb

美博会 2023年广州美博会 春季广州美博会 3月份广州美博会

Neat Syntax Design of an ETL Language (Part 1)

Bright

数据开发 ETL 大数据开发 EasySQL

转转统一权限系统的设计与实现(前端实现篇)

转转技术团队

前端开发 umijs 权限设计

探索质量外延 - 质量安全故事

QualityFocus

质量管理 软件质量与安全

个推CTO趣谈元宇宙:从概念、成因到核心技术

个推

数据智能 元宇宙

【LeetCode】多个数组求交集Java题解

Albert

LeetCode 6月月更

uni-app进阶之Weex/nvue【day6】

恒山其若陋兮

6月月更

JDK8 HashMap如何实现?

源字节1号

软件开发

技能速成!教你10分钟内在电脑上配置运行Hive Metastore和Presto

Alluxio

presto 技能 Alluxio hive metastore 初学者

细思极恐:后门代码被隐藏在npm模块中,差点就得逞_语言 & 开发_覃云_InfoQ精选文章