漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2013-020790
漏洞标题:开放平台单点登录SSO方案设计缺陷导致钓鱼风险
相关厂商:腾讯
漏洞作者: 我真的不是V
提交时间:2013-03-27 23:56
修复时间:2013-05-11 23:57
公开时间:2013-05-11 23:57
漏洞类型:账户体系控制不严
危害等级:高
自评Rank:15
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2013-03-27: 细节已通知厂商并且等待厂商处理中
2013-04-01: 厂商已经确认,细节仅向厂商公开
2013-04-11: 细节向核心白帽子及相关领域专家公开
2013-04-21: 细节向普通白帽子公开
2013-05-01: 细节向实习白帽子公开
2013-05-11: 细节向公众公开
简要描述:
一般来说,开放平台的oauth协议设计会使得B网站(app)不能够伪造成A网站(app)来引导用户进行授权,并进一步得到用户对A网站(app)授权的access_token。这个机制会通过redirect_uri/refer等来进行控制。
流行开放平台都设计了手机app的SSO机制,使得用户在手机端已安装指定app(如Qzone)的前提下,再使用第三方app,通过腾讯互联开放平台登录时,不需要重复登录。其实现原理是Qzone app获得第三方app的appid,并替代完成授权操作。
然而此机制设计考虑不完善,导致B app可伪造为A app向用户要求授权,并拿到access_token。
详细说明:
一般来说,开放平台的oauth协议设计会使得B网站(app)不能够伪造成A网站(app)来引导用户进行授权,并进一步得到用户对A网站(app)授权的access_token。这个机制会通过redirect_uri/refer等来进行控制。
流行开放平台都设计了手机app的SSO机制,使得用户在手机端已安装指定app(如Qzone)的前提下,再使用第三方app,通过腾讯互联开放平台登录时,不需要重复登录。其实现原理是Qzone app获得第三方app的appid,并替代完成授权操作。
然而此机制设计考虑不完善,导致B app可伪造为A app向用户要求授权,并拿到access_token。
详情:
腾讯的Android SSO demo(http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91SDK%E4%B8%8B%E8%BD%BD),仅凭一个appid参数即可初始化SSO机制的调用:
而在开放平台体系中,各app的appid实际是公开的,所以非常容易拿到其他app的appid。
我们可以自己写一个恶意app,在其中假冒某高权限app的appid引导用户授权,此时,SSO组件会引导用户对appid所属的应用进行授权确认, 此时用户一般不太会关注其授权的应用名字,而完成授权后,即拿到该用户的access_token,进而可以调用开放平台的各接口。
漏洞证明:
不可多言(实际是懒得找高权限app)
修复方案:
参考facebook的方案,要求开发者导出签名并配置到开放平台。
版权声明:转载请注明来源 我真的不是V@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2013-04-01 11:32
厂商回复:
感谢反馈,已在处理中。
最新状态:
暂无