姓名:田皓明
學(xué)號(hào):14310116025
轉(zhuǎn)載自公眾號(hào)CSDN技術(shù)頭條
【嵌牛導(dǎo)讀】:近日,兩個(gè)利用隱藏登錄表單收集登錄信息的網(wǎng)絡(luò)跟蹤服務(wù)被徹底披露,分別是Adthink(audienceinsights.net)和 OnAudience(behavioraorangine.com)。本文就將介紹第三方腳本如何利用瀏覽器的內(nèi)置登錄管理器(也稱為密碼管理器),在沒有用戶授權(quán)的情況下檢索和泄露用戶信息的。
【嵌牛鼻子】:隱私泄露,網(wǎng)絡(luò)跟蹤服務(wù),第三方腳本
【嵌牛提問】:第三方腳本是如何利用瀏覽器的內(nèi)置登錄管理器在沒有授權(quán)的情況下檢索和泄露用戶信息的?我們?cè)撊绾畏乐闺[私泄漏?
? ? ? ? 事實(shí)上,密碼管理器的潛在漏洞早已為人所知,過去的漏洞多是因?yàn)榭缯军c(diǎn)惡意腳本(XSS)攻擊所造成的的密碼泄漏。但在分析了五萬(wàn)個(gè)網(wǎng)站后,我們沒有發(fā)現(xiàn)密碼被竊取的情況,反而發(fā)現(xiàn)了跟蹤腳本被濫用,導(dǎo)致用于構(gòu)建跟蹤標(biāo)識(shí)符的電子郵件地址被大量提取。

? ? ? ? 上圖顯示了這一過程:首先,用戶填寫頁(yè)面上的登錄表單,并要求瀏覽器保存登錄信息(跟蹤腳本不在登錄頁(yè)面上顯示)。然后,用戶訪問含有第三方跟蹤腳本的同一網(wǎng)站上的另一個(gè)頁(yè)面。跟蹤腳本就會(huì)自動(dòng)插入一個(gè)不可見的登錄表單,該表單由密碼管理器自動(dòng)填寫。第三方腳本通過讀取填充的表單來檢索用戶的電子郵件地址,并將電子郵件地址發(fā)送給第三方服務(wù)器。
? ? ? ? ?所有主流瀏覽器都有內(nèi)置的登錄管理器,可以自動(dòng)保存并自動(dòng)填寫用戶名和密碼數(shù)據(jù),使登錄體驗(yàn)更加順暢。所以登錄表單自動(dòng)填寫,不管表單是否可見,而且通常不需要用戶交互。在我們的測(cè)試中,Chrome 不會(huì)自動(dòng)填充密碼字段,除非用戶點(diǎn)擊或觸摸頁(yè)面。所以,對(duì)于密碼管理器中保存的用戶名(通常是電子郵箱地址)和密碼,第三方腳本可以創(chuàng)建表單并自動(dòng)填充。
? ? ? ? ? 為什么要收集電子郵件地址?一方面,因?yàn)殡娮余]件地址是唯一的,是一個(gè)很好的跟蹤標(biāo)識(shí)符。另一方面,用戶的電子郵件地址幾乎不會(huì)改變,使用隱私瀏覽模式或切換設(shè)備清除 Cookie 也不能阻止跟蹤。此外,電子郵件地址可用于連接設(shè)備和移動(dòng)應(yīng)用程序中的在線配置文件,也可以作為 Cookie 清除前后瀏覽歷史記錄配置文件之間的鏈接。
通過密碼管理器獲取用戶信息
“智能廣告”和“大數(shù)據(jù)營(yíng)銷”是公司濫用密碼管理器來提取電子郵件地址的常見口號(hào),我們手動(dòng)分析了攻擊代碼的腳本,并驗(yàn)證了上述的攻擊步驟。

所分析的 100 萬(wàn)個(gè) Alexa 站點(diǎn)中位于前1110個(gè)的攻擊腳本
Adthink(audienceinsights.net)
Adthink 腳本注入后,會(huì)通過一個(gè)不可見的表單自動(dòng)閱讀電子郵件地址,再將電子郵件地址的 MD5、SHA1 和 SHA256 發(fā)送到它的服務(wù)器(secure.audienceinsights.net),然后 Adthink 觸發(fā)另一個(gè)包含電子郵件的 MD5 請(qǐng)求到數(shù)據(jù)中介 Acxiom(p-eu.acxiom-online.com)中去。
Adthink 腳本包含非常詳細(xì)的個(gè)人、財(cái)務(wù)、身體特征、興趣和人口統(tǒng)計(jì)等信息,包含且不限于出生日期、年齡、性別、國(guó)籍、身高、體重、BMI(體重指數(shù))、發(fā)色、瞳孔顏色、教育、職業(yè)、收入、寵物、住址、貸款、保險(xiǎn)、煙草、酒精等等。
OnAudience(behavioralengine.com)
? ? ? OnAudience 腳本最常出現(xiàn)在波蘭的網(wǎng)站,包括報(bào)紙、ISP 和在線零售商,OnAudience 腳本的 63 個(gè)站點(diǎn)中有 45 個(gè)具有 “.pl” 國(guó)家/地區(qū)代碼頂級(jí)域。
? ? ? 通過密碼管理器讀取電子郵件后,OnAudience 腳本會(huì)將電子郵件的 MD5 發(fā)回服務(wù)器,此外腳本還收集瀏覽器功能,包括插件、MIME 類型、屏幕尺寸、語(yǔ)言、時(shí)區(qū)信息、用戶代理字符串、操作系統(tǒng)和 CPU 信息。
? ? ? ? OnAudience 聲稱只使用匿名數(shù)據(jù),但電子郵件地址不是匿名的。如果攻擊者想要確定用戶是否在數(shù)據(jù)集中,他們可以對(duì)用戶的電子郵件地址進(jìn)行簡(jiǎn)單地散列,并搜索與該散列關(guān)聯(lián)的記錄。?

? ? ? ? ?這個(gè)攻擊并不是最新產(chǎn)生的,類似攻擊已經(jīng)在許多瀏覽器報(bào)告和學(xué)術(shù)論文中討論了至少 11 年,以前的討論大部分都集中在當(dāng)前功能的安全影響以及自動(dòng)填充功能的安全可用性權(quán)衡上。研究人員表示,跨站點(diǎn)腳本攻擊(XSS)也會(huì)從密碼管理器中竊取密碼,危險(xiǎn)性更高,原因有兩個(gè):與 Cookie 盜用相比,XSS 獲取的密碼可能具有更大的破壞性,因?yàn)橛脩敉ǔT诓煌恼军c(diǎn)重用密碼;XSS 攻擊可以在網(wǎng)站內(nèi)的任何頁(yè)面上竊取密碼,即使是不包含登錄表單的密碼,登錄管理者也可以擴(kuò)大攻擊面的密碼盜用。
那為什么 11 年來安全漏洞都沒有被解決呢?
? ? ? ? 網(wǎng)絡(luò)的安全性取決于同源策略。在系統(tǒng)模型中,不同來源(域或網(wǎng)站)的腳本和內(nèi)容被視為相互不信任的,并且瀏覽器保護(hù)它們免于相互干擾。但是,如果發(fā)布者直接嵌入第三方腳本,而不是將其隔離,則該腳本被視為來自發(fā)布者的來源。因此,發(fā)布者(及其用戶)完全失去了同一起源策略的保護(hù),也就沒有任何東西能阻止腳本泄露敏感信息。令人遺憾的是,直接嵌入是常見并且默認(rèn)的——這也就解釋了為什么之前發(fā)布的漏洞是合理存在的。
? ? ? ?但這種模式并不適合現(xiàn)實(shí)情況。發(fā)行商不完全信任第三方,因此沙箱隔離和直接嵌入都不合適:一個(gè)會(huì)限制功能,另一個(gè)會(huì)帶來隱私問題。通過反復(fù)研究我們發(fā)現(xiàn),第三方對(duì)他們的腳本行為不透明,而且無論如何,大多數(shù)發(fā)行商并沒有時(shí)間、也沒有這個(gè)技術(shù)知識(shí)來評(píng)估行為合理性。因此在可預(yù)見的將來,發(fā)行商與第三方之間還是會(huì)持續(xù)陷入這種不安的關(guān)系。
? ? ? 瀏覽器廠商的困境。很明顯,同源政策對(duì)于今天網(wǎng)絡(luò)上的信任關(guān)系是不適用的,雖然各種安全防御措施會(huì)有一定的幫助,但瀏覽器廠商還是會(huì)面臨一個(gè)兩難的問題:他們是否應(yīng)該防御這個(gè)類似的漏洞?或者是否該歸咎于嵌入第三方的錯(cuò)?
目前,瀏覽器供應(yīng)商多采用嵌入第三方來解決密碼管理員的問題,同時(shí)也將其視為發(fā)布者的責(zé)任承擔(dān)方。但總的來說,仍沒有根本性的方法來防御站點(diǎn)上存在的第三方訪問導(dǎo)致的敏感數(shù)據(jù)泄露問題。例如,如果用戶同時(shí)打開了同一站點(diǎn)的兩個(gè)選項(xiàng)卡,其中一個(gè)包含登錄表單,但不包含第三方,則第三方腳本可以“跨越”瀏覽器選項(xiàng)卡,并且很容易地泄露登錄信息。
發(fā)布者通過在網(wǎng)站中嵌入第三方,表示完全信任第三方——但是這種情況并不多見,瀏覽器廠商寧愿選擇并不完善的防御措施,例如,引入 HTTPOnly Cookie 屬性即是為了通過阻止腳本訪問關(guān)鍵 Cookie 來限制 XSS 攻擊造成的影響。
還有一個(gè)相關(guān)的因素:我們發(fā)現(xiàn)自動(dòng)填充不僅僅意味著一個(gè)安全漏洞,而且還是一個(gè)隱私威脅。盡管安全社區(qū)在一般情況下都非常喜歡保守性的解決方案,但是在網(wǎng)絡(luò)跟蹤方面,我們更愿意接受更多的啟發(fā)式防御措施,例如啟用攔截列表。
發(fā)布者、用戶和瀏覽器供應(yīng)商應(yīng)怎樣防止自動(dòng)填充導(dǎo)致的數(shù)據(jù)泄露?
? ? ? ?發(fā)布者通過將登錄表單放置在單獨(dú)的子域中來進(jìn)行隔離,從而防止自動(dòng)填寫,或者也可以使用像 Safeframe 這樣的框架來隔離第三方。雖然這種方法會(huì)增加工程復(fù)雜性,但借助安全框架,發(fā)布者腳本間可以更輕松地進(jìn)行通信,從而減少了沙盒的影響。不過與簡(jiǎn)單地將第三方腳本放入網(wǎng)頁(yè)相比,這些工作還需要發(fā)布者額外的工程設(shè)計(jì)。
? ? ? ? ?用戶可以安裝廣告攔截器或者跟蹤保護(hù)擴(kuò)展程序,防止第三方腳本進(jìn)行跟蹤。服務(wù)于這個(gè)腳本的域(behavioraorangine.com和audienceinsights.net)能被 EasyPrivacy 阻止列表阻止。
? ? ? ? 對(duì)于瀏覽器供應(yīng)商,最簡(jiǎn)單的防御措施是允許用戶禁用登錄自動(dòng)填寫功能,例如,F(xiàn)irefox 首選項(xiàng) signon.autofillForms 可以設(shè)置為 false 來禁用自動(dòng)填充憑證。有點(diǎn)技術(shù)含量的防御措施是在自動(dòng)填寫登錄表單之前要求用戶進(jìn)行交互,但這會(huì)給瀏覽器供應(yīng)商帶來額外的開銷。此外也可以增加 W3C Credential Management API,當(dāng)內(nèi)置密碼管理器自動(dòng)填充登錄信息時(shí),瀏覽器能夠顯示相應(yīng)的通知,當(dāng)然,這種類型的顯示不會(huì)直接阻止濫用,但它們會(huì)使發(fā)布者和注重隱私保護(hù)的用戶更容易看到潛在的攻擊行為。
? ? ? 最后,“writeonly 表單域”也許能夠成為一個(gè)很有前景的安全登錄表單方式,它簡(jiǎn)要定義了對(duì)表單元素的讀取訪問方法,并建議使用占位符 nonce 來保護(hù)自動(dòng)填充的信息。
寫在最后
誠(chéng)然,內(nèi)置登錄管理器對(duì) Web 安全性有著積極的影響,通過簡(jiǎn)單地自動(dòng)密碼填充來減少密碼重用,并且使得釣魚攻擊更難以安裝。然而,根據(jù)我們的研究結(jié)果,也許瀏覽器供應(yīng)商應(yīng)該重新考慮對(duì)自動(dòng)填寫的登錄表單進(jìn)行隱身訪問。
更直接地說,對(duì)于每個(gè)瀏覽器功能,瀏覽器開發(fā)人員和標(biāo)準(zhǔn)機(jī)構(gòu)都應(yīng)該考慮如何杜絕濫用不值得信任的第三方腳本。
原文:No boundaries for user identities: Web trackers exploit browser login managers
鏈接:http://freedom-to-tinker.com/2017/12/27/no-boundaries-for-user-identities-web-trackers-exploit-browser-login-managers/