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