Mat*_* Mc 30 security itunes-store in-app-purchase ios
苹果公司的iOS应用程序内购买系统过去曾被欺骗过应用程序的人免费攻击.他们已经改进了所涉及的系统,试图限制这种事情.
我已经阅读了Apple提供的StoreKit参考文档,我对工作流程以及需要进行的检查有了一般概念,等等.但是,可能存在我不知道的安全问题.
任何人都可以提供针对应用程序内购买机制可能尝试的盗窃攻击的完整列表,开发人员如何错误地允许这些攻击,以及防止这些攻击的最佳做法是什么?
Mat*_* Mc 70
这些是我所知道的过去和现在的攻击:
假App Store
由俄罗斯程序员Alexey Borodin着名,此攻击仅影响直接通过App Store验证购买收据的应用程序.通过修改设备的DNS设置并安装伪造的安全证书,验证请求将发送到假的App Store服务器,该服务器会自动返回购买有效的服务.无意识的应用程序将接受这些验证调用并将内容传递给用户.
评论
在此漏洞利用于2012年7月公布后,Apple为开发人员发布了更新的文档和建议,以确保此类攻击不会继续发生.Borodin在各种网络文章中被引用,称基于Apple更新的API和最佳实践指南"游戏结束".
预防
Apple 在这里有一个专门针对这个漏洞的完整文档. (编辑:链接已关闭,Wayback如果你想......虽然该文件涵盖iOS 5.1及更早版本.) 他们提出的最大一点是让你的应用程序将收据发送到你拥有的外部服务器,然后拥有你的服务器与Apple核实收据.但是,如果您确实将收据直接从应用程序发送到App Store,他们建议您进行以下检查:
假验证服务器
如果您的应用程序将交易收据发送到您的服务器,然后将其转发到App Store,则攻击者可以选择伪造您的验证服务器.通过某种方法(改变DNS表,更改URL等),将收据发送到备用位置并返回"成功验证".通过这种方式,收据永远不会到达您的服务器,您永远无法通过App Store进行检查.
评论
显然,Cydia商店中有各种各样的应用程序可以在后台运行,监控收据流量,并为此目的重定向它.来源:Hussulinux博客
预防
如果您在收到验证后立即立即发送内容,则无法防止此类攻击.但是,请采用以下方案:您在自己的服务器上管理用户帐户系统.如果应用程序内购买的目的是通知您的服务器特定用户帐户已购买某个项目,并且该应用程序从您的服务器下载该项目,则您可以免受攻击.将收据重定向到另一台服务器将不会为攻击者完成任何操作,因为您的服务器永远不会将用户帐户标记为拥有项目,因为它从未看到收据.
假收据
攻击者可以伪造购买过程,然后将伪造的收据发送到您的验证服务器.与之前的攻击不同,收据的出站位置不会更改,但会被冒名顶替.事实上,这个欺骗性收据是来自先前App Store交易的有效收据,App Store将对其进行验证.通过伪造购买流程然后向您的服务器发送欺骗性收据,内容实际上从未支付过.
评论
显然有各种各样的Cydia应用程序可以做这种事情.您可以发现假收据,因为它们product_id与您在应用中使用的任何内容完全不同.显然,最着名的欺骗性身份是com.zeptolab.ctrbonus.superpower1.来源:Hussulinux博客.
预防
在我发现此攻击的链接中,博主建议您将收据打包到验证服务器(base64_decode)并product_id在将收据发送到App Store之前检查.但是,在本文中, Apple建议您先将收据发送到App Store,然后阅读返回的信息以确定收据有效.
(另外,如果我错了,请纠正我,但即使您没有验证服务器,也可以使用Apple推荐的技术来防止此类攻击.如果您的应用将收据直接发送到App Store,它可以检查JSON响应的内容以确保其有效.但这违反了Apple推荐的使用外部验证服务器的最佳做法,因此我不会提倡它.)
在结束
这些是我所知道的攻击,如果我在任何一点上出错或者提出额外的攻击和修复,请随时纠正我.
作为一个说明,有这个网站:http://www.in-appstore.com/声称允许在iOS 5或越狱的iOS 6设备上免费进行应用内购买,并在7月5日开始运行虽然我不是100%确定他们是如何做到的,但它似乎肯定涉及DNS重新路由和伪造安全证书,这意味着假冒App Store或伪造验证服务器,这还意味着仍然有应用程序出来没有抵御这些攻击的那些.
资源
编辑:
额外
似乎有一两个人在这里摆动,发现这个帖子很有用,我很高兴.
关于这个主题可以有更多的信息,无论是在其他帖子,书籍,或者,如果你正在接受它,搜索互联网的下腹部.这里只是我想要研究的几个网站和帖子,但还没有机会.稍后当我找到有趣的花絮时,我会添加更多链接.
http://www.se7ensins.com/forums/threads/tut-how-to-hack-ios-games-and-apps.701845/ http://www.iapphacks.com/
一些直接的要点:除非你想让一些青少年编辑,否则不要将你的玩家的数据存储在一个简单的plist中.人们不必破解你的IAP系统,如果他们可以通过编辑磁盘上的文件来给自己提供金币或类似的东西.也许通过加密这些文件,您可以阻止特定部分的攻击者.
基于se7ensins链接,似乎攻击者也可以撬开你的二进制文件并弄乱它以实现与编辑plist文件相同的目的,甚至更多,但这需要稍高的技能水平.也许设置越狱检测就足以阻止大多数人诉诸于此.
同样,这部分主要是猜测,但它可能会帮助某人.实际上,您所拥有的保护级别取决于开发人员愿意走多远(沿着安全和加密的兔子洞)来保护他们的底线.
| 归档时间: |
|
| 查看次数: |
10209 次 |
| 最近记录: |