2013-07-16 49 views
28

苹果的iOS应用程序内购买系统已在过去谁已经欺骗应用到给他们的内容为自由人的攻击。此后,他们改进了涉及的系统,试图限制这种事情。攻击保护的iOS应用内购买

我已经通过从苹果StoreKit参考文件读取和我有工作流的总体思路和工作要完成,需要的检查,等等。但是,可能存在我不知道的安全问题。

任何人都可以提供的盗窃攻击,可以尝试对应用程序内购买机制,如何开发人员可能错误地允许这些攻击,什么是阻止他们的最佳实践的完整列表?

回答

67

这些都是我所知,过去和现在的攻击:

假的App Store

由俄罗斯程序员Alexey Borodin唱红,这种攻击只影响直接验证购买收据与应用App Store。通过修改设备的DNS设置并安装伪造的安全证书,验证请求将发送到假App Store服务器,该服务器会自动返回该购买有效。毫无戒心的应用程序将接受这些验证呼叫并将内容传送给用户。

评论

后这个漏洞被人知道的在2012年7月,苹果发出更新的文档和建议开发者保证这种攻击将不会继续发生。鲍罗廷在各种网络文章中被引用为基于苹果更新的API和最佳实践指南的“游戏结束”。

预防

苹果有专门为这个漏洞here整个文档。 (编辑:链路断开,Wayback如果你想......虽然文件涵盖的iOS 5.1和更早版本)他们提出的是让你的应用程序的收据发送到您自己的外部服务器,然后最大的点有你的服务器验证与苹果收据。然而,如果你直接从应用程序在App Store发送回执,他们推荐了下列检查:

  • 检查用于连接到App Store服务器的SSL证书为EV证书。
  • 检查从验证返回的信息相匹配的SKPayment对象的信息。
  • 检查收据是否有有效签名。
  • 检查新的交易有一个唯一的事务ID。

假验证服务器

如果您的应用程序发送交易收据到您的服务器,然后将它们转发到App Store,一种选择是,攻击者假冒您的验证服务器。通过某种方法(更改DNS表格,更改URL等),收据将发送到备用位置,并返回“成功验证”。通过这种方式,收据永远不会到达您的服务器,并且您从来没有机会使用App Store进行检查。

评论

显然有各种各样的Cydia的商店用来在后台运行,监控接收的流量,并将其重定向到用于此目的的应用程序。来源:Hussulinux Blog

预防

如果你马上就收据验证提供内容,还有就是防止这种攻击没有已知的方法。但是,请采取以下方案:在您自己的服务器上管理用户帐户系统。如果应用程序内购买的目的是通知您的服务器某个用户帐户已经购买了一件商品,并且该应用程序从您的服务器上下载了该商品,则您不受此攻击。将收据重定向到另一台服务器将不会为攻击者做任何事情,因为您的服务器永远不会将用户帐户标记为拥有某个项目,因为它从来没有看到收据。

假发票

攻击者可以伪造的购买过程,然后发送一个伪造收据到您的验证服务器。与以前的攻击不同,收据的出站位置不会更改,但会被替换为冒名顶替者。这个伪造的收据实际上是来自以前的App Store交易的有效收据,并且App Store将按照这种方式对其进行验证。通过伪造购买流程,然后将伪造的收据发送给您的服务器,内容永远不会实际支付。

评论

显然有多种Cydia的应用程序,做这样的事情的。您可以发现假收据,因为它们的product_id与您在应用中使用的任何东西完全不同。显然最着名的冒牌ID是com.zeptolab.ctrbonus.superpower1。来源:Hussulinux Blog

预防

在我发现这种攻击的链接,博主建议您解压缩在收到您的验证服务器(BASE64_DECODE)和收据发送到App Store之前检查product_id。但是,在this article Apple建议您首先将收据发送到App Store,然后阅读返回的信息以确保收据有效。如果我错了,请纠正我,但即使您没有验证服务器,Apple推荐的技术也可用于防止此类攻击。如果您的应用程序直接将收据发送给应用程序商店,它可以检查JSON响应的内容,以确保它是有效的。但是,这不利于苹果的推荐使用外部验证服务器的最佳实践,所以我不主张的。)

结束语

这些是我所知道的攻击,如果我在任何一点上都有错误或提出额外的攻击和修复,请随时纠正我。

作为一个说明,有这个网站:http://www.in-appstore.com/,声称允许应用内免费购买,无论是在iOS 5还是越狱iOS 6设备,并且自2013年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文件,甚至更多同样的目的,但是这需要一个稍微高技能水平。也许设置越狱检测足以阻止大多数会采用这种方法的人。

同样,这部分主要是猜测,但它可能有助于某人。真的,您拥有的保护级别取决于开发人员愿意走多远(降低安全和加密的漏洞)以保护其底线。

+1

伟大的写作和非常有用的。 – philipp

+0

手机是否需要所有这些攻击越狱?正如我所看到的,这些攻击中的一部分可以应用于Mac App In App。应用购买攻击中是否有任何特定的Mac? – Petr

+1

@Petr我认为DNS重新路由和证书伪造攻击需要iOS 6及更高版本的越狱。是的,它看起来也可以应用于OSX。我不确定究竟是哪些;也许都是。 OSX App Store收据与iOS收据不同,但我不记得详细信息。 –