Chromium學習3(安全)

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

browser kernel和rendering engine

Chromium有兩個模塊仓手,兩個模塊在不同的保護域中:browser kernel和rendering engine,其中browser kernel用于與操作系統(tǒng)交互褥符,rendering engine在sandbox中運行(擁有受限制的特權)

browser kernel代表用戶運行瘦馍,rendering engine模塊代表web運行晕城。


Chromium的架構將瀏覽器不同組件在browser kernel和rendering engine之間進行分配蝌蹂,將高風險部分(如HTML parser、JS 虛擬機儒飒、DOM)放到rendering engine的沙盒中产雹。Browser kernel用于管理永久資源(如cookie诫惭、password database、和操作系統(tǒng)交互以接收用戶輸入蔓挖、輸出信息到屏幕夕土、訪問網(wǎng)絡),并提供API供rendering engine調(diào)用,維護期分配給各個rendering engine的權限信息(如各個rendering engine允許上傳的文件列表)怨绣。

Chromium的架構依賴rendering engine單獨實現(xiàn)browser的安全策略--same-origin policy角溃。browser kernel僅僅進行粗粒度的控制。

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

Browser Kernel暴露了API赢笨,使得rendering engine能夠用來發(fā)起網(wǎng)絡請求未蝌、訪問持久存儲、在用戶屏幕上顯示圖形茧妒。

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

Browser Kernel和Rendering engine之間的分工如下,其中很多parsing和decoding工作由rendering engine完成九昧,是因為這些任務從歷史角度看來,是source of a large number of browser vulnerabilities毕匀。一個例外是network stack是由Browser Kernel實現(xiàn)的铸鹰,browser kernel負責解析HTTP response header,調(diào)用gzip或bzip2解碼器來解壓縮HTTP responses(如果其是使用Content-Encoding的)皂岔,這些任務可以分配給render engine蹋笼,但是會是的network stack更為負責并且降低性能。

Chromium也使用rendering engine來顯示一些可信內(nèi)容(如HTTPS證書錯誤的警告躁垛、釣魚網(wǎng)站的警告)剖毯,但是這個是由一個獨立的rendering engine完成的,與處理web 內(nèi)容的rendering engine不同教馆。但是存在一個例外逊谋,Web Inspector,其展示可信內(nèi)容土铺,是由render engine展示的(該render engine也顯示其他web 內(nèi)容)胶滋,這是因為Web inspector的職責所限,其與其所inspecting的頁面交互悲敷。

plug-ins:Chromium中究恤,每個plug-in運行在一個單獨的host process。為了與現(xiàn)有網(wǎng)站兼容后德,browser plug-in無法部署在rendering engine中部宿,因為plug-in廠商期望的是在整個browser中至多有一個plug-in實例。默認情況下瓢湃,每個plug-in運行在sandbox之外理张,以用戶的所有權限運行赫蛇。從而攻擊者可以利用plug-in的漏洞,在用戶機器上安裝惡意軟件涯穷。廠商在之后可以編寫plug-in棍掐,使其運行在sandbox中,用戶也可以為browser加上選項--safe-plugins拷况,使plugin運行(但是只是實現(xiàn)階段作煌,可能會不穩(wěn)定及不可預期的行為,如無法更新)

SandBox

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

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

實現(xiàn):當前设易,Chromium依賴Windows-specific特性來sandbox rendering engine。rendering engine并沒有使用Windows security token蛹头,而是使用一個受限的security token顿肺,當rendering engine嘗試訪問一個secureable object時,Windows Security Manager檢查rendering engine的securitytoken是否有足夠的權限來訪問該object渣蜗,Sandbox限制rendering engine的security token屠尊,是的token check在大多數(shù)情況下fail。

不足: sandbox存在下列不足之處:1. FAT32文件系統(tǒng)不支持訪問控制列表耕拷,沒有訪問控制列表讼昆,Windows security manager將忽略進程的security token,從而rendering engine可以讀寫FAT32文件(不受權限控制)骚烧。 2. 錯誤配置的object控淡,如果一個object的discretionary access control list(DACL)為NULL,Windows security manager也將忽略token止潘,直接訪問掺炭;NULL DACL很少出現(xiàn),而且在NTFS文件系統(tǒng)中凭戴,NULL DACL被極大緩解涧狮,因為Sandbox強制Windows檢查rendering engine是否有訪問目標文件父目錄的權限。

Browser kernel接口

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

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

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

2. 永久存儲

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

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

3.網(wǎng)絡

能夠訪問http跌宛,https酗宋,ftp的,但是一般的rendering engine不能請求file開頭的URL疆拘,用戶可在地址欄中輸入file開頭的url進行訪問蜕猫,該訪問是在專用的rendering engine中完成的。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末入问,一起剝皮案震驚了整個濱河市丹锹,隨后出現(xiàn)的幾起案子稀颁,更是在濱河造成了極大的恐慌芬失,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匾灶,死亡現(xiàn)場離奇詭異棱烂,居然都是意外死亡,警方通過查閱死者的電腦和手機阶女,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門颊糜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秃踩,你說我怎么就攤上這事衬鱼。” “怎么了憔杨?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵鸟赫,是天一觀的道長。 經(jīng)常有香客問我,道長抛蚤,這世上最難降的妖魔是什么台谢? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮岁经,結果婚禮上朋沮,老公的妹妹穿的比我還像新娘。我一直安慰自己缀壤,他們只是感情好樊拓,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诉位,像睡著了一般骑脱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苍糠,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天叁丧,我揣著相機與錄音,去河邊找鬼岳瞭。 笑死拥娄,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的瞳筏。 我是一名探鬼主播稚瘾,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼姚炕!你這毒婦竟也來了摊欠?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤柱宦,失蹤者是張志新(化名)和其女友劉穎些椒,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掸刊,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡免糕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了忧侧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片石窑。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蚓炬,靈堂內(nèi)的尸體忽然破棺而出松逊,到底是詐尸還是另有隱情,我是刑警寧澤肯夏,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布经宏,位于F島的核電站楼咳,受9級特大地震影響,放射性物質發(fā)生泄漏烛恤。R本人自食惡果不足惜母怜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缚柏。 院中可真熱鬧苹熏,春花似錦、人聲如沸币喧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杀餐。三九已至干发,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間史翘,已是汗流浹背枉长。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留琼讽,地道東北人必峰。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像钻蹬,于是被迫代替她去往敵國和親吼蚁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容