当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(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标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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机制的调用:

mTencent = Tencent.createInstance(appid, ctxContext);
省略部分代码
private void onClickLogin() {
if (!mTencent.isSessionValid()) {
IUiListener listener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) {
updateLoginButton();
}
};
mTencent.login(this, SCOPE, listener);
} else {
mTencent.logout(this);
updateLoginButton();
}
}


而在开放平台体系中,各app的appid实际是公开的,所以非常容易拿到其他app的appid。
我们可以自己写一个恶意app,在其中假冒某高权限app的appid引导用户授权,此时,SSO组件会引导用户对appid所属的应用进行授权确认, 此时用户一般不太会关注其授权的应用名字,而完成授权后,即拿到该用户的access_token,进而可以调用开放平台的各接口。

漏洞证明:

不可多言(实际是懒得找高权限app)

修复方案:

参考facebook的方案,要求开发者导出签名并配置到开放平台。

版权声明:转载请注明来源 我真的不是V@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2013-04-01 11:32

厂商回复:

感谢反馈,已在处理中。

最新状态:

暂无


漏洞评价:

评论

  1. 2013-05-13 11:09 | 凤凰 ( 路人 | Rank:15 漏洞数:6 | 涅磐)

    类似的问题貌似有人在blog中提过,移动端不便于查看授权页面的url