为什么我今天没有抓到任何宝可梦 - Trail of Bits博客
tl;dr 当互联网今天疯狂时,我们开始了事实调查。以下是我们对Pokemon Go对您Google账户权限的调研笔记。
以下是Jay和我在今天下午6点左右开始做的事情:
- 查找Pokemon Go实际请求的权限
- 调查这些权限的实际作用
- 在测试应用中复制这些权限
我们的第一直觉是直接查看代码,因此我们开始在越狱手机上加载iOS应用。Pokemon Go应用使用越狱检测来阻止修改设备的用户访问游戏。正如我们通常发现的那样,这些保护措施很容易绕过,因此没有提供真正的保护。
Niantic向Google发出OAuth请求,其scope设置如下(注意:“scope"决定了Niantic对您账户的访问级别,每个请求项都是不同类别的数据):
|
|
OAuthLogin scope在这个列表中很突出。它主要由Google的应用程序使用,例如Chrome和iOS账户管理器,不过我们也发现了一些使用它的Github项目。
无法从Google自己的OAuth Playground使用这个OAuth scope。它只会给出各种"未授权"的错误消息。这意味着OAuth Playground(Google用于测试其API访问的服务)无法完全复制Pokemon Go请求的权限。
它可能是OAuth 1.0 API的一部分,该API于2012年被Google弃用,并于2015年关闭。如果是这样,我们不确定为什么Pokemon Go能够使用它。我们检查过,迁移到OAuth 2.0 API的账户不再能够访问旧的1.0 API。
似乎无法通过正常或文档记录的方式创建我们自己的使用此OAuth scope的应用。为了正确测试此OAuth令牌提供的访问级别,我们可能需要挂钩一个有权访问它的应用(例如,通过Cydia挂钩)。
Pokemon Go登录流程没有描述正在请求的权限,并在权限被撤销后静默重新启用它们。此外,可用文档未能充分描述令牌权限对任何试图调查它们的人意味着什么。
很明显,这些访问不需要在Pokemon Go中识别用户账户。在我们撰写本文时,我们预计Niantic最终会通过减少他们请求的权限来回应。在我们发布时,他们发布了一份声明,确认他们将这样做。
这一次,我们同意Hacker News上的很多评论。
这似乎是Google方面的一个重大安全失误。没有理由OAuth流程应该能够静默请求管理员权限。作为用户,我真的必须得到一个提示来询问我(并警告我!)。— ceejayoz
我们能够通过Google Apps for Work查询特定的令牌scope,但我们没有找到个人账户的等效功能。鉴于这些令牌几乎等同于密码,似乎有必要在所有Google账户上启用更大的调查和透明度,以便在下一次不可避免发生这种情况时使用。
Google Apps for Work允许您查询单个令牌scope
当我们做到这一步时,Niantic发布了一份声明,确认他们拥有的访问权限远远超过了需要:
我们最近发现,iOS上的Pokemon Go账户创建过程错误地请求用户Google账户的完全访问权限。然而,Pokemon Go仅访问基本的Google配置文件信息(特别是您的用户ID和电子邮件地址),没有访问或收集其他Google账户信息。一旦我们意识到这个错误,我们开始开发客户端修复程序,仅请求基本Google配置文件信息的权限,与我们实际访问的数据一致。Google已验证Pokemon Go或Niantic未接收或访问任何其他信息。Google将很快将Pokemon Go的权限减少到仅Pokemon Go需要的基本配置文件数据,用户无需自行采取任何行动。
在Google和Niantic按照其声明中描述的行动跟进后,这将完全解决这个问题。据我们所知,Google计划找到已发行的令牌并"降级"它们,同时Niantic不再为新用户请求这些权限。
感谢阅读,如果您有任何进一步细节,请告诉我们!请花点时间查看您通过Google安全检查授权的应用程序,并启用双因素认证。
更新 2016年7月12日:看起来我们在"UberAuth"令牌方面走在了正确的轨道上。这个OAuth scope最初获得很少的访问权限,但可以通过一系列未文档记录的方法交换为新令牌,允许访问您Google账户中的所有数据,包括Gmail。更多细节:https://gist.github.com/arirubinstein/fd5453537436a8757266f908c3e41538
更新 2016年7月13日:Pokemon Go应用已更新,现在仅请求基本权限。Niantic的声明表明他们将自行取消所有错误发行的令牌的权限,但如果您想抢先一步,请转到您的应用权限,撤销Pokemon Go访问权限,退出Pokemon Go应用,然后重新登录。
如果您喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News