OAuth2.0忽略state參數(shù)引發(fā)的CSRF漏洞

在開發(fā) OAuth認(rèn)證服務(wù)器 的時(shí)候狸驳,開發(fā)者的安全意識不高的話,很可能會忽略 state 參數(shù),從而導(dǎo)致 出現(xiàn) csrf 漏洞跷坝。

但是在說明這個(gè)state參數(shù)前,有必要了解大部分程序員所寫的綁定OAuth賬號流程碉碉,由于綁定流程很多柴钻,這里挑最常見的“用戶在第三方網(wǎng)站A上登錄后,通過Authorization code方式綁定微博流程(也是這個(gè)漏洞常見的場景流程):

1垢粮、用戶甲到第三方網(wǎng)站A登錄后贴届,到了綁定頁面。此時(shí)還沒綁定微博蜡吧。綁定頁面提供一個(gè)按鈕:“綁定微博”(地址a: http://aaa.com/index.php?m=user_3rd_bind_sina )

2毫蚓、用戶甲點(diǎn)擊地址a,程序生成如下地址b(為方便大家查看昔善,參數(shù)部分均未urlencode以【】包含顯示): https://api.weibo.com/oauth2/authorize?client_id=【9999999】&redirect_uri=【http://aaa.comindex.php?m=user_3rd_bind_sina_callback】&response_type=【code】

3元潘、用戶甲瀏覽器定向到地址b,授權(quán)該應(yīng)用君仆。

4翩概、授權(quán)服務(wù)器根據(jù)傳遞的redirect_uri參數(shù),組合認(rèn)證參數(shù)code生成地址c: http://aaa.comindex.php?m=user_3rd_bind_sina_callback&code=【809ui0asduve】

5返咱、用戶甲瀏覽器返回到地址c钥庇,完成綁定。

咋看起來咖摹,好像沒啥問題评姨,畢竟code也是不可預(yù)測嘛。但是各開發(fā)者有沒有想過萤晴,地址c實(shí)質(zhì)上是和當(dāng)前登錄用戶一點(diǎn)關(guān)系都沒有的吐句,因?yàn)榈刂穋只能證明微博用戶信息胁后,但無法證明網(wǎng)站A的用戶信息。所以漏洞就此產(chǎn)生了——假設(shè)有用戶乙和丙嗦枢,同時(shí)發(fā)起綁定請求攀芯,登錄到不同的微博賬號,然后在第5步后打住净宵,互相交換地址c敲才,會是什么結(jié)果?答案就是用戶乙綁定了用戶丙的微博择葡,用戶丙綁定了用戶乙的微博了…...攻擊者的目標(biāo)紧武,其實(shí)就是要獲取地址c,然后誘騙已登錄網(wǎng)站A的受害者點(diǎn)擊敏储,從而改變了綁定關(guān)系阻星。

為應(yīng)對這種情況,Oauth 2.0引入了state參數(shù)已添。這個(gè)參數(shù)在許多開放平臺上也會有提及妥箕,比如新浪微博的 Oauth2/authorize(http://open.weibo.com/wiki/Oauth2/authorize ): 用于保持請求和回調(diào)的狀態(tài),在回調(diào)時(shí)更舞,會在Query Parameter中回傳該參數(shù)畦幢。開發(fā)者可以用這個(gè)參數(shù)驗(yàn)證請求有效性,也可以記錄用戶請求授權(quán)頁前的位置缆蝉。這個(gè)參數(shù)可用于防止跨站請求偽造(CSRF)攻擊宇葱。然而大多數(shù)開發(fā)者(包括許多官方SDK),會忽略使用這個(gè)state參數(shù)刊头。所以黍瞧,大面積的網(wǎng)站(不乏大站)確實(shí)存在這種漏洞。

但是利用條件也有點(diǎn)苛刻原杂。

攻擊者必須了解第三方網(wǎng)站可能的綁定特性印颤,否則攻擊極可能失敗。絕大多數(shù)網(wǎng)站都是一個(gè)網(wǎng)站賬號只能綁定一個(gè)OAuth提供方賬號(比如微博帳號)穿肄。這種特性年局,導(dǎo)致這個(gè)漏洞在絕大多數(shù)網(wǎng)站根本無法快速撒網(wǎng),只能定向劫持未綁定的用戶到攻擊者OAuth賬號上被碗,而攻擊一次后某宪,這個(gè)賬號必須解綁才能用于別的攻擊,導(dǎo)致利用難度增大不少锐朴。

攻擊者還必須了解被定向劫持用戶的上網(wǎng)習(xí)慣。在這個(gè)漏洞中蔼囊,絕大部分都需要受害者在第三方網(wǎng)站上處于登錄狀態(tài)焚志,否則攻擊基本失效衣迷。

攻擊者還必須了解第三方網(wǎng)站、以及用戶在該第三方網(wǎng)站上存在的利益〗闯辏現(xiàn)在的攻擊有許多都是帶有利益的壶谒,如果是電商類的話,網(wǎng)站本身的金錢利益驅(qū)動可能存在膳沽,但又需要判斷該用戶在該網(wǎng)站是否存在高價(jià)值汗菜,這就增加了額外的工作量;如果只是娛樂類網(wǎng)站挑社,除了言論相關(guān)和用戶所擁有的網(wǎng)站管理權(quán)陨界,我還想不出有什么可以吸引攻擊者去定向攻擊。

以上各種條件造就了在攻擊實(shí)施環(huán)節(jié)更像是那種一對一的淘寶或者QQ釣魚手段痛阻、或者放入針對高價(jià)值目標(biāo)的社工(或APT)一環(huán)中菌瘪。就前者而言,淘寶阱当、QQ甚至各類熱門游戲的釣魚量之大俏扩,安全研究者們應(yīng)該更清楚;就后者而言弊添,實(shí)質(zhì)還有其它更有效地手段录淡。那么,這個(gè)漏洞油坝,還能冠以“最大規(guī)模帳號劫持”嗎嫉戚?我相信,地下產(chǎn)業(yè)者看到后只會輕蔑的笑一下免钻,然后繼續(xù)埋頭干活

對于開發(fā)者而言彼水,要修復(fù)這個(gè)漏洞,就是必須加入state參數(shù)极舔,這個(gè)參數(shù)既不可預(yù)測凤覆,又必須可以充分證明client和當(dāng)前第三方網(wǎng)站的登錄認(rèn)證狀態(tài)存在關(guān)聯(lián)(如果存在過期時(shí)間更好)。其實(shí)拆魏,隨機(jī)算一個(gè)字符串盯桦,然后保存在session,回調(diào)時(shí)檢查state參數(shù)和session里面的值渤刃,就滿足要求了拥峦。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市卖子,隨后出現(xiàn)的幾起案子略号,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玄柠,死亡現(xiàn)場離奇詭異突梦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)羽利,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門宫患,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人这弧,你說我怎么就攤上這事娃闲。” “怎么了匾浪?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵皇帮,是天一觀的道長。 經(jīng)常有香客問我户矢,道長玲献,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任梯浪,我火速辦了婚禮捌年,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挂洛。我一直安慰自己礼预,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布虏劲。 她就那樣靜靜地躺著托酸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柒巫。 梳的紋絲不亂的頭發(fā)上励堡,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機(jī)與錄音堡掏,去河邊找鬼应结。 笑死,一個(gè)胖子當(dāng)著我的面吹牛泉唁,可吹牛的內(nèi)容都是我干的鹅龄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼亭畜,長吁一口氣:“原來是場噩夢啊……” “哼扮休!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拴鸵,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤玷坠,失蹤者是張志新(化名)和其女友劉穎蜗搔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侨糟,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碍扔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年瘩燥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秕重。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡厉膀,死狀恐怖溶耘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情服鹅,我是刑警寧澤凳兵,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站企软,受9級特大地震影響庐扫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仗哨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一形庭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厌漂,春花似錦萨醒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旨椒,卻和暖如春晓褪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背综慎。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工涣仿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寥粹。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓变过,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涝涤。 傳聞我的和親對象是個(gè)殘疾皇子媚狰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 原文地址:http://www.sanjinbest.com/blog/b6ec839d56c04ca387b95...
    木子小三金閱讀 8,576評論 0 37
  • 作為第三方應(yīng)用,為了提升用戶體驗(yàn)阔拳,往往會提供第三方社交賬號登錄或者綁定的功能崭孤,這背后使用到的關(guān)鍵技術(shù)是OAuth認(rèn)...
    獨(dú)自旅行閱讀 16,744評論 16 33
  • http://www.91ri.org/tag/fuzz-bug 通常情況下类嗤,有三種方法被廣泛用來防御CSRF攻擊...
    jdyzm閱讀 4,179評論 0 5
  • 秋照大地,連綿不斷的秋雨更為秋增添了濃濃的哀愁辨宠,寒冷的天氣像是到了冬季一樣遗锣。他好像不是一個(gè)收獲的季節(jié)了,而是溫暖的...
    柚girl閱讀 382評論 0 3
  • 一段故事: 有這樣一對閨蜜嗤形,從小學(xué)到工作精偿,從稚嫩到青蔥,從青蔥到成熟赋兵。十四歲那年笔咽,在公園的躺椅上,閑聊著以后各自...
    小漫Hsu閱讀 276評論 3 3