加载中…
个人资料
HorseLuke
HorseLuke
  • 博客等级:
  • 博客积分:0
  • 博客访问:115,854
  • 关注人气:33
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

与伟哥商榷《绑定第三方oauth账号登陆的安全风险》

(2015-12-19 18:26:38)
标签:

杂谈

先上结论,以方便不想看后续分析的朋友:

(1)任何与第三方的任何形式对接,都要全盘考虑任何可能的攻击风险,然后做可以预见且控制的妥协。

(2)任何涉及信息交换的行为,都会充满各方力量的博弈:平台方(或信息提供方)想的是要成为垄断控制方;而应用方(或信息使用方)则拼命要维持独立性。

(这里仅以帐号对接为例,但实际上还有其他形式的对接业务,比如,统计数据交换等)

=================

由于加班,思路有些乱,想到哪里写哪里了~

伟哥(@呆子不开口 )写了篇《绑定第三方oauth账号登陆的安全风险》(http://weibo.com/p/1001603921767675649900 ),其威胁面是同意的,但解决方案可能有些不太符合业务需求。目前和伟哥比较接近的,国内似乎就只有万网了(其实都已经不存在了),被阿里云收购后对其第三方登录进行改造,“2013年2月起不再支持支付宝和微博快捷登录方式创建云帐号。如您之前通过支付宝或微博登录过,但未绑定过云帐号的,将不再支持支付宝和微博帐号登录”,但这个解决方案对大部分网站并没有普遍适用性。

OAuth之所以打败OpenId,是因为前者在提供和后者等同的账号认证(Authencation)外,同时给予了后者所没有的资源授权(Authorization),这对业务深度整合十分重要,但同时也出现了攻击面被扩大的问题。对OAuth的攻击探讨,很多聚焦在夺取应用方账号权上,这并不奇怪,OAuth 2.0非常依赖应用方的安全实现确实也是一个问题。但是否说把OAuth限制到账号导入层面然后断开联系就解决问题呢?用户觉得麻烦不同意,平台觉得违反平等互利协定也不会给你这么干,即使在安全层面来看,似乎也站不住脚:强制用户输入密码登录不给第三方登录有到处泄露密码风险,支付宝多账号绑定无法解除的争论还犹言在耳(这个还不是OAuth)。如果应用方并不敢保证自己的账户数据安全能好过平台方,接入第三方登录其实能免掉相当程度的账户数据泄露风险。

那么,要解决由于于第三方对接而导致的越权控制账号,怎么办?一句话,没有银弹。应用方需要记住一点并贯彻始终:任何与第三方的任何形式对接,都要全盘考虑任何可能的攻击风险,然后做可以预见且控制的妥协。

-------------分割线开始------------------

这里说一个自己尝试在做的实践方案,当然这里面问题也是多多。方案细说主要有三点:

(1)第三方登录时应用方在系统内自动创建影子账号,该影子账号无法通过系统已有的登陆模式(如密码等方式)登录(参见linux的/sbin/nologin账号)。若用户未绑定该应用内的其他账号、或者进行解绑操作,则关联挂载到此影子账号进行操作。

(2)用户需要进行绑定操作时,必须创建应用方的正式账号、或者关联已有应用方账号;并且,密码为可选项,不要求必须填写。

(3)第三方操作绑定和解绑都留日志。

以上三点都需要改造账号系统甚至是其他关联系统,而且有时非常不容易。好处是这样做对控制登录粒度和行为审计会有较正面的作用。但坏处也有不少,尤其是在业务阻力上:

争议点一,平台挂了怎么登陆?解决方法是完善找回密码功能,防止平台挂掉的时候不可用。

争议点二,涉及影子账号和正式账号之间的信息共享和转移怎么办?比如说,订单数据共享问题,难不成我关联了账号后,就看不了之前的订单数据么?这个的问题就非常大,目前最简单的做法是不转移数据,独立就独立,然后在交互上,做一些手段来让用户察觉不出这个问题。

争议点三,如果好像雅虎中国邮箱那样,平台倒了怎么办?又或者平台封杀了你怎么办?影子账号真的成了影子?这个,以后再说吧……

-------------分割线结束------------------

其实除了传统的攻击关注点之外,第三方对接登录带来的另一个可能的隐患,是关联隐私的泄露。不过这个是应用方所喜欢的,而且平台方最后一定会作出妥协。比如注重隐私注重到爆的微信,不同微信公众号的OpenID是不一样的,理论上来讲不能跨微信公众号追踪到用户;但是在“微信矩阵”理念的实践影响下,微信最终还是妥协,搞出了所谓UnionID机制。然并卵,即便没有UnionID,只要没有绑定微信公众号的需求,那还是可以在不同的网页上用同一个OpenID做追踪,具体实现非常简单,此处省略若干字。

最后感慨一下,从根本上来讲,OAuth的实践,或者延伸一点,任何涉及信息交换的行为,都会充满各方力量的博弈:平台方(或信息提供方)想的是要成为垄断控制方;而应用方(或信息使用方)则拼命要维持独立性。这点在其他行业把主角和资源交换物(比如说权钱交易)给替换一下也成立,比如最近万科VS宝能。

在这样的情况下,第三方接入就会出现伟哥所觉得的各种林林总总的怪事。最近的一次经历也大致能囊括这些怪事:某平台方审核时,会死扣登录入口,入口不显眼就不给过,且不允许应用方自行设置密码登录。但运营对独立性十分介意,只提出一句“某开放平台都死了,你也能保证它也不死吗?”,开发表示,运营说得很有道理竟无从反驳,于是乎只好在过审时隐藏设置密码,过后再恢复。如果细心的的话,完全可以指出双方的若干安全问题,但实际上来看,这里面谁都很无奈。

所以说到底,这终究还是资本的游戏。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有