system: [SYSTEM]

user: 6. 实验评估 我们从Android应用市场中根据下载量从高到低下载了2000个游戏APP，超过50%的APP集成了表1中的游戏SDK，因此我们选取这些游戏SDK进行实验，检测它们是否存在第五章中提到的安全缺陷，研究对象包括这些游戏SDK的官方文档，SDK源码和集成这些游戏SDK的APP，实验结果表明这些游戏SDK都违反了至少一条安全规则。 Table 1 The name and version of SDK SDK名称 SDK版本 dangle v4.4.1 SnailGameSDK v1.6.0 SogouGameSDK v2.1.0 UmipaySDK v4.08 BDGameSDK v3.7.4 AnzhiSDK v4.2.3 4399SDK v1.0.4 tencent v3.3.3 laohuSDK v3.11.0 37SDK v3.2.6 lianyun v4.5 DouyuSDK v1.1 iSDK v1.3.2 MiguSDK v4.1.0 mzw_onlinesdk v3.3.8.1 Amigo Play SDK v4.0.6 hmPaySDK v1.3.1.7 guopan v4.0.1.2 UCGameSDK v7.3.4.2 SuperSdk v3.0.3 49sdk v7.3.3 表1. SDK名称及版本 6.1. 违反安全规则1 我们对500个集成这些SDK的游戏APP进行检测，发现近20%的APP存在秘钥泄露的情况，尤其在搜狗游戏APP和偶玩游戏APP中，我们检测到了支付秘钥泄露。例如，图4是在搜狗游戏龙腾传世APP中检测到的秘钥泄露，该秘钥用于生成游戏APP向APP服务器请求订单号时的签名；我们通过分析APP的源码得出利用此秘钥生成签名的方式，然后利用中间人攻击获取到签名所需的网络数据(表2) 图4. 搜狗游戏APP中泄露的秘钥 Table 2 The network communication data of Sogou game AP Name Value model Nexus 5 payInfo {appID:”247”，channelID:”27”} roleName 怀美琪 serverName 传世141服 productID 1 sign cfyzsH+1qf8gVlsk2PasLkvMBnr1sgsopV9iIiyOqukFopZW0G8Zyuyq4GvVRl07gES8qFr7pLd+lHb4Czfjc6FZlAt3ig85IhL8PoXYMtdPF0OKzNmXKR8506TPK9PhDfldQUp+XU2/JjrFamUrw+70A/AL6jnrmm+UfCur2F4= extension %7B%22payData%22%3A%5B%221%22%2C%22%E6%80%80%E7%BE%8E%E7%90%AA%22%2C%22110936154%22%2C%2210%22%2C%2210141%22%5D%7D productDesc 购买1000元宝 userID 110936154 ratio 0 money 1000.0 serverID 10141 mnos 4 systemversion 4.4.4 roleID 24659548 productName 1000元宝 表2. 搜狗游戏APP的网络通信数据 并通过反编译APP获取Manifest数据(图5)，最后利用这些信息计算出了正确的签名(图6)。我们尝试用此方式为篡改的订单生成签名并发送给APP服务器，最终APP服务器正常处理并返回订单号。 在支付过程中，SDK客户端负责调起支付，而支付宝要求传入notify_url参数，这个参数为支付宝服务器主动通知游戏服务器支付结果的HTTP/HTTPS路径。因此，若游戏SDK集成了支付宝的支付方式，则这个游戏SDK开发的游戏APP中会包含此URL，从而造成URL泄露。我们检测了一些Android市场中包含支付宝支付方式的游戏APP，结果这些APP均含有URL泄露。图7是在搜狗游戏APP中检测出的URL泄露。 对于token和账号信息的检测，我们分析了这些集成这些游戏SDK的APP，检测沙箱目录和外存中APP生成的文件等，表3为有信息泄露的游戏APP。 6.2. 违反安全规则2 我们获取集成这些SDK的游戏APP的密码找回过程的网络数据。结果发现在当乐游戏APP存在客户端校验短信验证码的情况，当验证码输入正确时，APP会直接进入登录流程，而不会接收到验证码校验成功的通知。因此，我们认为这类游戏APP使用了错误的校验方式。 6.3. 违反安全规则3 我们发现这些游戏SDK均存在网络通信方面的漏洞，而且它们传输信息的主要方式是HTTP。例如， 图5. 搜狗游戏APP的Manifest数据 图6. 生成的签名 图7. APP中泄露的URL Table 3 Privacy disclosure in AP 游戏APP 是否有token泄露 是否有账户信息泄露 dangle 是 否 SogouGameSDK 是 否 laohuSDK 是 否 DouyuSDK 是 否 iSDK 否 是 SnailGameSDK 是 否 表3. APP中的隐私信息泄露 搜狗游戏SDK利用简单的加密算法甚至是明文传递信息，攻击者可以获取到手机号，账号，密码；蜗牛游戏SDK使用简单的加密方式传递信息，解密后可以获取到账号，密码，而且在支付过程中，可以获取支付账号和支付密码等重要信息；4399游戏SDK在找回密码过程中，用户登录账号和登陆密码为明文传递。另外，这些SDK中均涉及到HTTPS通信，且都存在SSL通信客户端检测信任任意证书的漏洞，攻击者可以使用中间人攻击获取加密内容。图8是4399游戏SDK的网络传输数据，密码采用明文传递。 6.4. 违反安全规则4 我们对游戏SDK检测了userid相关的漏洞，结果发现，搜狗游戏SDK服务器、蜗牛SDK服务器、拇指玩游戏SDK服务器和综合游戏SDK服务器生成的userid是顺序的，攻击者很容易推测连续注册用户的userid。 6.5. 违反安全规则5 我们对这些游戏SDK执行了篡改订单的攻击。结果发现，蜗牛SDK发送给APP服务器商品信息不携带签名字段(表4)，订单信息可随意被篡改，例如我们选择充值100元，然后将订单中的amount字段由100修改为1，最终服务器返回的订单的支付金额为1元(图9)，攻击者可以用较少的金额获取商品；同样，偶玩游戏SDK在支付宝支付过程中没有出现任何签名信息，攻击者可以任意重改用户的订单信息。 6.6. 违反安全规则6 我们手动检查了这些游戏SDK支付Activity，发现大部分SDK没有向用户呈现完整的订单信息，容易发生订单被替换的危险。统计结果如表5所示。 图8. 4399游戏SDK的网络通信数据 6.7. 违反安全规则7 我们主要分析了这些游戏SDK在登陆和支付过程中，服务器是否每次都验证接收到的数据的签名。结果表明，在当乐游戏SDK的支付过程中，点击立即支付之后，我们修改SDK发送给SDK服务器的信 图9. APP向用户展示被篡改的订单 Table 4 The network communication data of the Snail Game SD Name Value gameId 36 paymentId 200 passport BSNMDBDNMXMS retypePassport BSNMDBDNMXMS areaId 0 imprestDestination 1 captchaValue {cOrderId:””，nAppId:”23”} cardTypeId 2580 amount 1 accountid bc5917af-2fb1-4eae-9492-63d6cf928013 productName 免商店100元 表4. 蜗牛游戏SDK的网络通信数据 Table 5 The payment Activity information of SDK 游戏SDK 订单id 商品信息 APP信息 支付渠道 支付金额 支付账户 dangle 无 有 无 有 有 无 SnailGameSDK 有 有 有 有 有 有 SogouGameSDK 无 有 无 有 有 有 UmipaySDK 无 无 无 有 有 无 BDGameSDK 无 有 无 有 有 有 AnzhiSDK 无 无 有 有 有 无 4399SDK 无 有 无 无 有 有 tencent 无 有 有 有 有 无 laohuSDK 无 有 无 有 有 无 37SDK 无 无 无 有 有 有 lianyun 无 有 无 有 有 无 DouyuSDK 无 有 有 无 有 无 iSDK 无 有 有 有 有 有 MiguSDK 无 无 无 有 有 无 mzw_onlinesdk 有 有 有 有 有 无 Amigo Play SDK 无 无 有 无 有 无 hmPaySDK 无 无 无 有 有 无 guopan 无 无 无 有 有 无 UCGameSDK 无 有 无 有 有 有 SuperSdk 无 有 无 无 有 无 49sdk 有 有 有 无 有 无 表5. SDK的支付Activity信息 息中的签名，服务器收到携待错误签名的信息后没有报错，而是返回订单号；同样，37游戏SDK也存在这种情况。表明这些SDK的服务器并不是每次都正确地验证了签名。