Chromium學(xué)習(xí)3(安全)

根據(jù)《The Security Architecture of the Chromium Browser》論文完成

browser kernel和rendering engine

Chromium有兩個(gè)模塊,兩個(gè)模塊在不同的保護(hù)域中:browser kernel和rendering engine,其中browser kernel用于與操作系統(tǒng)交互,rendering engine在sandbox中運(yùn)行(擁有受限制的特權(quán))

browser kernel代表用戶運(yùn)行,rendering engine模塊代表web運(yùn)行。


Chromium的架構(gòu)將瀏覽器不同組件在browser kernel和rendering engine之間進(jìn)行分配,將高風(fēng)險(xiǎn)部分(如HTML parser、JS 虛擬機(jī)、DOM)放到rendering engine的沙盒中。Browser kernel用于管理永久資源(如cookie、password database、和操作系統(tǒng)交互以接收用戶輸入、輸出信息到屏幕、訪問(wèn)網(wǎng)絡(luò)),并提供API供rendering engine調(diào)用,維護(hù)期分配給各個(gè)rendering engine的權(quán)限信息(如各個(gè)rendering engine允許上傳的文件列表)。

Chromium的架構(gòu)依賴rendering engine單獨(dú)實(shí)現(xiàn)browser的安全策略--same-origin policy。browser kernel僅僅進(jìn)行粗粒度的控制。

本方案無(wú)法阻止攻擊者在攻占了rendering engine的情形下攻擊其他web站點(diǎn)(如獲取他們的cookie);但是阻止了攻擊者讀、寫(xiě)用戶文件系統(tǒng)。

Browser Kernel暴露了API,使得rendering engine能夠用來(lái)發(fā)起網(wǎng)絡(luò)請(qǐng)求、訪問(wèn)持久存儲(chǔ)、在用戶屏幕上顯示圖形。

Rendering web content按下列順序處理:parsing、建立DOM的in-memory representation, lay out the document graphically,根據(jù)script指令做出響應(yīng)以修改document。

Browser Kernel和Rendering engine之間的分工如下,其中很多parsing和decoding工作由rendering engine完成,是因?yàn)檫@些任務(wù)從歷史角度看來(lái),是source of a large number of browser vulnerabilities。一個(gè)例外是network stack是由Browser Kernel實(shí)現(xiàn)的,browser kernel負(fù)責(zé)解析HTTP response header,調(diào)用gzip或bzip2解碼器來(lái)解壓縮HTTP responses(如果其是使用Content-Encoding的),這些任務(wù)可以分配給render engine,但是會(huì)是的network stack更為負(fù)責(zé)并且降低性能。

Chromium也使用rendering engine來(lái)顯示一些可信內(nèi)容(如HTTPS證書(shū)錯(cuò)誤的警告、釣魚(yú)網(wǎng)站的警告),但是這個(gè)是由一個(gè)獨(dú)立的rendering engine完成的,與處理web 內(nèi)容的rendering engine不同。但是存在一個(gè)例外,Web Inspector,其展示可信內(nèi)容,是由render engine展示的(該render engine也顯示其他web 內(nèi)容),這是因?yàn)閃eb inspector的職責(zé)所限,其與其所inspecting的頁(yè)面交互。

plug-ins:Chromium中,每個(gè)plug-in運(yùn)行在一個(gè)單獨(dú)的host process。為了與現(xiàn)有網(wǎng)站兼容,browser plug-in無(wú)法部署在rendering engine中,因?yàn)閜lug-in廠商期望的是在整個(gè)browser中至多有一個(gè)plug-in實(shí)例。默認(rèn)情況下,每個(gè)plug-in運(yùn)行在sandbox之外,以用戶的所有權(quán)限運(yùn)行。從而攻擊者可以利用plug-in的漏洞,在用戶機(jī)器上安裝惡意軟件。廠商在之后可以編寫(xiě)plug-in,使其運(yùn)行在sandbox中,用戶也可以為browser加上選項(xiàng)--safe-plugins,使plugin運(yùn)行(但是只是實(shí)現(xiàn)階段,可能會(huì)不穩(wěn)定及不可預(yù)期的行為,如無(wú)法更新)

SandBox

Sandbox限制了rendering engine進(jìn)程調(diào)用一些系統(tǒng)調(diào)用。

目標(biāo):理想情況下,sandbox將強(qiáng)制rendering engine使用browser kernel API來(lái)與外部進(jìn)行交互。很多DOM方法,如appendChild可以在rendering engine內(nèi)完成;其他一些DOM方法,如XMLHttpRequest的send方法,要求rendering engine不僅操縱器內(nèi)部狀態(tài),honest rendering engine可以使用browser kernel提供的接口來(lái)實(shí)現(xiàn)該功能。sandbox的最終目標(biāo)是惡意的rendering engine仍然只能通過(guò)browser kernel的接口和文件系統(tǒng)交互。

實(shí)現(xiàn):當(dāng)前,Chromium依賴Windows-specific特性來(lái)sandbox rendering engine。rendering engine并沒(méi)有使用Windows security token,而是使用一個(gè)受限的security token,當(dāng)rendering engine嘗試訪問(wèn)一個(gè)secureable object時(shí),Windows Security Manager檢查rendering engine的securitytoken是否有足夠的權(quán)限來(lái)訪問(wèn)該object,Sandbox限制rendering engine的security token,是的token check在大多數(shù)情況下fail。

不足: sandbox存在下列不足之處:1. FAT32文件系統(tǒng)不支持訪問(wèn)控制列表,沒(méi)有訪問(wèn)控制列表,Windows security manager將忽略進(jìn)程的security token,從而rendering engine可以讀寫(xiě)FAT32文件(不受權(quán)限控制)。 2. 錯(cuò)誤配置的object,如果一個(gè)object的discretionary access control list(DACL)為NULL,Windows security manager也將忽略token,直接訪問(wèn);NULL DACL很少出現(xiàn),而且在NTFS文件系統(tǒng)中,NULL DACL被極大緩解,因?yàn)镾andbox強(qiáng)制Windows檢查rendering engine是否有訪問(wèn)目標(biāo)文件父目錄的權(quán)限。

Browser kernel接口

1. ?用戶交互方面,操作系統(tǒng)提供接口,使得應(yīng)用能夠和用戶交互,但是這些用戶一般不暴露給不可靠的應(yīng)用(例如,下X windows系統(tǒng)中,在X server上創(chuàng)建window的能力,意味著能夠獲取用戶鍵盤輸入)

渲染:rendering engine是內(nèi)存中完成渲染,然后將bitmap交給browser kernel,由其完成真正的渲染;

用戶輸入:操作系統(tǒng)將用戶輸入事件傳遞至browser kernel;browser kernel根據(jù)當(dāng)前focused的元素,確定該事件派發(fā)給誰(shuí)。

2. 永久存儲(chǔ)

上傳文件:僅上傳用戶選擇的文件,。

下載文件:僅能下載到用戶選擇的區(qū)域,特定的文件類型不被允許,如.local,.ini等

3.網(wǎng)絡(luò)

能夠訪問(wèn)http,https,ftp的,但是一般的rendering engine不能請(qǐng)求file開(kāi)頭的URL,用戶可在地址欄中輸入file開(kāi)頭的url進(jìn)行訪問(wèn),該訪問(wèn)是在專用的rendering engine中完成的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容