转载

移动云存储服务平台Parse下的iOS安全分析

Parse: 专为移动应用提供后台服务的云平台

Parse是由 YC 孵化出来的、专为移动应用提供后台服务的云计算平台,为开发者包办繁琐的后台服务,让开发者只需专注于具体的开发工作。它提供任意数据保存、照片或其它文件存储、发送推送通知、创建用户帐号、使用地理位置数据、添加 Facebook/Twitter 帐号登陆等等服务。

Parse向移动端开发者提供了许多实用的功能,比如云数据存储,推送通知,使用情况报告,崩溃日志统计,代码托管,后台作业以及其他一些功能。 相对于提供的这些功能来说,本文比较在意的是云计算的核心,云数据存储。

所有的云数据都是存储在所谓的定制类目中(普通的数据类表)

移动云存储服务平台Parse下的iOS安全分析

或许正是Parse这种简单的产品体验,让开发者遗忘了安全问题以及漏洞。

Parse安全性分析

你可以给这些类目设置不同的客户端权限:GET, FIND, UPDATE, CREATE, DELETE ,ADD FIELDS。在默认情况下所有都是公开的。当然,大多数开发者在配置表的时候往往都忽视了这一点。

移动云存储服务平台Parse下的iOS安全分析

我在Parse平台上有一个项目,在配置AOLs上面花费了大量时间,所以我十分感兴趣其他开发者是如何配置他们在Parse上的账户的。

有一对密钥是用来连接Parse账户与手机应用:Application ID 和 Client Key. 为了对云数据进行操作,我们必须找到这些密钥。这就让我们使用idb(一款令人惊艳的IOS渗透测试程序)[https://github.com/dmayer/idb]—破解应用的二进制文件吧。在解密过程中,我们可以检查下NSUserDefaults(一个常见的存储这些数据的地方)

移动云存储服务平台Parse下的iOS安全分析

正如你看到的,没有任何收获。让我们回到破解应用二进制文件的地方,使用Hopper(一款反汇编软件)我们将从一个应用中寻找到Parse的密钥

移动云存储服务平台Parse下的iOS安全分析

正如我们之前预料的,连接Parse的密钥就在这里。接下来我们将分析Parse数据结构以及客户权限。

下一步就是识别Parse的表名。实际上,我们在前面那张截图中就已经找到ClientKey了,这里有想当多的registerSubclass函数调用。每个类都有一个parseClassName函数用来返回一个对应的Parse表名。

移动云存储服务平台Parse下的iOS安全分析

我们这就来看看这些表的结构吧:

PFQuery *query =[PFQuery queryWithClassName:@"ParseClassName"]; [queryfindObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {     NSLog(@"%@", objects); }];

我们尝试获取访问许可,确定如何影响应用的运行状况。需要我们做的是向Parse提交一个查询,并分析其返回结果。为此,我写了一个小工具 ParseRevealer[https://github.com/igrekde/ParseRevealer]简化了一些操作,使得整个过程更加的方便快捷。

移动云存储服务平台Parse下的iOS安全分析

移动云存储服务平台Parse下的iOS安全分析

从权限列表中我们可以得知,开发者尝试将产品做的更安全,但是这点还是不够。这里就展示一下我们可以实现操纵的ChatMessage类。

一个十分危险的漏洞是攻击者可任意修改聊天内容:

PFQuery *query = [PFQuery queryWithClassName:@"ChatMessage"]; [query whereKey:@"message" equalTo:@"Привет, Хабр!"];   [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {     PFObject *object = [objects firstObject];     object[@"message"] = @"Хабр, я тебя ненавижу!";         [object saveInBackground]; }];

移动云存储服务平台Parse下的iOS安全分析

更严重的漏洞在于错误的数据映射算法,造成可以遍历所有聊天信息。由于,不填写发件人字段,应用就会崩溃。如果发送一个无效的聊天信息,当有人打开聊天窗口的时候就会崩溃。

何为业界良心

当你发现你安装的应用存在这些问题,不要责怪Parse,它仅仅是为开发者节约了后端开发的成本,一切的一切都全凭开发者的良心!

[参考来源 infosecinstitute ,翻译/鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)]

正文到此结束
Loading...