卡巴斯基安全浏览器_一年三番五次修,卡巴斯基为何依然无法完美修复杀毒软件中的这些洞 (技术详情)?...
生活随笔
收集整理的這篇文章主要介紹了
卡巴斯基安全浏览器_一年三番五次修,卡巴斯基为何依然无法完美修复杀毒软件中的这些洞 (技术详情)?...
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
聚焦源代碼安全,網(wǎng)羅國(guó)內(nèi)外最新資訊!編譯:奇安信代碼衛(wèi)士團(tuán)隊(duì)卡巴斯基 web 防護(hù)功能將攔截廣告和追蹤器,警告用戶關(guān)于惡意搜索結(jié)果等等。但這個(gè)功能在瀏覽器中運(yùn)行而且需要和主應(yīng)用程序通信。要確保這種通信的安全性,必須要回答的問(wèn)題是:它把通向王國(guó)的鑰匙放在了哪個(gè)地墊之下?本文作者Wladimir Palant 詳細(xì)分析了自己向卡巴斯基從該功能中找到的多個(gè)漏洞,這里說(shuō)明的是其中一個(gè)。奇安信代碼衛(wèi)士翻譯如下:
概述
2018年12月,我可以證實(shí),多個(gè)網(wǎng)站能夠劫持卡巴斯基瀏覽器腳本與其所有配置中主應(yīng)用程序之間的通信。網(wǎng)站從而能夠以多種方式操縱該應(yīng)用程序,包括禁用廣告攔截和追蹤的防護(hù)功能。卡巴斯基當(dāng)時(shí)表示會(huì)在2019年7月份解決這些問(wèn)題。但進(jìn)一步調(diào)查發(fā)現(xiàn)他們只限制了更為強(qiáng)大的 API 調(diào)用,而任何網(wǎng)站仍然可以訪問(wèn)大量應(yīng)用程序。更糟糕的是,卡巴斯基發(fā)布的新版本泄露了大量用戶系統(tǒng)信息,如卡巴斯基程序的唯一標(biāo)識(shí)符,同時(shí)還引入一個(gè)新問(wèn)題,可導(dǎo)致任意網(wǎng)站觸發(fā)應(yīng)用程序崩潰,使得用戶系統(tǒng)無(wú)法得到病毒防護(hù)功能的保護(hù)。問(wèn)題為何如此復(fù)雜?
殺毒軟件通常通過(guò)瀏覽器擴(kuò)展實(shí)現(xiàn) web 防護(hù)措施,這樣使得和主應(yīng)用程序的通信更加方便快捷:瀏覽器擴(kuò)展可使用易于保護(hù)的本地消息傳遞機(jī)制 (native messaging)。原生應(yīng)用程序內(nèi)置多種安全預(yù)防措施,指定了哪些瀏覽器擴(kuò)展可以與其連接。但我們這里考慮的環(huán)境不僅僅是瀏覽器擴(kuò)展。如果用戶拒絕安裝卡巴斯基的瀏覽器擴(kuò)展,那么卡巴斯基軟件不會(huì)輕易放手,而是會(huì)直接將必要腳本注入所有的網(wǎng)頁(yè)。這種做法甚至適用于 HTTPS 網(wǎng)站中,因?yàn)榭ò退够鶠榱瞬倏v所有的網(wǎng)站不惜突破 HTTPS 連接。另外,更特別的是 IE 瀏覽器插件。由于IE 瀏覽器并不會(huì)提供適當(dāng)?shù)臄U(kuò)展 API,其插件限制將腳本注入網(wǎng)頁(yè)中。雖然它并不要求操縱網(wǎng)頁(yè)的源代碼,但腳本仍然會(huì)在這些頁(yè)面上下文中執(zhí)行且不會(huì)具備任何特別權(quán)限。因此,卡巴斯基這樣做的目的似乎是為這三種環(huán)境提供和卡巴斯基應(yīng)用程序統(tǒng)一的通信方式。但在其中兩種環(huán)境中,卡巴斯基的腳本所具有的權(quán)限和已被注入腳本的網(wǎng)頁(yè)的權(quán)限完全一樣。那么如何阻止網(wǎng)站連接到使用同樣方式的應(yīng)用程序呢?現(xiàn)在知道這個(gè)任務(wù)的挑戰(zhàn)性有多大了吧?卡巴斯基的解決方案
卡巴斯基的卡法人員顯然給出了一種解決方案,不然我也不會(huì)寫這么一篇文章了。他們決定在應(yīng)用程序和腳本(他們?cè)诖a中稱之為“signature”)之間共享一個(gè)秘密。在建立連接時(shí),必須提供這個(gè)秘密值,而本地服務(wù)器只有在收到正確的值之后才會(huì)響應(yīng)。那么,擴(kuò)展和腳本如何才能知道這個(gè)秘密是什么?Chrome 和火狐瀏覽器使用本地消息傳遞機(jī)制進(jìn)行檢索。至于IE 瀏覽器擴(kuò)展和直接被注入網(wǎng)頁(yè)中的腳本在這里變成該腳本的一部分源碼。由于網(wǎng)站受制于同源策略無(wú)法下載該源碼,因此它們無(wú)法讀取該秘密,至少?gòu)睦碚撋蟻?lái)講是這樣的。提取秘密
2018年12月,當(dāng)我查看 Kaspersky Internet Security 2019 產(chǎn)品時(shí)發(fā)現(xiàn)它們的 web 集成代碼在所有的環(huán)境中都在泄露該秘密(CVE-2019-15685)。不管你是用的是什么瀏覽器,也不管是否安裝了瀏覽器擴(kuò)展,所有的瀏覽器都能夠提取到和卡巴斯基主應(yīng)用程序進(jìn)行通信所需的秘密。從注入腳本提取入之前說(shuō)書,如果沒(méi)有瀏覽器擴(kuò)展,那么卡巴斯基軟件將直接把腳本注入到網(wǎng)頁(yè)中。由于 JavaScript 是高度動(dòng)態(tài)化的執(zhí)行環(huán)境,因此幾乎可任意遭操控。例如,網(wǎng)站可以替代 WebSocket對(duì)象并看到腳本和本地服務(wù)器之間建立連接。當(dāng)然,卡巴斯基的開(kāi)發(fā)人員也想到了這種場(chǎng)景,于是他們確保自己的腳本會(huì)在網(wǎng)站腳本之前運(yùn)行。同時(shí)還復(fù)制了 WebSocket 對(duì)象并且僅使用該對(duì)象。但這種方法并非滴水不漏。比如,網(wǎng)站僅能保證再次執(zhí)行相同的腳本,但這次是在受操控的環(huán)境中執(zhí)行。雖然需要腳本 URL 才能這么做,但是它可以自行下載并從響應(yīng)中提取該腳本 URL。如下是我的方法:fetch(location.href).then(response => response.text()).then(text =>{ let match = /總結(jié)
以上是生活随笔為你收集整理的卡巴斯基安全浏览器_一年三番五次修,卡巴斯基为何依然无法完美修复杀毒软件中的这些洞 (技术详情)?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: stm32不使用外部晶振管脚怎么处理_外
- 下一篇: P1403 [AHOI2005]约数研究