AICon议程上新60%,阿里国际、360智脑、科大讯飞、蔚来汽车分享大模型探索与实践 了解详情
写点什么

细思极恐:后门代码被隐藏在 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:002652
用户头像

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

关注

评论

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

🌏【架构师指南】分布式ID生成算法技术总结

洛神灬殇

分布式ID 6月日更

建党100周年,快来预约博睿数据驻场服务!

博睿数据

校外培训行业迎来强监管,“教育+区块链”新模式试图解决行业痼疾

CECBC

爆场预警!百度大脑开放日-AI赋能软硬件产品创新

百度大脑

百度大脑开放日

SpringCloud Gateway 路由数量对性能的影响研究

中原银行

微服务 SpringCloud Gateway JMH性能基准测试 中原银行

数字人民币是央行数字货币还是法定数字货币?

CECBC

数据库事务与锁详解

阿骆麦迪

MySQL 事务 6月日更

停车场事故频频,AI 达人将摄像头变身安全卫士

阿里云视频云

阿里云 计算机视觉 音视频 应用 英特尔

Nebula 基于 ElasticSearch 的全文搜索引擎的文本搜索

NebulaGraph

elasticsearch 索引 图数据库

MySQL基础之十五:索引

打工人!

MySQL 6月日更

Flink EventTime 和 Watermark

Alex🐒

flink 翻译 flink1.13

SpringCloud Gateway 动态路由

中原银行

微服务 SpringCloud Gateway 中原银行

优雅编程 | 7 个你应该掌握的 JavaScript 编码技巧

devpoint

JavaScrip 6月日更

成为一个面霸需要面试多少回?

escray

极客时间 6月日更

为什么中间件协议对区块链生态系统至关重要?

CECBC

苹果iOS内购三步曲:App内退款、历史订单查询、绑定用户防掉单!--- WWDC21

37手游iOS技术运营团队

ios wwdc 苹果退款 appstore WWDC21

浪潮云入选中国网络安全百强综合实力领军者象限

云计算

5分钟速读之Rust权威指南(二十四)Box

wzx

rust

运维大佬嘲笑我,这个你都不知道?

李阿柯

redis 面试 运维自动化

前端 JavaScript 之『防抖』的简单代码实现

编程三昧

JavaScript 编程 大前端 防抖 函数节流

超详细!百度富媒体检索比对系统的关键技术

百度开发者中心

百度

SpringCloud Gateway 路由转发性能优化

中原银行

微服务 性能优化 SpringCloud Gateway 中原银行

「SQL数据分析系列」6. 使用集合

Databri_AI

sql 集合

如果把四个消息队列都拉到一个群里,他们会聊些什么?

悟空聊架构

故事 消息队列 群聊 6月日更 悟空聊架构

只等你来!OpenAtom XuperChain开发者夏季论坛来啦

百度开发者中心

百度 开源 开发者

Taro3无埋点的探索与实践

GrowingIO技术专栏

taro AST sdk 无埋点 babel

并发王者课-铂金2:豁然开朗-“晦涩难懂”的ReadWriteLock竟如此妙不可言

MetaThoughts

Java 多线程 并发

很多小伙伴问我推荐什么书籍和网课,这次把私藏很久的资料都贡献了(上)

C语言与CPP编程

Java c++ C语言 数据结构与算法 #python

Low-Code能否威胁到专业的程序员?| 话题

三掌柜

试用期 签约计划 人气作者 TOP10

【 Meetup 推荐】6月26日,邀请您相聚西子湖畔,探讨 2021 音视频技术最佳实践

七牛云

音视频 直播 RTC Meetup

【21-10】PowerShell 日期和时间

耳东@Erdong

PowerShell 6月日更

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