一個關於Facebook使用者個人和好友隱私資訊洩露的漏洞
前言
大家好,在我的上一篇文章中,我分享了 ofollow,noindex" target="_blank">Chrome瀏覽器中存在的一個Facebook使用者資訊洩露漏洞 ,此後,在接下來的研究中,我又發現了另外一個關於Facebook的漏洞,利用該漏洞,可允許其它網站提取出Facebook受害者使用者和其好友的個人隱私資訊。
需要說明的是,我於2018年5月發現了該漏洞,出於漏洞影響的嚴重性,我及時上給了Facebook,並與其安全團隊協作進行了緩解開發,最終實現了成功修復。由於該漏洞還暫未完全公開,以下內容只針對漏洞原因和危害作出解釋。
漏洞發現
在之前對Chrome瀏覽器的研究過程中,我認真瀏覽了Facebook的一些線上搜尋結果,我注意到,在其每個線上搜尋結果的HTML裡,都會包含一個iframe元素,這個iframe元素很可能是Facebook用來進行內部跟蹤的標記。因為我自己對iframes的一些特別跨域行為(cross-origin)算是有些瞭解,於是,我想到了以下測試技巧:
首先,讓我們來看一下Facebook中內建的搜尋功能頁面,該功能有一個後端介面,用來接收一些搜尋引數的GET請求,像大多數搜尋介面一樣,這裡介面後端沒有設定跨站請求偽造(cross-site request forgery,CSRF)保護機制,也就是說,使用者可以通過URL來共享搜尋結果頁面。
大多數情況下,我們的Facebook使用者是不會圍繞這個搜尋介面來執行多種操作的,當然,也就發現不了這背後的CSRF攻擊。但事實是,與大多Web元素不同,iFrame會部份曝露於一些跨域文件中(cross-origin document),與搜尋式的CSRF問題一結合,就會發現其中存在的漏洞問題。
以下是一個漏洞驗證PoC視訊,結合Facebook中的搜尋介面,利用漏洞,我可以發現Facebook受害者 使用者對其他Facebook使用者主頁的點贊情況:
演示視訊:
漏洞利用過程
要使這種攻擊有效,我們需要欺騙Facebook受害者使用者去開啟我們的構造的惡意網站,讓他點選網站上的任何地方,這種地方可以嵌入一些JavaScript指令碼進行迷惑,之後,用構造成型跳出的Facebook搜尋頁面彈出窗或新標籤,引誘使用者執行我們想要的任何搜尋查詢結果。
因為頁面中iframe元素的個數代表了搜尋結果數量,這樣的話,我們可以呼叫訪問fb.frames.length介面屬性,對iframe執行一個簡單的記數。
通過操縱Facebook的圖譜搜尋(Facebook’s Graph Search)功能,我們可以構造一些反映Facebook受害者使用者的個人隱私資訊搜尋請求。
Facebook’s Graph Search:為Facebook的圖譜搜尋功能,並不是圖片搜尋的意思,這是Facebook於2013年初推出並加入的新型搜尋功能,與常規搜尋引擎的關鍵詞搜尋不同,Graph Search能夠判斷使用者希望獲取的資訊,直接向用戶提供有關人、照片、地方和興趣等問題的答案。Facebook的圖譜搜尋算是一種社交圖譜搜尋。
比如,針對英文版Facebook的圖譜搜尋場景,在漏洞利用中,我用“pages I like named `Imperva`”搜尋一些目標Facebook受害者使用者贊過的主頁使用者,通過偽造帶有迷惑性質的POC頁面,引誘受害者使用者執行搜尋,返回我們想要收集的資訊,這樣就可以間接對其個人隱私的竊取。
延伸利用
類似的構造搜尋,我們還可以構造諸如竊取Facebook受害者使用者好友資訊的操作,例如,用“my friends who like Imperva”的構造搜尋,來檢視受害者使用者列表中點贊過Imperva主頁的好友有哪些。當然,其它有意思的構造搜尋如下:
檢視當前Facebook受害者是否有來自以色列的好友:
https://www.facebook.com/search/me/friends/108099562543414/home-residents/intersect
檢視當前Facebook受害者是否有名為“Ron”的好友:
https://www.facebook.com/search/str/ron/users-named/me/friends/intersect
檢視當前Facebook受害者是否在某國或某個地方拍了照片:
https://www.facebook.com/search/me/photos/108099562543414/photos-in/intersect
檢視當前Facebook受害者是否有伊斯蘭朋友:
https://www.facebook.com/search/me/friends/109523995740640/users-religious-view/intersect
檢視當前Facebook受害者是否有伊斯蘭朋友且住在英國
檢視當前Facebook受害者是否在朋友圈釋出了包含某個特定詞彙的帖子:
檢視當前Facebook受害者是否有朋友,在朋友圈釋出了包含某個特定詞彙的帖子: https://www.facebook.com/search/posts/?filters_rp_author=%7B%22name%22%3A%22author_friends%22%2C%22args%22%3A%22%22%7D&q=cute%20puppies
由於攻擊者可以通過執行以下程式碼來控制Facebook的視窗位置屬性,所以,無需開啟新的彈出視窗或標籤即可重複構造搜尋過程:
對適用場景來說,這種攻擊對移動端使用者的潛在威脅可能較大,因為移動端的搜尋標籤可能很容易被使用者在後臺忽略或丟失,這樣就會讓攻擊者執行多種組合構造搜尋,當用戶在觀看手機視訊或閱讀文章時,個人隱私資訊就被攻擊者悄悄竊取。
總結
簡而言之,該漏洞暴露了Facebook受害者使用者及其朋友的興趣和活動相關資訊,即使Facebook受害者使用者在其隱私設定中,設定此類資訊只有自己或朋友可見,這種攻擊仍然有效。
*參考來源: imperva ,clouds編譯,轉載請註明來自FreeBuf.COM