针对iOS应用内购买的攻击保护

时间:2013-07-16 06:44:34

标签: ios security in-app-purchase itunes-store

Apple的iOS应用程序内购买系统过去曾被欺骗过应用程序的人免费攻击。他们改进了所涉及的系统,试图限制这种事情。

我已经阅读了Apple提供的StoreKit参考文档,我对工作流程和需要完成的检查有了一般概念,等等。但是,可能存在我不知道的安全问题。

任何人都可以提供可针对应用内购买机制尝试的盗窃攻击的完整列表,开发人员如何错误地允许这些攻击,以及防止这些攻击的最佳做法是什么?

1 个答案:

答案 0 :(得分:69)

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

假App Store

由俄罗斯程序员Alexey Borodin出名,此攻击仅影响直接通过App Store验证购买​​收据的应用程序。通过修改设备的DNS设置并安装伪造的安全证书,验证请求将发送到假的App Store服务器,该服务器会自动返回购买有效的服务。无意识的应用程序将接受这些验证调用并将内容传递给用户。

评论

此漏洞在2012年7月公布后,Apple为开发人员发布了更新的文档和建议,以确保不会继续发生此类攻击。 Borodin在各种网络文章中被引用说明游戏结束了#34;基于Apple更新的API和最佳实践指南。

预防

Apple有一整篇专门针对这个漏洞的文件here(编辑:链接已关闭,Wayback如果您需要...虽然该文档涵盖iOS 5.1及更早版本。)他们提出的最重要的一点是让您的应用程序将收据发送给您拥有的外部服务器,然后让您的服务器验证Apple的收据。但是,如果您确实将收据直接从应用程序发送到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推荐的技术来防止此类攻击。如果您的应用将收据直接发送到App Store,它可以检查JSON响应的内容以确保其有效。但这违反了Apple推荐的使用外部验证服务器的最佳做法,所以我不会&# 39;提倡它。)

结束

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

作为备注,有这个网站: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文件相同的目的,甚至更多,但这需要稍高的技能水平。也许设置越狱检测就足以阻止大多数人采取这种做法。

同样,这部分主要是猜测,但它可能对某人有所帮助。实际上,您所拥有的保护级别取决于开发人员愿意走多远(沿着安全和加密的兔子洞)来保护他们的底线。