来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] 本节目由@imlonghao 独家赞助复测。(片头)云端存储,快捷方便。(同期声顾客:通过网盘我就可以在安卓看小说了)抓包修改,任意进入。(同期声安全研究者:改几个字节,你的隐私...
本节目由@imlonghao 独家赞助复测。
(片头) 即将播出《云安全的认证困惑》。 (以上文体仿CCTV新闻频道《新闻调查》,在此致谢。) =====================分===隔===符 =================
详细说明:
金山快盘手机客户端,在使用微博OAuth 2.0授权信息换取自己认证信息的过程中,一次性犯下两类常见的逻辑设计缺陷,导致可以任意进入他人快盘账号;但前提是,快盘帐号需要绑定微博。 具体犯下的错误有: (问题二)使用错误的OAuth授权信息来用于认证交换:使用了uid来认证用户信息,而不是access token
而这个漏洞还反映出一个问题:Oauth 2.0作为一个框架协议,其中有许多安全细节实际上需要开发者自行去实现,如果平台方将安全细节全部包揽在身上显然是不合适的;但如果将安全细节下放到应用开发者自行保证,那么就很容易出现实现不周而反噬双方,特别在认证传递和交换上会是一个重灾区。如何划分,成为了一个值得研究的后续方向。但无论我们如何争论,用户和黑客已经等不及了…… =====================分===隔===符==================
漏洞证明:
问题一证明: 修改难度中低,因为需要知道受害者在其它应用的access token。此时,一般需要诱骗受害者授权攻击者指定的应用,才可以完成攻击。 (微博授权过程中,我使用了新浪uid 1780xxx登录;然后在下一步登录成功后截获,并将新浪uid 1780xxx在快盘获取的access token“2.00tRjxx”和uid“1780xxx”,替换成新浪uid 1454xxx在其它应用获取的access token“2.00isUxx”和uid“1454xxx”,成功)
问题二证明: 使用错误的OAuth授权信息获取,通过拦截要往快盘后端服务器api的数据,将新浪uid替换,即可进入他人网盘。 修改难度低,只需要知道新浪uid即可,同时也需要知道该新浪uid曾登录过快盘。 (微博授权过程中,我使用了新浪uid 1780xxx登录;然后在快盘往后端服务器api发送数据前截获,并替换成新浪uid 1791xxxx,成功)
=====================分===隔===符 修复方案:
危害评定: 就快盘而言,综合认定为“高”。原因如下: (1)问题一中,要获取用户的access token比较容易,只需要注册第三方应用并诱导用户授权即可。 (2)问题二中,要获取用户的新浪uid极容易,只需要微博搜索即可获知。 (3)定向攻击容易,只需要修改数据包;最终成功率极高,并且只要用户不修改密码,即有永久进入权限。 (4)快盘的用户基数大。 (5)是否有用于access token的来源查询、证明或签名校验,要视乎开放平台的提供情况。如果有,只需要在服务器端修复一般可解决新绑定和登录的漏洞。 修复建议: (1)手机服务器端,在接收手机客户端的平台认证信息、以换取自家服务的认证凭据时,不能使用没有授权信息的uid来认证换取,而是必须使用具有授权信息的access token来进行;并且必须要对access token进行来源查询、证明或签名校验。 具体而言,已查证的国内各开放平台已知的接口文档如下: (A)新浪微博开放平台“授权查询”: http://open.weibo.com/wiki/Oauth2/get_token_info (B)QQ登录:通用参数中似乎已经进行了此问题的防御(时间问题未验证): (C)百度开放平台“判定当前用户是否已经为应用授权”(此接口本人未验证是否可防御此问题,请咨询百度开放平台): (D)人人网“判断用户是否已对App授权”(此接口本人未验证可否可防御此问题,请咨询人人开放平台): http://wiki.dev.renren.com/wiki/Users.isAppUser 其它开放平台,建议进行相关问题的咨询。 (2)对所有存入的绑定access token进行核查,发现access token中的新浪uid和绑定新浪uid不一致、非快盘appkey授权的access token、过期access token等异常情况均需要全部撤消,要求这些快盘用户重新授权登录。 (3)各开放平台加强教育,提醒开发者注意上述问题 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com