3 名来自香港中文大学的安全研究人员于上周揭露,基于令牌的授权开放标准 OAuth 2.0 含有一个执行瑕疵,若再加上开发人员未留意程式与该标准的安全互动,将允许骇客挟持使用者帐号。在所测试的 600 款行动程式中,约有 41.2% 拥有该漏洞,殃及 10 亿个用户帐号。
研究报告名为「轻松登入10亿个基于OAuth 2.0的行动程式帐号」(Signing into One Billion Mobile App Account Effortlessly with OAuth2.0),研究人员打造了一个攻击程式,检查了中国及美国市场最受欢迎的600款行动程式,这些程式都支援基于OAuth 2.0的SSO,发现其中的42.1%允许远端骇客在使用者完全不需与之互动也未察觉的情况下远端登入使用者的行动程式,危及10亿个帐号。
报告发现支援新浪账号登入的中国应用有约70%账号容易被劫持,相比之下Facebook是15.25%,Google是8%。存在漏洞的移动应用下载量超过24亿,大部分存在漏洞的移动应用使用的是新浪的登录,研究人员没有公佈应用的名字,只是透露了这些移动应用的类型和下载量,通过这些讯息还是有可能大概猜测出哪些应用存在漏洞。
研究员指出,一来 OAuth2.0 已被行动程式的系统设定及操作环境所覆盖,二来OAuth2.0并未定义基于SSO程序时行动程式与后端伺服器互动时所需的安全要求,再加上身分供应商所打造的各种以OAuth2.0为基础的客制化API缺乏使用上的安全准则,而出现了安全缺口。
迄今已有许多主流身分供应商採用 OAuth 2.0 以提供单一登入(Single-Sign-On,SSO)服务,包括 Google、Facebook 与新浪网等,同时也有大量的行动程式支援 SSO。
Facebook 本身在一定程度上缓解了此攻击,因为它自 2014 年 5 月以来一直支援证书锁定,因此不接受遭篡改的讯息。但是仍有一个顾虑的,研究员了解到,为了向后兼容,Facebook 使用公共用户 ID 识别早期的移动应用使用者,因此,如果用户在2014 年 5 月之前通过 OAuth 登入应用,他们仍然会被这攻击影响。
报告建议身份提供者,如Facebook,Google 和新浪改善他们对开发人员的安全建议,信任应该完全来自身份提供商的伺服器,而不是由客户端应用程式发出的。 此外,研究员建议身份提供者发出私有标识符而不是全球通用标识符,身份提供者还应该通过诸如OAuth 2.0和OpenID Connect之类的协议来提高应用的安全测试并把 SSO 包括在内。