前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >移动云存储服务平台Parse下的iOS安全分析

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

作者头像
FB客服
发布2018-02-05 15:29:37
1.7K0
发布2018-02-05 15:29:37
举报
文章被收录于专栏:FreeBufFreeBuf

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

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

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

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

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

Parse安全性分析

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

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

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

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

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

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

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

代码语言:javascript
复制
PFQuery *query =[PFQuery queryWithClassName:@"ParseClassName"];
[queryfindObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    NSLog(@"%@", objects);
}];

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

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

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

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

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

何为业界良心

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档