APP下载

基于OAuth单点登录系统的安全性分析和评估

2017-09-20君,张

电子科技 2017年9期
关键词:令牌单点攻击者

陈 君,张 生

(上海理工大学 光电信息与计算机工程学院,上海200093)

基于OAuth单点登录系统的安全性分析和评估

陈 君,张 生

(上海理工大学 光电信息与计算机工程学院,上海200093)

现今,不少用户使用QQ、微信、微博帐号登录第三方网站,其中大多数服务器供应商都采用了OAuth 2.0安全协议,但该协议是基于单点登录的,因此存在不少安全隐患。为了进一步提高系统安全性,文中通过测试第三方网站帐号登录、登出的HTTP流量状况,模拟了网站被攻击过程,从中提取日志并分析结果,对基于OAuth 2.0安全协议的资源提供方和第三方网站的安全性进行了评估。文中针对不同的问题提出了相应的对策。

安全隐患; OAuth 2.0协议;SSO系统;资源提供方

为确保各网站平台能够安全地分享其个性化内容,OAuth 2.0协议[1]为用户提供了授权服务,使用户无需确认登录认证信息就能够获取第三方应用的网站资源。该协议适用于多种环境,当第三方网站需要使用用户身份信息进行授权时,OAuth协议便可实现网络单点登录(Signal Sign-on,SSO),具体的过程为:资源托管方(如腾讯)作为身份提供商(identity provider,IdP),负责保存和鉴定用户的身份信息,而第三发网站作为依赖方(Relying Party, RP),负责鉴定和授权用户的身份信息,从而为用户提供服务。

现今,诸如腾讯、新浪、谷歌和微软等各大服务提供商已经拥有数以亿计的基于OAuth SSO的用户账户,这一惊人的数字吸引了不少RP网站,希望从中获取更广的用户群。除了获取用户的基本资料数据,RP还可以利用这些信息来制定特定的服务,比如传送消息、个性推荐和活动反馈等,通过整合这些服务,以进一步丰富用户的社交体验。基于OAuth的SSO解决方案为RP网站提供了更多的商业选择。但相应地,用户的个人信息也存在被泄露的危险,导致网络欺诈,发送垃圾邮件或恶意软件消息等情况的出现。

尽管目前已有方法证明了这一协议是安全的,但在其他非正式的情况下,这一协议是否安全仍然有待考证。本文将探索和解决以下几个问题:

(1)目前,影响OAuth 2.0 SSO系统安全性的威胁有哪些?

(2)这些威胁有多普遍?如果它们很罕见,那么这些漏洞将仅局限于学术讨论的范畴;

(3)产生这些威胁的原因是什么?如何一种缓解这些威胁所带来的影响?

1 OAuth 2.0协议

OAuth协议是一种开放的标准API授权协议,该协议是在其他专利协议(比如谷歌的AuthSub、雅虎的BBAuth以及Flickr API等)的基础上建立的。该协议可以确保用户授权给第三方应用,并使第三方应用可在权限范围内获取用户在某个网站上存储的部分资源。授权的过程并不需要用户的长期凭证,用户可根据自身需求选择是否同意该应用获取其个人信息和数据。尽管OAuth的初衷是设计成一个授权协议,但OAuth 2.0仍被用于不少网页SSO的部署中。之后,用户在IdP(比如腾讯、新浪、谷歌和微软)主机上的身份信息将被授权,并作为一种网页资源用于验证当前的SSO信息。

OAuth 2.0与其前身相比,主要致力于改善并降低客户端开发的复杂度。首先,它从规范要求中去除了加密需求(即数字签名),并将SSL作为系统默认的方式用于RP和IdP之间的通信,因此协议不需要存储临时令牌证书,性能得到改善。其次,OAuth可根据所处的安全环境分成不同的流,灵活性有所提升。

基于OAuth的SSO系统以浏览器的重定向作为基础,即RP将用户浏览器重定向至IdP,在用户信息重定向回RP网站之前完成与用户的互动。IdP鉴定用户,并为用户确认RP,然后征求用户的许可最终完成用户的授权,此时,RP可以获得用户相关的信息和资源。一旦这一请求的许可获得授权,那么用户就会重定向回RP,并生成一个访问令牌用来表示授权许可和授权时长。接着,RP通过使用访问令牌来调动IdP发布的网页API去获取用户的资料。

OAuth 2.0规范定义了RP获得访问令牌的两种流:服务器流(亦可称为“认证码授权”)和客户端流(亦可称为隐式授权)。前者适用于服务器编程逻辑中获得访问令牌的网页应用;而客户端流则适用于在网页浏览器中运行的Java Script应用。

2 对立模型

在对立模型中,攻击者的目标是在未经授权的情况下从IdP和RP网站上获取受害者用户的个人数据。因此,根据攻击的性质,将对立模型分为以下两种:

(1)网页攻击:攻击者在一个良性网站上发布信息(包含图片、样式表等静态内容),建立恶意网站,以垃圾邮件或广告的形式在网络上发布恶意链接,发掘RP网站上的网页漏洞。由网页攻击者发出的恶意内容可使浏览器用GET和POST的方法发送HTTP请求给RP和IdP网站,从而执行攻击者内置在其中的外挂脚本;

(2)被动的网络攻击:攻击者能够使用嗅探器嗅探浏览器和RP之间(如不安全的WiFi无线网络)的网络流量,使用“嫁接驱动器(drive-by-pharming)”攻击并改变受害者家庭路由器内DNS服务器的设置。

3 研究方法

使用两种研究方法对OAuth SSO中代表性的样本进行了调查,分为探索性研究和证实性研究。其中,探索性研究用于分析用户在使用OAuth SSO登录时可能遇见的潜在威胁;证实性研究用于评估这些威胁是否普遍存在。

3.1 探索性研究

初期,通过执行一个样本RP来评估每个IdP,观察并分析IdP所特有的机制,该样本RP不受“OAuth威胁模型”影响。发现每个测试的IdP都使用JavaScript SDK来简化RP开发的过程。该库可以执行各种客户端流,完全由OAuth协议自身免费地为开发者们提供了一些列的功能和事件处理机制。

之后,使用QQ的测试账号对15家RP的注册、登陆和登出的HTTP流量进行了分析和调查。通过网络追踪,用一些攻击手段对这15家RP进行攻击,从而确认这些RP中尚未发现的漏洞。

3.2 证实性研究

为了使评估更为完善,避免因人工检测引起的错误,开发了一系列半自动化的用于评估计算机安全隐患的测试工具,如图1所示。刚开始,评估者采用传统的SSO功能,通过附加插件的火狐浏览器登陆RP并对其进行评估。该插件记录分析了登录过程中传输至浏览器的HTTP请求和响应。为了模拟一个真实的攻击场景,专门制作一个网站,用来从日志中取出分析结果,并将这些数据放入各个评估模型中(对应图1的A1~A5)。对于每次发生的异常,会对其进行手动检测并找出原因。

图1中,A1-窃取访问令牌;A2-通过XSS盗取访问令牌;A3-模仿;A4-会话交换;A5-强制登陆CSRF。

图1 评估工具的结构

4 评估结果

通过追踪SSO证书的信息流,从中分析得出了多个安全隐患。对于依赖客户端流的RP,发现,RP服务器端的登陆点为了验证当前SSO使用者,会要求客户端流的脚本对SSO证书进行转换,这一转换过程存在结构上的缺陷。若登陆点并非是由SSL保护的,那么包括访问令牌、授权代码和用户信息在内的SSO证书,可在传输的中途被攻击者所截获。此外,如果登陆点不能保证SSO证书的授权的合法性,那么模仿攻击和会话交换也会成为可能。还发现,许多RP使用“自动授权批准”来提升用户的体验,但是易用性会使绝大多数RP在通过XSS从IdP那获取访问令牌时更容易受到攻击,攻击者可以使用CSRF来破坏受害者RP会话从中获利。用自己设计的评估工具对96家QQ的RP网站进行了评估,表1展示了最终的评估结果。

表1 每种威胁攻击RP概率百分比

注:SSL T-传统登录方式下的SSL;SSL S-登录端点受SSL保护;A1-访问令牌窃听;A2-通过XSS盗窃访问令牌;A3-模仿;A4-会话交换;A5-强制登录CSRF。

5 建议

从以上分析和评估结果可以得出,RP网站需要额外的对策来保证SSO证书的保密性、真实性和完整性。发现,造成这些安全隐患的根本原因在于简单性、易用性和安全性之间的权衡。为提高IdP和RP的有效性和实用性,提出了以下要求:

(1)向后兼容性。保护机制必须与现有的OAuth协议相兼容,浏览器不得对其进行修改;

(2)逐步采用。在不打破IdP与RP已有功能的前提下,逐步对IdP和RP分别进行改进;

(3)简单性。提出的对策应易于实现和部署。由于简单性是OAuth2.0被广泛采用的主要原因,因此对策不能要求RP执行加密操作(如HMAC、公钥/私钥加密)。

如表2所示,针对不同环境不同威胁提出了简单的建议,包括防止特定的威胁,客户端流和服务器流上RP的设计,以及是否需要提供一个完整的或是局部的防护机制等。

表2 排名前10的由RP发出的请求

注:A1-访问令牌窃听;A2-通过XSS盗窃访问令牌;A3-模仿;A4-会话交换;A5-强制登录CSRF;C-客户端流;S-服务器流;√-完整的;Δ-部分的。

6 结束语

正如信用卡可以减少商品和服务交易的摩擦,SSO系统同样可以缓解因使用网页所引起的问题。随着基于OAuth2.0协议的SSO系统快速的完善,为了使用户能够信任该协议,需要对系统自身的安全性有一定的自信,从而保证个人隐私和敏感信息的交换过程能够顺利进行。但是发现尽管基于OAuth2.0协议的SSO系统对于RP开发者来说简单易上手,但背后却隐藏着各种安全隐患。

经过分析发现,这些安全威胁主要是由协议自身设计引起的,普遍让大众所接受的简单性的背后却是众多不为人所知的安全隐患。OAuth2.0为公共客户端提供支持,但却不能保证客户端的信息安全,放弃数字签名和密码而选择使用不记名的令牌来验证用户信息,这一设定使得OAuth2.0协议完全可以由浏览器来控制。为了缓解客户端流的压力,改善用户体验,IdP提供SDK库和可用的功能。当复杂性被协议简单化后,这些设计反而会导致协议更易受到攻击。

而客户端流本身就存在结构上的缺陷。首先,访问令牌是通过浏览器传输的,它们可被跨站点脚本窃取,在传输的过程也可被嗅探器截获。其次,由于浏览器和RP服务器间存在结构上的差异,攻击者通过窃听或伪造的SSO证书假装受害者,甚至可以使用CSRF攻击RP网站获取用户数据。为了保护SSO用户,IdP应提供默认的安全功能给RP,以减小受攻击面,每次授权的过程均要将用户考虑在内,并改善系统安全性、用户安全和隐私保护。对于RP,建议他们尽可能使用服务器流,并保护SSO证书的机密性和真实性。此外,JavaScript SDK在OAuth SSO系统中扮演者重要的角色,日后会对这些库进行彻底的严格的检查,从而找出OAuth2.0协议下隐藏的安全威胁以及造成这些威胁的原因。

[1] 张挺,耿继秀.Web环境下的SSO实现模式的研究[J].计算机仿真,2005,22(8):128-131.

[2] 朱菁菁.基于Web内容管理系统的企业信息共享与发布平台的实现[D].杭州:浙江大学,2011.

[3] 任栋,刘连忠.一种Web应用环境下安全单点登录模型的设计[J].计算机工程与应用,2002,38(24):174-176.

[4] 杨仁凑,吴谋凡.企业门户单点登录技术的研究[J].电力信息与通信技术,2011, 9(6):63-67.

[5] 宿宏毅.校园网统一身份认证的研究与实现[J].内蒙古石油化工,2011,37(4):80-81.

[6] 李凡,王流一.一种基于票据的单点登录协议设计与实现[J].计算机工程与科学,2012,34(2):41-44.

[7] 孟有意.基于单点登录面向服务的系统整合方案研究与应用[D].广州:暨南大学,2012.

[8] 张家友.单点登录安全方案研究[D].北京:北京邮电大学,2009.

[9] 时子庆,刘金兰,谭晓华.基于OAuth2.0的认证授权技术[J].计算机系统应用,2012,21(3):260-264.

[10] 朱蔚恒,周伟,龙舜.开放平台解决方案及其安全策略研究[J].计算机工程,2012,38(12):265-267.

[11] 张卫全,胡志远.浅析作用于Web2.0安全防范的OpenID和OAuth机制[J].通信管理与技术,2011(2):15-18.

[12] 刁仁宏,陈运,郑丰华. 基于SAML的Web单点登录系统安全模型设计[J]. 微计算机信息,2009,25(21):75-77.

[13] 陈伟,杨伊彤,牛乐园,等.改进的OAuth2.0协议及其安全性分析[J].计算机系统应用,2014,23(3):25-30.

[14] 王焕孝,顾纯祥,郑永辉,等.开放授权协议OAuth2.0的安全性形式化分析[J].信息工程大学学报,2014,15(2):141-147.

[15] 魏成坤,刘向东,石兆军,等.OAuth2.0协议的安全性形式化分析[J].计算机工程与设计,2016,37(7):1746-1751.

Security Evaluations and Countermeasures of Single Sign-on Systems Based on OAuth Protocol

CHEN Jun,ZHANG Sheng

(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)

Nowadays, many users use QQ, WeChat, micro-blog to register and login in third party sites, the majority of server providers are using a sso(single-sign-on) system based OAuth2.0 security protocol, so there are many security problems. In order to improve the security of systems, In this paper, we test HTTP flow of log-in/out of the third party websites, and simulate the attacked process of the websites. Then we evalute the security of the resource and the third party websites by analyzing results from obtaining logs. Finally, this paper proposes countermeasures to deal with different safe problems.

sercuity problems; OAuth2.0;SSO systems; resource providers

2016- 11- 20

陈君(1992-),男,硕士研究生。研究方向:基于OAuth2.0系统的单点登录。

10.16180/j.cnki.issn1007-7820.2017.09.045

TN915.08;TP393.07

A

1007-7820(2017)09-165-04

猜你喜欢

令牌单点攻击者
称金块
机动能力受限的目标-攻击-防御定性微分对策
历元间载波相位差分的GPS/BDS精密单点测速算法
基于路由和QoS令牌桶的集中式限速网关
超薄异型坯连铸机非平衡单点浇铸实践与分析
动态令牌分配的TCSN多级令牌桶流量监管算法
正面迎接批判
数字电视地面传输用单频网与单点发射的效果比较
16吨单点悬挂平衡轴的优化设计
有限次重复博弈下的网络攻击行为研究