同源策略禁止读取位于_用浏览器缓存绕过同源策略(SOP)限制
本文分享的Writeup是作者在做Keybase.io的漏洞眾測中發現的SOP(同源策略)繞過漏洞,由于Keybase.io在用的多個API端點都啟用了CORS(跨域資源共享)機制,這種緩解同源策略的機制某種程度上克服了同源策略的嚴格限制,可以讓不同域服務器間實現交互請求。而作者在測試中發現了Keybase的CORS策略錯誤配置,利用這種缺陷,可以操縱瀏覽器緩存獲取用戶敏感數據信息。一起來看看。
Keybase 是一個開源的跨平臺即時通訊工具,在 PC 設備上支持 macOS、Linux 和 Windows 平臺,并提供 Chrome/Firefox 瀏覽器擴展。此外還提供 iOS 和 Android 版本。和眾多 IM 工具相比,Keybase 最吸引人的地方在于免費使用且不會受到任何廣告騷擾,最重要的是它還是一個開源項目。
在安全性和隱私方面,Keybase 采用了端到端的加密方式,承諾會為每個用戶的群組、文件和聊天等數據提供安全保護。如果這些數據上傳到云中,也會進行加密處理。
漏洞前言
Keybase在當前用戶向其他用戶發送加密消息時,可以讓當前用戶通過一個API接口去查找其他Keybase用戶,在該接口中提供了加密發送消息時所需的,如公鑰等其他Keybase用戶公共信息。這聽起來貌似是安全的,是吧?
該API接口的CORS(跨域資源共享)策略配置如下:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: Content-Type, Authorization, Content-Length, X-Requested-With
Access-Control-Allow-Credentials: false
在了解這個CORS配置問題之前,我們先來厘清幾個重要的知識點:
1、Access-Control-Allow-Origin中的星號“*”說明,任意外部域名都能與該API進行交互,執行跨域的請求調用;
2、Access-Control-Allow-Credentials中的“false”說明, 這里可能出于安全考慮,服務器不允許用戶在跨域請求中包含代表身份信息的Cookie。此處Access-Control-Allow-Headers暴露的用戶認證頭信息和接下來要講的漏洞關系不大,因為在查詢上述API接口中用不到。
漏洞情況
自然地,由于上述那個可查詢的API接口是公共的,所以在進行跨域請求時無需攜帶防御CSRF(跨站請求偽造)的token信息,因為用戶在使用Keybase.io時是經過身份驗證的,且他的會話信息存儲在了Cookie中,只有一些非常敏感的API接口會要求在請求頭中攜帶用戶認證頭token。
后來我發現,如果在消息加密驗證和發送環節,用上述那個查找其他Keybase用戶的API來查找我自己,哪怕輸入我名字中的一個字母,搜索結果中就會匹配到我的一些賬戶信息,其中竟然包含了我的一些敏感信息,如:
郵箱地址
我使用和剩余的邀請碼數量
計費信息
上一次登錄的時間戳、郵件形式的時間/日期驗證碼
TripleDes加密的PGP私鑰
但是,我并沒有私鑰存儲在Keybase上啊,之后我才了解到這是Keybase的在2015到2016年的一個遺留功能,現在已經不再實施。
經測試,一旦我在上述API請求中Cookie信息被刪除,我的個人敏感信息也不會再返回顯示。但是,我在服務端對該API的響應消息中發現了一個名為 ‘Etag’ 的消息頭,這是一個瀏覽器緩存標記頭,代表客戶端請求資源未發生變化,那么瀏覽器就可以從用戶的緩存內容中去取出然后響應給用戶。
Payload與漏洞利用
我想起Twitter用戶@Bitk_曾用過一個技巧,那就是用javascript的fetch API方法去強制從瀏覽器緩存中直接發起一個跨域請求,而恰巧 Keybase 在這里未曾對服務端響應頭部署過任何緩存控制頭(Cache-Control)措施,于是,我就在本地構造了如下的Payload
如果上述Payload請求能成功執行,可能就會返回響應一些Keybase的緩存信息,基于此,我執行了一個身份驗證請求,最終有效地返回了與我賬戶相關的一些個人敏感信息。如下:
為了確認Payload是否被成功執行,從下圖的瀏覽器請求信息中可以看到,fetch方法直接從瀏覽器緩存中讀取了我的身份信息。
漏洞上報及處理進程
2019.12.19 ? 漏洞初報
2019.12.19 ? 兩小時后,Keybase在響應消息中中加入了‘Cache-Control: no-store’
2019.12.24 ? Keybase獎勵了$1,500 公布漏洞
*參考來源:enumerated,clouds 編譯整理,轉載請注明來自 FreeBuf.COM
精彩推薦
總結
以上是默认站点為你收集整理的同源策略禁止读取位于_用浏览器缓存绕过同源策略(SOP)限制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打除皱针眼角淤青?
- 下一篇: 修改windows cmd f2快捷_第