热门游戏Pokémon GO可通过令牌获取用户谷歌账户的完整账户访问权限,而不需要用户许可。
前不久Pokémon GO移动应用发布后,该游戏的开发商Niantic公司被迫修复该应用的iOS版本,因为安全研究人员报告称该游戏自身会安装令牌,并获取对其谷歌账户的完全访问。虽然该App本身不能执行这种访问,但这个漏洞带来了令牌交换攻击的风险。
安全公司RedOwl Analytics首席架构师Adam Reeve称,当他使用其谷歌账户开始玩Pokémon GO时,他希望看到“该app将访问哪些数据”或者“该app将查看你的电子邮件地址和姓名”的弹出消息,但他没有看到任何这样的消息,随后在他查看该游戏访问权限时感到非常震惊,他看到“Pokémon GO可完全访问用户的谷歌账户”。
Pokémon GO允许通过Pokémon Trainer Club网站或使用谷歌账户登录;然而,Pokémon Trainer Club因大量新注册用户不堪重负,而暂停注册,让用户只有一个选择:使用谷歌账户登录。这种完整权限访问仅发生在iOS版的该应用中;Android用户没有受到影响。
Niantic承认了这个错误并解释称,尽管Pokémon GO得到了完全访问令牌权限,但该应用并不能访问所有谷歌账户信息。
“我们最近发现,iOS系统中Pokémon GO账户创建过程错误地要求用户谷歌账户的完全访问权限,”Niantic在其网站写道,“但是,Pokémon GO只会访问基本的谷歌账户信息(即用户ID和电子邮件地址),不会对其他谷歌账户信息进行访问或收集。在我们发现这个错误后,我们开始进行客户端修复,仅请求访问基本的谷歌账户信息,以及我们实际访问的数据。谷歌已经证实,Pokémon GO或Niantic没有收到或者访问其他任何信息。谷歌很快会将Pokémon GO的权限降低到Pokémon GO需要的基本配置文件数据,用户不需要亲自采取任何行动。”
Reeve最初报告称,Pokémon GO被授予的令牌可让Niantic读取用户的Gmail,作为用户发送邮件,访问和删除Google Drive中的文件。事实上,谷歌自己表示完全账户访问权限允许应用执行很多潜在危险的行为。
“当被授予完全账户访问权限时,该应用可查看和修改谷歌账户中几乎所有的信息(但它不能修改你的密码、删除你的账户或者以你的名义用谷歌钱包支付),”根据该公司的支持页称,“如果你已对不信任的或识别应用授予完全账户访问,建议你点击撤销按钮取消这种权限。”
然而,其他安全专家后来发现,虽然Pokémon GO不能读取或发送电子邮件,让该游戏只能查看基本谷歌用户信息,但该漏洞可能带来令牌交换攻击的风险。
Slack公司产品安全高级工程师Ari Rubinstein在GibHub谈到了这个漏洞,并指出这个漏洞可能用于交换令牌攻击。虽然Pokémon GO不能使用其完整账户访问权限来访问用户的Gmail和日历,Rubinstein称OAuth访问令牌可被恶意交换为另一个更强大的令牌,被称为uberauth。这将让攻击者能够打开任何谷歌服务的网络会话以及获取真正的完全账户访问权限,这给谷歌的身份验证系统带赖了重大的安全漏洞。
Rubinstein指出这种过度权限授权是Niantic和谷歌的错误,不过这个权限还没有被滥用。
“即使只是最初建议,也很难使用这种权限,因为这种使用类型不是编程的(除非有另一个隐藏的API来授予API令牌)。省略这个范围让身份验证被视为“基本用户信息”而不是“完整账户权限”,Niantic可能会更新客户端。身份验证流程很混乱,并且,谷歌应该了解,使用这个范围来登录可能让令牌被交换。在我看来,谷歌不应该将这种权限范围给予非谷歌应用。”
Niantic此前属于谷歌,去年它作为独立实体从谷歌分离出去。目前我们还不清楚Niantic如何获得这种OAuth范围以及绕过权限通知(通常应用获取完整账户权限都会有这种通知)。网络公司Trail of Bits公司首席执行官Dan Guido表示,他和安全研究人员Jay Little试图在谷歌的OAuth Playground开发者网站复制OAuth令牌的使用,但没有成功。
“这意味着OAuth Playground(谷歌用于测试其API访问的服务)无法准确复制Pokémon GO请求的权限,”Guido写道,“这可能是OAuth 1.0 API的一部分,谷歌在2012年已经将其启用,并在2015年关闭。如果是这样的话,我们无法确认为什么Pokémon GO还能够使用它。我们检查过,迁移到OAuth 2.0 API的账户无法再访问较旧的1.0 API。”
现在,Pokémon GO权限问题似乎已经得到解决。Rubinstein表示:“谷歌将重新限定令牌范围来解决令牌交换攻击的风险,Pokémon GO在未来几天应该是安全可用的。”
其他Pokémon GO的安全问题
虽然Niantic和谷歌已经修复iOS版应用的权限问题,但还有其他安全问题。网络安全公司Proofpoint发现该游戏受感染的Android版本,携带DroidJack远程访问工具。
“虽然我们还没有在实际环境中发现这种恶意Android应用程序包,但在2016年7月7日09:19:17 UTC被上传到恶意文件存储库服务,而该游戏在新西兰和澳大利亚正式发布还不到72小时。”
Proofpoint指出,由于该游戏还没有在全球范围正式推出,很多游戏玩家希望游戏在其地区发布前访问该游戏,这可能导致它们从第三方下载Android应用程序包。
与此同时,微软项目经理兼工程师Dennis Delimarsky称Pokémon GO在连接公共Wi-Fi网络时还可能遭受中间人攻击。