高端訪談 看Chrome安全性能是如何煉成的
原創(chuàng)Chrome開發(fā)團(tuán)隊(duì)只注重三件事:穩(wěn)定、速度和安全。用過Chrome瀏覽器的用戶都對它的穩(wěn)定和速度深有體會,但安全性究竟如何呢?
要確定一個軟件是否安全是件困難的事情,幸運(yùn)的是,有Pwn2Own黑客競賽,如果軟件存在任何漏洞,在這個高質(zhì)量的競賽中將會暴露無遺。
看過今年舉辦的Pwn2Own大賽后,我對Chrome的安全性算是有所認(rèn)識了,但我仍然存在不少疑問,經(jīng)過努力,我聯(lián)系到了Google Chrome團(tuán)隊(duì)的Ian Fette,他接受了我的專訪,通過這次訪談,讓我對Chrome的安全性又有更深入的了解了。下面就是本次訪談的摘錄。
記者:你們曾多次提到安全是設(shè)計Chrome時優(yōu)先級最高的,能聊一下開發(fā)團(tuán)隊(duì)最關(guān)注的三個安全問題嗎?
Fette:在構(gòu)建Chrome的過程中,我們希望設(shè)計的瀏覽器是深度安全的,我們知道要解決所有安全問題是沒有銀彈的,因此我們希望在應(yīng)用程序的所有層次都開發(fā)安全的功能,下面三個安全領(lǐng)域是我們投入時間最多的:
1、當(dāng)用戶訪問不安全的網(wǎng)站時,瀏覽器產(chǎn)生警告。
2、不受信任的代碼離開瀏覽器沙盒后保證它不能執(zhí)行。
3、確保用戶盡可能塊地獲得最新的瀏覽器版本。
記者:這些工作很有意義,你能簡單解釋下開發(fā)團(tuán)隊(duì)是如何攻克這些難題的呢?
Fette:為了警告用戶他們訪問的是釣魚網(wǎng)站或網(wǎng)站包含有惡意代碼,我們使用了我們的安全瀏覽技術(shù),它 已經(jīng)用在Google搜索引擎、Firefox和Safari中,安全瀏覽技術(shù)通過一個中間頁面警告用戶訪問的網(wǎng)站可能不安全。
為了阻止不受信任的代碼離開我們的沙盒執(zhí)行,我們又增加了一個安全保護(hù)層,防止攻擊者在你計算機(jī)上執(zhí)行漏洞利用代碼,即使他們發(fā)現(xiàn)了渲染程序的漏洞,也只能被限制在沙盒內(nèi)。
最后,為了確保用戶的瀏覽器始終保持是最新版本,包括打上最新的安全補(bǔ)丁,我們開發(fā)了一個自動升級系統(tǒng),它無需人工干預(yù),自動靜悄悄地后臺運(yùn)行。
為了實(shí)現(xiàn)這些目標(biāo),Chrome開發(fā)團(tuán)隊(duì)決定使用多進(jìn)程架構(gòu)。
多進(jìn)程架構(gòu)
按照設(shè)計,多進(jìn)程架構(gòu)將瀏覽器應(yīng)用程序拆分成了多個進(jìn)程,使用這種方法,一個進(jìn)程失敗時,整個瀏覽器不會崩潰,Chrome最終拆分成下面三個進(jìn)程:
1、瀏覽器進(jìn)程:這個進(jìn)程管理標(biāo)簽、窗口和“Chrome”瀏覽器,這個進(jìn)程同時也是與硬盤、網(wǎng)絡(luò)、用戶輸入和顯示之間的接口。
2、渲染進(jìn)程:這個進(jìn)程負(fù)責(zé)使用HTML,JavaScript,CSS和圖像顯示網(wǎng)頁,渲染是由WebKit渲染引擎控制的。
3、插件進(jìn)程:按照設(shè)計,為每個插件或在使用中的擴(kuò)展創(chuàng)建一個進(jìn)程。
記者:如果我了解得沒錯,Google應(yīng)該是第一個為瀏覽器使用多進(jìn)程架構(gòu)的,Google的實(shí)現(xiàn)與其它瀏覽器有何不同?
Fette:Google采用了一個很奇特的方法將瀏覽器拆分成不同的組件 – 瀏覽器、渲染和插件,它給我們帶來了許多好處,例如,如果插件崩潰,當(dāng)前查看的網(wǎng)頁仍然可見,并且可操作,插件僅僅是網(wǎng)頁的一部分,因此插件之外的網(wǎng)頁內(nèi)容不受影響。
在渲染進(jìn)程上創(chuàng)建的這個策略有效阻止了運(yùn)行在渲染進(jìn)程中的惡意代碼讀取或?qū)懹脩舻奈募到y(tǒng),注冊表等,這個策略比其它瀏覽器的保護(hù)措施都嚴(yán)格。
記者:那么Chrome能打開多少進(jìn)程呢?對同時瀏覽網(wǎng)站的數(shù)量有限制嗎?如果是,那么達(dá)到數(shù)量限制時會發(fā)生什么?
Fette:我們的確對進(jìn)程數(shù)量做了限制,但并不等于對打開網(wǎng)站的數(shù)量也限制了,我們這樣做的目的是為了實(shí)現(xiàn)最佳的性能平衡,主要是根據(jù)計算機(jī)上的可用內(nèi)存數(shù)量來限制的,也就是說,你的內(nèi)存越多,我們限制的數(shù)量也更高。
當(dāng)你達(dá)到最大進(jìn)程數(shù)限制時,打開的新標(biāo)簽將會共享其它標(biāo)簽的進(jìn)程,如果你打開了含有20個標(biāo)簽的20個獨(dú)立窗口,總共有400個標(biāo)簽的話,很可能每個渲染進(jìn)程都支撐了10個標(biāo)簽,如果是400個不同的進(jìn)程,你的機(jī)器肯定早就承受不了了。
Chrome沙盒
除了穩(wěn)定,多進(jìn)程架構(gòu)帶來的好處外,按照設(shè)計,獨(dú)立的進(jìn)程之間不會相互依賴,可以隔離,這就是Google稱作的Chrome沙盒,下面的內(nèi)容是摘自Esalkin在沙盒論壇中發(fā)表的文章,對沙盒尚不了解的讀者,這是一次難得的機(jī)會。
“假設(shè)你的PC是一張紙,你運(yùn)行的每個程序都寫在這張紙上,當(dāng)你運(yùn)行瀏覽器時,它將你訪問的每個網(wǎng)站都寫在這張紙上,你碰上的任何惡意代碼通常會將自己也寫到這張紙上。
傳統(tǒng)的隱私和反惡意軟件嘗試找出并擦除任何寫在紙上的內(nèi)容,他們認(rèn)為你不想在紙上寫任何東西,大多數(shù)時候,他們這樣做是正確的,但這些解決方案提出者必須先告知解決方案在紙上尋找什么內(nèi)容,然后是如何安全地擦除它。
相反,沙盒就象放在紙上的一個透明層,程序在這個透明層上寫入它需要寫的任何內(nèi)容,就象在真實(shí)的紙上寫一樣,當(dāng)你刪除這個沙盒時,真實(shí)的紙張不會改變。”
安全專家,如Charlie Miller認(rèn)為Chrome使用沙盒難以攻破的原因是:
“他們獲得沙盒模型后就很難逃出去,在操作系統(tǒng)和沙盒的保護(hù)下,你不能在堆棧上執(zhí)行代碼。”
Chrome沙盒是如何工作的
還記得我前面提到的渲染進(jìn)程嗎,實(shí)際上它們是Chrome中的沙盒進(jìn)程,因?yàn)樗鼈兲幱谏澈兄校鼈兡苁褂玫奈ㄒ毁Y源是CPU周期和內(nèi)存,渲染進(jìn)程不能對磁盤進(jìn)行操作,也不能顯示它自己的窗口,這些任務(wù)是由瀏覽器進(jìn)程控制的。
Google Chrome使用了基于訪問令牌的Windows安全模型,一個訪問令牌是由進(jìn)程所有者和進(jìn)程擁有的特權(quán)信息組成的,讀取訪問令牌后,操作系統(tǒng)就知道該進(jìn)程或沙盒可以訪問哪些資源了,下面是Google對此的解釋:
“啟動渲染進(jìn)程之前,我們修改它的令牌,移除所有特權(quán),禁用所有組,然后將這個令牌轉(zhuǎn)換成一個受限制的令牌,受限的令牌和正常令牌一樣,但訪問檢查會執(zhí)行兩次,第一次使用令牌中的正常信息,第二次使用輔助組名單。
前后兩次訪問檢查都通過后,才會將資源授予該進(jìn)程訪問,Google Chrome設(shè)置了輔助組名單,它只包含一個項(xiàng)目 – null user,因?yàn)檫@個用戶不會獲得任何對象的權(quán)限,對渲染進(jìn)程訪問令牌的所有訪問檢查都會失敗,因此對攻擊者來說,這個進(jìn)程是無用的。”
使用沙盒可以阻止攻擊者攻擊瀏覽器,惡意代碼可以在沙盒進(jìn)程內(nèi)運(yùn)行,但它不能讀取或修改計算機(jī)上的任何文件,我再次請教了Ian Fette。
記者:你能舉一些真實(shí)世界中的例子,解釋一下使用沙盒對我們的計算機(jī)有什么保護(hù)嗎?
Fette:和其它瀏覽器一樣,我們維護(hù)了一份我們已經(jīng)修復(fù)的安全漏洞列表,其中大部分漏洞因有沙盒的保護(hù)影響都降低了,例如,在我們的JavaScript引擎中曾經(jīng)有一個整數(shù)溢出漏洞,如果沒有沙盒的保護(hù),攻擊者可以利用這個漏洞在你計算機(jī)上執(zhí)行任意代碼。
有了沙盒的保護(hù)后,因這個漏洞暴露的攻擊點(diǎn)非常少了,當(dāng)瀏覽器標(biāo)簽關(guān)閉后,攻擊者不能在你的計算機(jī)上安裝任何惡意軟件。
記者:我有位同事托我問你,插件或擴(kuò)展是否也運(yùn)行在沙盒中?
Fette:Google Chrome中的擴(kuò)展是運(yùn)行在沙盒中的,因?yàn)樗鼈兛梢韵笳>W(wǎng)站一樣執(zhí)行各種操作,它們也是用HTML,JavaScript和CSS編寫的。
目前插件尚未運(yùn)行在沙盒中,但我們正準(zhǔn)備將其移到沙盒中運(yùn)行,最近我們宣布在Google Chrome中全面集成Adobe Flash就是其中的一步,以后在沙盒中運(yùn)行Flash,誰也不會再說Flash不安全的壞話了。
記者:我稍微對Chrome沙盒做了一下了解,它在Windows XP以后的Windows版本中的工作機(jī)制有些不同,你能具體解釋一下嗎?還有就是,在新操作系統(tǒng)上使用Chrome是否有更多的好處呢?
Fette:在Windows Vista和更高的版本中,引入了一個額外的功能 – 鎖定進(jìn)程,即“完整性級別”,Google Chrome沙盒在XP和Vista上應(yīng)用的正常限制外,還應(yīng)用了一個低完整性。
雖然從理論上說,這個功能讓Vista沙盒功能更強(qiáng)壯,但我們還不清楚對Chrome的真實(shí)攻擊時,它的表現(xiàn)究竟有何不同。但是它的確增加了一層防御,作為一個縱深防御的做法,我們應(yīng)該在支持它的Windows版本中使用完整性級別。
最后的想法
談到瀏覽器設(shè)計時,我不是專家,但Charlie Miller是,如果他都不能攻破Chrome,我想大家都明白這意味著什么。我現(xiàn)在對他為什么不感謝Ian Fette有了更好的想法,因?yàn)镃hrome太安全,讓他在Pwn2Own大賽上只能轉(zhuǎn)向蘋果的產(chǎn)品。最后還要感謝Google Communications的Eitan Bencuya幫我聯(lián)系上了Ian Fette。
原文出處:blogs.techrepublic.com.com/security/?p=3738
原文名:Google Chrome: The new breed of Web browser
作者:Michael Kassner
【編輯推薦】