授權的濫用:OAuth談的權限問題與信息隱憂

2012-05-14 15:08:55來源:極客公園作者:

去年3Q大戰(zhàn)之后,開放幾乎成為了最熱的詞匯,隨后的國內(nèi)互聯(lián)網(wǎng)看似進入了開放平臺的“蜜年”,各種基于開放平臺的應用和社會化登錄也隨之出現(xiàn)。

去年3Q大戰(zhàn)之后,開放幾乎成為了最熱的詞匯,隨后的國內(nèi)互聯(lián)網(wǎng)看似進入了開放平臺的“蜜年”,各種基于開放平臺的應用和社會化登錄也隨之出現(xiàn)。

將自身的產(chǎn)品和服務與大網(wǎng)站平臺對接,不僅能省去注冊等繁瑣工作,不用為儲存和傳輸大量的用戶賬號信息而煩惱,還可以迅速的帶來流量、用戶資源,并得到更好的推廣。而對于平臺來說通過 API 支持協(xié)議可以得到很多的應用接入,可以為用戶提供更多更好的服務。這對開發(fā)者和平臺提供商來說是雙贏的局面。因此,QQ 登錄、各種微博登錄和 SNS 登陸也似乎成為了第三方網(wǎng)站或應用的必備按鈕。(騰訊宣布其QQ登錄已經(jīng)成為國內(nèi)最大第三方帳號登錄體系。)

本來利用已有的賬號登陸這些第三方網(wǎng)站和應用是一件好的事情,因為從體驗上來說可以方便用戶,但是國內(nèi)這些“一鍵登陸”真的是用戶想的那樣“一鍵登陸”嗎?我們看到一個網(wǎng)站就用我們的賬號登陸難道沒有隱患嗎? 這些”登陸“的背后的關鍵是什么?

如果你有夠細心的話會發(fā)現(xiàn)所有登陸基本都是彈出一個對應對話框,其地址欄中也都會包含有“OAuth”字樣。這說明,其當前采用的是 OAuth 協(xié)議。在目前,無論是國外還是國內(nèi),絕大部分都是采用 OAuth 協(xié)議來完成在第三方網(wǎng)站或應用的登陸的。

OAuth 是什么?它有什么優(yōu)點呢?為什么都采用 OAuth?

OAuth(開放授權)是一個開放標準 ,允許用戶讓第三方應用訪問該用戶在某一網(wǎng)站上存儲的私密的資源(如照片,視頻,聯(lián)系人列表),而無需將用戶名和密碼提供給第三方應用。

授權的濫用:OAuth談的權限問題與信息隱憂

OAuth 的優(yōu)點

OAuth 不會使第三方網(wǎng)站或應用接觸到用戶的帳號信息(如用戶名與密碼),授權后的 http 通信中也不再傳輸用戶信息而是以數(shù)字簽名和訪問令牌(Access Token)取代,即使截到數(shù)據(jù)包,也無法還原出用戶的登錄信息。這是OAuth 最大的優(yōu)點,也是它得以逐漸成為現(xiàn)在通用的授權標準的原因。

OAuth 被普及的原因

對用戶來說方便、安全;對中小第三方網(wǎng)站和應用來說,OAuth 可以使它們能夠得到用戶基本信息外的其他信息資料和賬戶部分使用權限;對大網(wǎng)站平臺來說,OAuth 可以完美的解決用戶的賬戶安全和開發(fā)者授權的平衡問題。因此 OAuth 協(xié)議確定后就獲得了包括國外 Twitter、Facebook 和 Google 等認可,之后在國內(nèi)也得到了有效跟進。

OAuth 授權的信息隱患

凡是只有其利就有其弊,OAuth 也不例外。為什么在安全上看似完美無缺的 OAuth 都有信息隱患呢?

1. 被濫用了的 OAuth 授權

OAuth 是一個授權(authorization)協(xié)議而不是認證(authentication)協(xié)議,因此,對于 OAuth 來說最大的信息隱患就是其本身。

OAuth 提供的是權限分配而非認證。在國內(nèi)大多數(shù)網(wǎng)站的一鍵登陸根本沒有去區(qū)分認證和授權 ,全部混淆為授權。本身用類似 OpenID 的簡單認證即可完成的事情卻非要走授權。而一鍵登陸在給用戶帶來便利的同時也帶來了另一個弊端:用戶變得越來越不在意自己的賬號。因為 OAuth 協(xié)議本身的安全給了我們一種假象:別人獲取不到我的賬號密碼,所以我的賬戶很安全。我們要明白,授權本身的實質相當于系統(tǒng)為第三方網(wǎng)站/應用開了一個后門,而你的授權就是允許它們可以走后門進來獲取你的隱私資料和使用權限。

打個比方就是,雖然它們不知道你家的鎖長什么樣,也沒有你家的鑰匙,但是人家就是能進得去你家,還可以看你家的電話簿,用你家的電話給你的親朋好友打電話等。很多其實扮演的只是抄水表的角色,在門外瞅一眼即可,但是偏偏國內(nèi)那些平臺們把水表安到了你家里面,這樣很多抄水表的就可以打著抄水表的借口從后門去你家向你的親朋好友宣傳它水表抄的好,想繼續(xù)去你親朋好友家抄水表。

譬如一些小游戲和星座信息之類的第三方網(wǎng)站和應用,無一例外都會要求我們授權給它們我們的好友關系、生日、相冊、評論、甚至地理信息位置。對于我們來說,個人信息的安全不僅僅是我們的用戶名和密碼,那些“被授權”的都是信息安全的一部分,甚至是最重要的部分。前幾天通過 QQ 圈子我們也了解到了這些信息有多重要。

你授權的網(wǎng)站/應用越多,意味著越多的網(wǎng)站和應用能夠接觸到你的賬戶資料并擁有部分使用權限,也意味著隱患越多。雖然它們并沒有獲取到的你的賬戶密碼,雖然你之后從未登陸過或使用過它們,但是,除非你去隱藏很深的后臺設置里面取消它們的權限,否則它們是一直能夠接觸到你的賬戶資料并擁有你賬戶的部分使用權限的。

某種程度上說,OAuth 對我們個人信息安全來說是一扇隱形的窗戶,而且這個窗戶還是默認永久開放的。

2. OAuth 使用的不規(guī)范

在很多時候,出問題的環(huán)節(jié)往往不是技術,而是背后使用技術的人。

1. 平臺 OAuth 部署不規(guī)范

OAuth 部署是否規(guī)范,例如有無強制使用 https 加密,有無強制部署 OAuth 2.0。對移動應用的授權有無注意應用會自建瀏覽器,有無注意在信息回傳過程中的信息防護,這些都是需要考據(jù)的問題。OAuth 協(xié)議本身沒有問題,但是對協(xié)議的用途是否規(guī)范值得商榷。

事實上,各開放平臺之間的技術差異很大,因此每個平臺使用并不是相同版本的協(xié)議,有 OAuth 1.0、OAuth 2.0 或混合的技術體系(甚至還有繼續(xù)使用不安全的 Basic Auth)。此外,如果你去翻看一下國內(nèi)各個開放平臺的開發(fā)文檔就會發(fā)現(xiàn),雖然 OAuth 整體流程大致類似,但是對于授權的定義各家有各家的標準,對待開發(fā)者的態(tài)度各不相同,對授權的限制也是各家有各家的標準 ,對用戶的賬號保護也是各有各的說法。

例如某家開發(fā)平臺上對待涉及自身利益的時候用“嚴禁”“禁止”字眼,而涉及用戶賬號利益的時候就變成了“不應”、“不鼓勵” 等字樣。再例如,對未審核應用、待審核應用和未通過審核應用的限制,國內(nèi)只有兩家平臺對使用人數(shù)進行限制外,其他各家都只是稍微限制了一下調(diào)用頻率次數(shù)和不顯示來源而已。

綜合來看,國內(nèi)的關于OAuth協(xié)議標準的實施部署是一個開發(fā)者和平臺綜合博弈的結果。

2. 應用開發(fā)者不自律

OAuth 的安全性相當一部分需要依靠應用開發(fā)者的高度自律,不該有的權限不去申請,但是事實并非如此。正常情況下,平時我們所用的 90% 的應用只需用只讀權限即可,但是相反的是,只有 5% 的應用只擁有只讀權限。對于開發(fā)者開說,盡量獲取到用戶賬戶的使用權限似乎是一種”追求“,而不管用不用得到。這不僅讓人想起了 Android 移動應用上的普遍高權限。

3. 平臺審核是否仔細

第三方網(wǎng)站或應用要接入平臺需要通過平臺的審核,審核是一層對開發(fā)者的把關。因為平臺競爭的原因,各家審核標準并不一致,實際操作更是誰也不清楚?傮w來看,強勢的平臺限制嚴格,弱勢的平臺因為要吸引開發(fā)者所以很多事情睜一只眼閉一只眼。

4. 用戶對 OAuth 的不設防

OAuth 協(xié)議的實施很類似微軟平臺下軟件的安裝,用戶經(jīng)常在一步步的點擊中默認”被授權“,因為國內(nèi)大多數(shù)用戶暫時還沒有注意防護自己賬戶信息和權限的習慣。

我們該注意些什么?該怎么做?

1. 防止 OAuth 釣魚登陸界面

注意觀察彈出窗口是否為官方登陸域名,要謹防假冒釣魚。

2. 授權之前的三思

在你將自己的賬號權限授權給一個應用之前,先查清楚應用開發(fā)者的具體信息和他們的隱私保護條款,知道自己到底授權給了誰,到底給誰授予了哪些權限。

3. 定時清理你的第三方應用授權

要注意清理你的第三方應用授權,將那些無關緊要的或已經(jīng)不再使用的第三方網(wǎng)站或應用取消授權,關上那扇隱形的窗戶。

4.授權后注意其來源

授權第三方網(wǎng)站或應用后要注意查看其有沒有通過官方平臺的審核,如果來源顯示來自”未審核應用“或類似字樣后盡量先取消其授權,待審核通過后再進行授權。

未來,國內(nèi)應該分區(qū)開認證和授權,給用戶減少不必要的隱患,期待國內(nèi)出現(xiàn)一個統(tǒng)一的OpenID(不像國外 OpenID 那樣繁瑣,或許類似 BrowserID 的東西),而不像現(xiàn)在,雖然號稱一鍵登陸,但實際上許多第三方網(wǎng)站/應用在用戶授權登錄后,依舊有二次登錄或重新注冊等操作。

雖然目前這些隱患只是表現(xiàn)為偶爾的偷偷關注或偷偷以用戶賬號發(fā)一些廣告,并沒有爆發(fā)出嚴重的事件。但是想想那么多隱私信息和部分權限控制在那么多的第三方應用或平臺上就有點不寒而栗的感覺。

服務的整合本來是大勢所趨,也是未來方向,但是國內(nèi)這些將認證和授權混為一談的做法使得我們不僅沒有更使得我們可以更方便更安全更省事的去管理,去獲得服務,反而使我們的賬戶更加混亂,更埋下了信息安全的隱患。對此我們一定要提高警惕。

贊助商鏈接: