G.O.S.S.I.P 阅读推荐 2022-07-14 PaymentScope

admin 2022年7月14日21:53:40评论36 views字数 2504阅读8分20秒阅读模式

在2022年的USENIX Security会议上,有一篇关于手游安全的研究论文,来自G.O.S.S.I.P的老朋友——OSU林志强教授研究组,第一作者左朝顺近年来持续发表了大量利用静态分析方法来寻找Android app中安全问题的研究工作,这次是他的又一相关研究成果——PaymentScope

G.O.S.S.I.P 阅读推荐 2022-07-14 PaymentScope

在NDSS 2017会议上,G.O.S.S.I.P的杨文博(现在已经是正儿八经的博士了)首次系统揭示了移动生态中的三方支付(third-party payment)中的安全问题Show Me the Money! Finding Flawed Implementations of Third-party In-app Payment in Android Appshttps://lijuanru.com/publications/ndss17.pdf)。然而,我们的研究工作主要针对全球最大的三方移动支付生态环境——中国大陆Android市场;在美国,移动支付又是另一番景象,由Apple和Google主导的应用内购买(in-app purchasing,IAP)才是主流。在今天的这篇论文中,作者对基于Unity开发的手游中的付费实现的安全性进行了深入分析,同时设计实现静态工具PaymentScope,用于自动识别手机游戏中易受攻击的IAP,发现了大量由错误实现导致的支付欺诈攻击,让我们来看看到底是什么情况。

在手游app中,玩家可在应用内购买虚拟货币、虚拟装备或者游戏动作等内容。Google Play和Apple AppStore都提供了IAP API,可用于在游戏中购买各种数字物品。然而,Google Pay和Apple AppStore提供的API仅处理IAP的支付服务,游戏开发者必须验证交易的有效性,然后才能交付购买的物品,否则可能会导致许多安全问题。

G.O.S.S.I.P 阅读推荐 2022-07-14 PaymentScope

游戏内购买交易是一种复杂的多方交易,至少涉及三方:(i)手机游戏应用程序,(ii)游戏服务器,以及(iii)支付提供商。上图展示了一种典型的支付流程。实际上,作者观察到许多游戏开发者未能安全地验证交易(例如验证IAP交易的有效性,或者仅仅依靠客户端验证来检查交易是否有效),从而允许攻击者完全免费体验相应的付费内容。作者在Ghidra的基础上实现了PaymentScope,主要对两类验证问题进行了挖掘:

  • 缺乏验证:开发人员跳过了上图中的4,5,6流程,直接在客户端中使用app store返回的数据。攻击者可通过修改app store下发的数据而欺骗客户端。

  • 本地验证:开发人员采用公钥验证的形式,将流程5放在了本地。攻击者可通过重放旧事务,或直接篡改本地验证的返回值,或通过二进制修补删除验证等手段完成攻击。

PaymentScope实现了特定的Payment-Aware Data Flow Analysis,追踪 payment receipt这个特定数据的流向,并检查相关的misuse情况。考虑到Unity引擎的特性,PaymentScope首先确定UnityEngine.Purchasing.Product.get_receipt为taint source,并通过遍历CFG,观察 payment receipt可能被传播的情况(例如传播到了JSON或者局部变量)。在识别出所有相关的tainted class及其对应的受污染字段后,再次迭代所有函数,确定如下taint sink访问受污染的字段导致的问题:

  • 本地验证:如果CrossPlatformValidator.Validate接收了受污染的数据,且受污染的数据并未达到网络API,则认为检测到了本地验证漏洞。

  • 缺乏验证:如果支付数据没有发送到外部(例如通过网络API),同时没有涉及本地验证API,则认为这是一个缺乏验证的漏洞。


为了准确评估PaymentScope的性能,作者从AndroZoo数据集中找到依旧在谷歌商店中上架的应用,并通过在APK中检查唯一的libil2cpp.so文件,最终确定了39121款Unity手游。通过检查应用内购买API,PaymentScope进一步过滤掉了那些从未使用IAP服务的应用程序,最终确定了10640款游戏支持IAP。通过对这些游戏的支付数据流程分析,PaymentScope确定了8233个缺乏验证的问题,以及721个本地验证的问题。对那些使用了远程验证而(可能)不受影响的app(有1686个),仍然有597个同时进行了本地和远程验证(暗示可能在某种情况下会使用本地验证而导致安全问题?)。

G.O.S.S.I.P 阅读推荐 2022-07-14 PaymentScope

G.O.S.S.I.P 阅读推荐 2022-07-14 PaymentScope

为了深入了解这些漏洞及其相应的游戏,作者按照受欢迎程度的分布(按下载次数)和基于游戏类别的分布(例如赌博、卡牌等)分别进行了统计(下图)。可以看到,不管下载次数多少,大部分游戏中普遍存在漏洞(Figure 6a)。如果从游戏类别来看,有两类游戏特别容易出问题:Arcade(手柄操作?)类的漏洞率为90.05%,Trivia(益智问答?)类的漏洞率为93.10%;作者分析这两类游戏更可能是单人游戏,并且这些游戏对服务器的依赖性较小(即大多数是离线游戏),因此开发者很可能只在本地验证或根本不验证的情况下,实现游戏内购买。

G.O.S.S.I.P 阅读推荐 2022-07-14 PaymentScope

为了评估PaymentScope的误报率和漏报率。作者选取了220款游戏进行误报率分析,选取了60款游戏进行了漏报率分析。经过分析,在220款游戏中,30款游戏无法正常安装测试,而其他190款游戏均存在缺乏验证或者本地验证的问题。在漏报率的测试中,有9款游戏无法测试,有37款游戏是安全的,有14款游戏存在问题,漏报率为29%。

有趣的是,作者还对开发者进行了排序,看看是哪个开发者更容易开发出有漏洞的应用。可以看出漏洞也和开发者的习惯息息相关啊~

G.O.S.S.I.P 阅读推荐 2022-07-14 PaymentScope

G.O.S.S.I.P 阅读推荐 2022-07-14 PaymentScope

项目代码:

https: //github.com/OSUSecLab/PaymentScope


论文PDF:

https://www.usenix.org/system/files/sec22fall_zuo.pdf

原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2022-07-14 PaymentScope

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月14日21:53:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2022-07-14 PaymentScopehttps://cn-sec.com/archives/1178541.html

发表评论

匿名网友 填写信息