漏洞预警|Fastjson再爆反序列化代码执行漏洞;星巴克被发现存在信息泄露风险

来源:上海控安
2020-07-01
2425


漏洞预警





Fastjson再次爆出通杀的反序列化代码执行漏洞


漏洞信息

据态势感知平台监测,网络上再次出现此前未曾发现的fastjson反序列化攻击向量。



Fastjson是由阿里巴巴推出基于Java语言的高性能json操作库,由于速度快、支持功能丰富,颇受开发者的喜爱,在国内应用极为广泛。但近年来由于反序列化漏洞的威力被从业人员逐渐认可,越来越多的攻击者开始挖掘基础组件的反序列化漏洞。


影响版本

astjson <= 1.2.68

fastjson sec版本 <= sec9


漏洞分析

在业务环境中,经常会有传递一个对象的需求,此时需要将内存中存储的对象通过网络传输,通常会将对象所有的成员变量转储成字符串(本例中即为json格式)通过HTTP/HTTPS协议传送,在到达对端后,重新将相同的类实例化,并将所有的成员变量一一赋值,即可在本地得到一个与对端相同的对象。字符串还原对象的过程称之为反序列化。

此功能虽然提高了开发效率,但同样带来了安全问题,在早期的反序列化功能中,并不会反序列化的类做限制,函数会无条件的反序列化对端传来的数据。由于反序列化是递归的,且可以实例化当前堆栈中的所有存在的类。这导致攻击者可以寻找一些常见的、具有代码执行、文件读取等功能函数的工具类,即可远程操控服务器。且由于不能强制控制用户反序列化的类,开发者只能通过黑名单的方式,将每次攻击者发现的新的反序列化链条禁止来修复漏洞,这就导致了防御者一直处于被动的地位。

如上所述,fastjson采用黑白名单的方法来防御反序列化漏洞,导致当黑客不断发掘新的反序列化Gadgets类时,在autoType关闭的情况下仍然可能可以绕过黑白名单防御机制,造成远程命令执行漏洞。经分析该漏洞利用门槛较低,可绕过autoType限制,风险影响较大。


星巴克被发现存在约1亿用户的信息泄露风险


漏洞信息

一位白帽子在星巴克为朋友购买生日礼物时,意外的发现了一个可疑的接口,经过探测,最终得到了一个存在未授权访问的Microsoft Graph实例。

此实例上存储了约一亿用户的个人信息。



漏洞分析

此问题是由于反向代理的不当配置所致,白帽子首先探测出该网站架构为:



这意味“ app.starbucks.com”主机无法访问通过特定端点访问的逻辑或数据,但似乎可以将其充当假设的第二个主机(internal.starbucks.com)的代理或中间人。

在经过一些试错与绕过waf的工作后,该白帽子发现似乎可以通过:

/bff/proxy/v1/me/streamItems/web.................... 

访问到根目录,最后经过一些爆破与目录猜解工作,发现了星巴克用于存储用户数据的Microsoft Graph库:

/bff/proxy/stream/v1/users/me/streamItems/web..................searchv1Accounts

通过调用count接口,确认了数据条数为99356059条。

{

 "@odata.context":        "https://redacted.starbucks.com/Search/v1/$metadata#Accounts", 

"@odata.count":99356059

}

所幸的是,星巴克官方快速的修复这一问题,也没有证据表明这些数据遭到了泄露。



本周安全态势分析


本周发生的事件有fastjson出现反序列化漏洞与星巴克信息泄露风险,可造成命令执行与大规模信息泄露等严重问题。Fastjson作为常用的json库,在各种应用广泛使用,且可直接远程执行命令,星巴克的信息泄露暴露企业内网中的脆弱性,且数据量较大。

1
反序列化漏洞近年来越发流行,是近年来比较新式的攻击手段,开发者通常并不会主动的配置白名单来约束反序列化函数的使用,且开发者的防御手段只是简单的黑名单过滤类名。每次新的链条出现就要更新黑名单,过于被动,较好的解决办法还是要使用基于行为的监控。
2
星巴克的信息泄露问题本质是反向代理的配置不当引起的。但同时也暴露的企业内网中糟糕的安全机制,本例中即使攻击者有限制的突破了边界,但是本质问题还是Microsoft Graph缺少了访问控制。



收藏
点赞
2000