下载量超1600万的热门开源 JavaScript 序列化包中被曝 RCE 漏洞

 聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士团队

最近,热门的开源NPM  serialize-javascript 中被指存在一个漏洞,可使攻击者执行远程代码。

Serialize-javascript由雅虎开发并维护,是一款颇受欢迎的开源项目,用于将 JavaScript 序列化为 JSON 的超集,包括表达式、日期和函数。

5月20 日,Jordan Milne 和 Ryan Siebert 将该漏洞告知 GitHub,后者于上周通过 GitHub Advisory 数据库公布。该漏洞的编号是 CVE-2020-7660,可导致远程攻击者通过 deleteFunctions 函数将任意代码注入 index.js 中。

Serialize-javascript低于3.1.0的版本受影响。

PoC

Serialize-javascript是一款热门库,其下载量超过1600万次,有840个相关项目。

GitHub 在安全公告中指出,这个不安全的序列化问题将导致对象如  {"foo": /1"/, "bar":"a\"@__R-<UID>-0__@"} 序列化为  {"foo": /1"/, "bar":"a\/1"/},因此用户输入能够规避 bar 的键值。

因此,如果攻击者额能够控制“foo”和“bar”的值并猜测出 UID,那么就有可能执行 RCE。安全公告指出,该 UID 的密钥空间为40亿,因此利用是一个“现实的网络攻击”。

当 `serialize()`d版本是 `eval()`d时,如下 PoC 能够调用 console.log():

eval('('+ serialize({"foo": /1" + console.log(1)/i, "bar": '"@__R-<UID>-0__@'}) + ')');

该漏洞已在serialize-javascript 版本3.1.0 中修复,贡献人员已通过修改代码确保占位符前面没有反斜杠的方式修复该漏洞。

影响范围广

CVE-2020-7660 的CVSS 评分为8.1,“重要”范围内靠近“严重”的级别。

然而,Red Hat 在关于该漏洞的安全公告中指出,已将该漏洞的严重等级调整为“中危”,因为利用serialize-javascript 的应用程序必须能够控制通过它传递的 JSON 数据才能触发该漏洞。

Red Hat 指出,虽然Container NativeVirtualization 2 的受支持版本不受影响,但遗留版本包括2.0在内均受影响。

OpenShift ServiceMesh 1.0/1.1 (servicemesh-grafana) 的修复方案已发布,目前正在为 Red Hat OpenShiftContainer Platform 4 (openshift4/ose-prometheus) 准备补丁。

鉴于该数据包很热门,其它仓库也受影响,包括 Ruby on Rails 的Webpacker。

上周日,使用易受攻击的serialize-javascript 的稳定版本已修复。

目前,研究员 Milne 和 Siebert 尚未置评。

 

推荐阅读

下载量达数百万次的NodeJS 模块被曝代码注入漏洞

开源自动化服务器软件 Jenkins 被曝严重漏洞,可泄露敏感信息

开源框架 Apache Struts 2漏洞的 PoC 已公开

原文链接

https://portswigger.net/daily-swig/remote-code-execution-vulnerability-exposed-in-popular-javascript-serialization-package

题图:Pixabay License

本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

    觉得不错,就点个 “在看” 吧~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值