陳 君,張 生
(上海理工大學(xué) 光電信息與計算機工程學(xué)院,上海200093)
基于OAuth單點登錄系統(tǒng)的安全性分析和評估
陳 君,張 生
(上海理工大學(xué) 光電信息與計算機工程學(xué)院,上海200093)
現(xiàn)今,不少用戶使用QQ、微信、微博帳號登錄第三方網(wǎng)站,其中大多數(shù)服務(wù)器供應(yīng)商都采用了OAuth 2.0安全協(xié)議,但該協(xié)議是基于單點登錄的,因此存在不少安全隱患。為了進一步提高系統(tǒng)安全性,文中通過測試第三方網(wǎng)站帳號登錄、登出的HTTP流量狀況,模擬了網(wǎng)站被攻擊過程,從中提取日志并分析結(jié)果,對基于OAuth 2.0安全協(xié)議的資源提供方和第三方網(wǎng)站的安全性進行了評估。文中針對不同的問題提出了相應(yīng)的對策。
安全隱患; OAuth 2.0協(xié)議;SSO系統(tǒng);資源提供方
為確保各網(wǎng)站平臺能夠安全地分享其個性化內(nèi)容,OAuth 2.0協(xié)議[1]為用戶提供了授權(quán)服務(wù),使用戶無需確認登錄認證信息就能夠獲取第三方應(yīng)用的網(wǎng)站資源。該協(xié)議適用于多種環(huán)境,當?shù)谌骄W(wǎng)站需要使用用戶身份信息進行授權(quán)時,OAuth協(xié)議便可實現(xiàn)網(wǎng)絡(luò)單點登錄(Signal Sign-on,SSO),具體的過程為:資源托管方(如騰訊)作為身份提供商(identity provider,IdP),負責(zé)保存和鑒定用戶的身份信息,而第三發(fā)網(wǎng)站作為依賴方(Relying Party, RP),負責(zé)鑒定和授權(quán)用戶的身份信息,從而為用戶提供服務(wù)。
現(xiàn)今,諸如騰訊、新浪、谷歌和微軟等各大服務(wù)提供商已經(jīng)擁有數(shù)以億計的基于OAuth SSO的用戶賬戶,這一驚人的數(shù)字吸引了不少RP網(wǎng)站,希望從中獲取更廣的用戶群。除了獲取用戶的基本資料數(shù)據(jù),RP還可以利用這些信息來制定特定的服務(wù),比如傳送消息、個性推薦和活動反饋等,通過整合這些服務(wù),以進一步豐富用戶的社交體驗?;贠Auth的SSO解決方案為RP網(wǎng)站提供了更多的商業(yè)選擇。但相應(yīng)地,用戶的個人信息也存在被泄露的危險,導(dǎo)致網(wǎng)絡(luò)欺詐,發(fā)送垃圾郵件或惡意軟件消息等情況的出現(xiàn)。
盡管目前已有方法證明了這一協(xié)議是安全的,但在其他非正式的情況下,這一協(xié)議是否安全仍然有待考證。本文將探索和解決以下幾個問題:
(1)目前,影響OAuth 2.0 SSO系統(tǒng)安全性的威脅有哪些?
(2)這些威脅有多普遍?如果它們很罕見,那么這些漏洞將僅局限于學(xué)術(shù)討論的范疇;
(3)產(chǎn)生這些威脅的原因是什么?如何一種緩解這些威脅所帶來的影響?
OAuth協(xié)議是一種開放的標準API授權(quán)協(xié)議,該協(xié)議是在其他專利協(xié)議(比如谷歌的AuthSub、雅虎的BBAuth以及Flickr API等)的基礎(chǔ)上建立的。該協(xié)議可以確保用戶授權(quán)給第三方應(yīng)用,并使第三方應(yīng)用可在權(quán)限范圍內(nèi)獲取用戶在某個網(wǎng)站上存儲的部分資源。授權(quán)的過程并不需要用戶的長期憑證,用戶可根據(jù)自身需求選擇是否同意該應(yīng)用獲取其個人信息和數(shù)據(jù)。盡管OAuth的初衷是設(shè)計成一個授權(quán)協(xié)議,但OAuth 2.0仍被用于不少網(wǎng)頁SSO的部署中。之后,用戶在IdP(比如騰訊、新浪、谷歌和微軟)主機上的身份信息將被授權(quán),并作為一種網(wǎng)頁資源用于驗證當前的SSO信息。
OAuth 2.0與其前身相比,主要致力于改善并降低客戶端開發(fā)的復(fù)雜度。首先,它從規(guī)范要求中去除了加密需求(即數(shù)字簽名),并將SSL作為系統(tǒng)默認的方式用于RP和IdP之間的通信,因此協(xié)議不需要存儲臨時令牌證書,性能得到改善。其次,OAuth可根據(jù)所處的安全環(huán)境分成不同的流,靈活性有所提升。
基于OAuth的SSO系統(tǒng)以瀏覽器的重定向作為基礎(chǔ),即RP將用戶瀏覽器重定向至IdP,在用戶信息重定向回RP網(wǎng)站之前完成與用戶的互動。IdP鑒定用戶,并為用戶確認RP,然后征求用戶的許可最終完成用戶的授權(quán),此時,RP可以獲得用戶相關(guān)的信息和資源。一旦這一請求的許可獲得授權(quán),那么用戶就會重定向回RP,并生成一個訪問令牌用來表示授權(quán)許可和授權(quán)時長。接著,RP通過使用訪問令牌來調(diào)動IdP發(fā)布的網(wǎng)頁API去獲取用戶的資料。
OAuth 2.0規(guī)范定義了RP獲得訪問令牌的兩種流:服務(wù)器流(亦可稱為“認證碼授權(quán)”)和客戶端流(亦可稱為隱式授權(quán))。前者適用于服務(wù)器編程邏輯中獲得訪問令牌的網(wǎng)頁應(yīng)用;而客戶端流則適用于在網(wǎng)頁瀏覽器中運行的Java Script應(yīng)用。
在對立模型中,攻擊者的目標是在未經(jīng)授權(quán)的情況下從IdP和RP網(wǎng)站上獲取受害者用戶的個人數(shù)據(jù)。因此,根據(jù)攻擊的性質(zhì),將對立模型分為以下兩種:
(1)網(wǎng)頁攻擊:攻擊者在一個良性網(wǎng)站上發(fā)布信息(包含圖片、樣式表等靜態(tài)內(nèi)容),建立惡意網(wǎng)站,以垃圾郵件或廣告的形式在網(wǎng)絡(luò)上發(fā)布惡意鏈接,發(fā)掘RP網(wǎng)站上的網(wǎng)頁漏洞。由網(wǎng)頁攻擊者發(fā)出的惡意內(nèi)容可使瀏覽器用GET和POST的方法發(fā)送HTTP請求給RP和IdP網(wǎng)站,從而執(zhí)行攻擊者內(nèi)置在其中的外掛腳本;
(2)被動的網(wǎng)絡(luò)攻擊:攻擊者能夠使用嗅探器嗅探瀏覽器和RP之間(如不安全的WiFi無線網(wǎng)絡(luò))的網(wǎng)絡(luò)流量,使用“嫁接驅(qū)動器(drive-by-pharming)”攻擊并改變受害者家庭路由器內(nèi)DNS服務(wù)器的設(shè)置。
使用兩種研究方法對OAuth SSO中代表性的樣本進行了調(diào)查,分為探索性研究和證實性研究。其中,探索性研究用于分析用戶在使用OAuth SSO登錄時可能遇見的潛在威脅;證實性研究用于評估這些威脅是否普遍存在。
3.1 探索性研究
初期,通過執(zhí)行一個樣本RP來評估每個IdP,觀察并分析IdP所特有的機制,該樣本RP不受“OAuth威脅模型”影響。發(fā)現(xiàn)每個測試的IdP都使用JavaScript SDK來簡化RP開發(fā)的過程。該庫可以執(zhí)行各種客戶端流,完全由OAuth協(xié)議自身免費地為開發(fā)者們提供了一些列的功能和事件處理機制。
之后,使用QQ的測試賬號對15家RP的注冊、登陸和登出的HTTP流量進行了分析和調(diào)查。通過網(wǎng)絡(luò)追蹤,用一些攻擊手段對這15家RP進行攻擊,從而確認這些RP中尚未發(fā)現(xiàn)的漏洞。
3.2 證實性研究
為了使評估更為完善,避免因人工檢測引起的錯誤,開發(fā)了一系列半自動化的用于評估計算機安全隱患的測試工具,如圖1所示。剛開始,評估者采用傳統(tǒng)的SSO功能,通過附加插件的火狐瀏覽器登陸RP并對其進行評估。該插件記錄分析了登錄過程中傳輸至瀏覽器的HTTP請求和響應(yīng)。為了模擬一個真實的攻擊場景,專門制作一個網(wǎng)站,用來從日志中取出分析結(jié)果,并將這些數(shù)據(jù)放入各個評估模型中(對應(yīng)圖1的A1~A5)。對于每次發(fā)生的異常,會對其進行手動檢測并找出原因。
圖1中,A1-竊取訪問令牌;A2-通過XSS盜取訪問令牌;A3-模仿;A4-會話交換;A5-強制登陸CSRF。
圖1 評估工具的結(jié)構(gòu)
通過追蹤SSO證書的信息流,從中分析得出了多個安全隱患。對于依賴客戶端流的RP,發(fā)現(xiàn),RP服務(wù)器端的登陸點為了驗證當前SSO使用者,會要求客戶端流的腳本對SSO證書進行轉(zhuǎn)換,這一轉(zhuǎn)換過程存在結(jié)構(gòu)上的缺陷。若登陸點并非是由SSL保護的,那么包括訪問令牌、授權(quán)代碼和用戶信息在內(nèi)的SSO證書,可在傳輸?shù)闹型颈还粽咚孬@。此外,如果登陸點不能保證SSO證書的授權(quán)的合法性,那么模仿攻擊和會話交換也會成為可能。還發(fā)現(xiàn),許多RP使用“自動授權(quán)批準”來提升用戶的體驗,但是易用性會使絕大多數(shù)RP在通過XSS從IdP那獲取訪問令牌時更容易受到攻擊,攻擊者可以使用CSRF來破壞受害者RP會話從中獲利。用自己設(shè)計的評估工具對96家QQ的RP網(wǎng)站進行了評估,表1展示了最終的評估結(jié)果。
表1 每種威脅攻擊RP概率百分比
注:SSL T-傳統(tǒng)登錄方式下的SSL;SSL S-登錄端點受SSL保護;A1-訪問令牌竊聽;A2-通過XSS盜竊訪問令牌;A3-模仿;A4-會話交換;A5-強制登錄CSRF。
從以上分析和評估結(jié)果可以得出,RP網(wǎng)站需要額外的對策來保證SSO證書的保密性、真實性和完整性。發(fā)現(xiàn),造成這些安全隱患的根本原因在于簡單性、易用性和安全性之間的權(quán)衡。為提高IdP和RP的有效性和實用性,提出了以下要求:
(1)向后兼容性。保護機制必須與現(xiàn)有的OAuth協(xié)議相兼容,瀏覽器不得對其進行修改;
(2)逐步采用。在不打破IdP與RP已有功能的前提下,逐步對IdP和RP分別進行改進;
(3)簡單性。提出的對策應(yīng)易于實現(xiàn)和部署。由于簡單性是OAuth2.0被廣泛采用的主要原因,因此對策不能要求RP執(zhí)行加密操作(如HMAC、公鑰/私鑰加密)。
如表2所示,針對不同環(huán)境不同威脅提出了簡單的建議,包括防止特定的威脅,客戶端流和服務(wù)器流上RP的設(shè)計,以及是否需要提供一個完整的或是局部的防護機制等。
表2 排名前10的由RP發(fā)出的請求
注:A1-訪問令牌竊聽;A2-通過XSS盜竊訪問令牌;A3-模仿;A4-會話交換;A5-強制登錄CSRF;C-客戶端流;S-服務(wù)器流;√-完整的;Δ-部分的。
正如信用卡可以減少商品和服務(wù)交易的摩擦,SSO系統(tǒng)同樣可以緩解因使用網(wǎng)頁所引起的問題。隨著基于OAuth2.0協(xié)議的SSO系統(tǒng)快速的完善,為了使用戶能夠信任該協(xié)議,需要對系統(tǒng)自身的安全性有一定的自信,從而保證個人隱私和敏感信息的交換過程能夠順利進行。但是發(fā)現(xiàn)盡管基于OAuth2.0協(xié)議的SSO系統(tǒng)對于RP開發(fā)者來說簡單易上手,但背后卻隱藏著各種安全隱患。
經(jīng)過分析發(fā)現(xiàn),這些安全威脅主要是由協(xié)議自身設(shè)計引起的,普遍讓大眾所接受的簡單性的背后卻是眾多不為人所知的安全隱患。OAuth2.0為公共客戶端提供支持,但卻不能保證客戶端的信息安全,放棄數(shù)字簽名和密碼而選擇使用不記名的令牌來驗證用戶信息,這一設(shè)定使得OAuth2.0協(xié)議完全可以由瀏覽器來控制。為了緩解客戶端流的壓力,改善用戶體驗,IdP提供SDK庫和可用的功能。當復(fù)雜性被協(xié)議簡單化后,這些設(shè)計反而會導(dǎo)致協(xié)議更易受到攻擊。
而客戶端流本身就存在結(jié)構(gòu)上的缺陷。首先,訪問令牌是通過瀏覽器傳輸?shù)?,它們可被跨站點腳本竊取,在傳輸?shù)倪^程也可被嗅探器截獲。其次,由于瀏覽器和RP服務(wù)器間存在結(jié)構(gòu)上的差異,攻擊者通過竊聽或偽造的SSO證書假裝受害者,甚至可以使用CSRF攻擊RP網(wǎng)站獲取用戶數(shù)據(jù)。為了保護SSO用戶,IdP應(yīng)提供默認的安全功能給RP,以減小受攻擊面,每次授權(quán)的過程均要將用戶考慮在內(nèi),并改善系統(tǒng)安全性、用戶安全和隱私保護。對于RP,建議他們盡可能使用服務(wù)器流,并保護SSO證書的機密性和真實性。此外,JavaScript SDK在OAuth SSO系統(tǒng)中扮演者重要的角色,日后會對這些庫進行徹底的嚴格的檢查,從而找出OAuth2.0協(xié)議下隱藏的安全威脅以及造成這些威脅的原因。
[1] 張挺,耿繼秀.Web環(huán)境下的SSO實現(xiàn)模式的研究[J].計算機仿真,2005,22(8):128-131.
[2] 朱菁菁.基于Web內(nèi)容管理系統(tǒng)的企業(yè)信息共享與發(fā)布平臺的實現(xiàn)[D].杭州:浙江大學(xué),2011.
[3] 任棟,劉連忠.一種Web應(yīng)用環(huán)境下安全單點登錄模型的設(shè)計[J].計算機工程與應(yīng)用,2002,38(24):174-176.
[4] 楊仁湊,吳謀凡.企業(yè)門戶單點登錄技術(shù)的研究[J].電力信息與通信技術(shù),2011, 9(6):63-67.
[5] 宿宏毅.校園網(wǎng)統(tǒng)一身份認證的研究與實現(xiàn)[J].內(nèi)蒙古石油化工,2011,37(4):80-81.
[6] 李凡,王流一.一種基于票據(jù)的單點登錄協(xié)議設(shè)計與實現(xiàn)[J].計算機工程與科學(xué),2012,34(2):41-44.
[7] 孟有意.基于單點登錄面向服務(wù)的系統(tǒng)整合方案研究與應(yīng)用[D].廣州:暨南大學(xué),2012.
[8] 張家友.單點登錄安全方案研究[D].北京:北京郵電大學(xué),2009.
[9] 時子慶,劉金蘭,譚曉華.基于OAuth2.0的認證授權(quán)技術(shù)[J].計算機系統(tǒng)應(yīng)用,2012,21(3):260-264.
[10] 朱蔚恒,周偉,龍舜.開放平臺解決方案及其安全策略研究[J].計算機工程,2012,38(12):265-267.
[11] 張衛(wèi)全,胡志遠.淺析作用于Web2.0安全防范的OpenID和OAuth機制[J].通信管理與技術(shù),2011(2):15-18.
[12] 刁仁宏,陳運,鄭豐華. 基于SAML的Web單點登錄系統(tǒng)安全模型設(shè)計[J]. 微計算機信息,2009,25(21):75-77.
[13] 陳偉,楊伊彤,牛樂園,等.改進的OAuth2.0協(xié)議及其安全性分析[J].計算機系統(tǒng)應(yīng)用,2014,23(3):25-30.
[14] 王煥孝,顧純祥,鄭永輝,等.開放授權(quán)協(xié)議OAuth2.0的安全性形式化分析[J].信息工程大學(xué)學(xué)報,2014,15(2):141-147.
[15] 魏成坤,劉向東,石兆軍,等.OAuth2.0協(xié)議的安全性形式化分析[J].計算機工程與設(shè)計,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系統(tǒng)的單點登錄。
10.16180/j.cnki.issn1007-7820.2017.09.045
TN915.08;TP393.07
A
1007-7820(2017)09-165-04