軟件是一系列按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合。一般來(lái)講軟件被劃分為編程語(yǔ)言、系統(tǒng)軟件、應(yīng)用軟件和介于這兩者之間的中間件。硬件是“計(jì)算機(jī)硬件”的簡(jiǎn)稱。與“軟件”相對(duì),電子計(jì)算機(jī)系統(tǒng)中所有實(shí)體部件和設(shè)備的統(tǒng)稱。 隨著互聯(lián)網(wǎng)深入人們的生活,瀏覽器的發(fā)展更加豐富多彩,其種類多樣,版本更新速度也日益提高。與此同時(shí),瀏覽器的安全問(wèn)題也備受關(guān)注。下面,我們就扒一扒主流瀏覽器實(shí)現(xiàn)了什么樣的安全機(jī)制。
一、背景
隨著互聯(lián)網(wǎng)的快速發(fā)展,種類繁多的瀏覽器也變得越來(lái)越復(fù)雜,它們不僅分析純文本和HTML,還包括圖像、視頻和其他復(fù)雜的協(xié)議和文件格式等。這些極大地豐富了瀏覽器的功能,給用戶帶來(lái)了方便和更好的瀏覽體驗(yàn),然而也帶來(lái)了一系列的安全問(wèn)題,各種各樣的安全漏洞層出不窮,成為了黑客最易攻擊的對(duì)象之一。為此,瀏覽器廠商也在不懈努力,在積極修復(fù)漏洞的同時(shí),也在瀏覽器安全機(jī)制方面做著努力,本文將展示和對(duì)比主流瀏覽器當(dāng)前對(duì)安全機(jī)制的實(shí)現(xiàn)狀況。
首先來(lái)看看最近全球?yàn)g覽器的市場(chǎng)份額,根據(jù)Net Market Share的統(tǒng)計(jì)數(shù)據(jù),2016年7月份全球?yàn)g覽器的市場(chǎng)份額如下圖所示:Chrome占據(jù)市場(chǎng)份額最多,占50.95%,其次是占29.60%的IE,接下來(lái)依次是Firefox、Safari和Edge,這五款瀏覽器占據(jù)了全球98.27%的市場(chǎng)份額,其影響力非同一般。

二、瀏覽器安全機(jī)制簡(jiǎn)介
近來(lái),我們對(duì)上述五款瀏覽器的安全機(jī)制做了初步的探究,發(fā)現(xiàn)其內(nèi)部的安全機(jī)制大同小異,下面就其主要的安全機(jī)制做一下簡(jiǎn)單介紹。
1、沙箱(Sandbox)
沙箱是一種隔離對(duì)象/線程/進(jìn)程的機(jī)制,控制瀏覽器訪問(wèn)系統(tǒng)資源的權(quán)限,從而達(dá)到保護(hù)用戶的系統(tǒng)不被網(wǎng)頁(yè)上的惡意軟件侵入、保護(hù)用戶系統(tǒng)的輸入事件(鍵盤/鼠標(biāo))不被監(jiān)視、保護(hù)用戶系統(tǒng)中的文件不被偷取等目的。最初的瀏覽器沙箱是基于Hook實(shí)現(xiàn)的,后來(lái)的Chrome沙箱是利用操作系統(tǒng)提供的一些安全機(jī)制實(shí)現(xiàn)的。
2、地址空間布局隨機(jī)化(ASLR)
ASLR是一項(xiàng)緩解緩沖區(qū)溢出問(wèn)題的安全技術(shù)。其原理是將進(jìn)程運(yùn)行所需的系統(tǒng)核心組件和對(duì)象在內(nèi)存中的分布隨機(jī)化。為了防止攻擊者利用在內(nèi)存中跳轉(zhuǎn)到特定地址的函數(shù),ASLR技術(shù)隨機(jī)排列進(jìn)程的關(guān)鍵數(shù)據(jù)區(qū)域的位置,包括可執(zhí)行的部分、堆、棧及共享庫(kù)的位置。
3、JIT Hardening
JIT Hardening是防止對(duì)JIT引擎本身的濫用的機(jī)制。JIT引擎通常在可預(yù)測(cè)的地址空間中放置可執(zhí)行代碼,這無(wú)疑給攻擊者提供了可乘之機(jī)。只要攻擊者計(jì)算出可執(zhí)行代碼放置的地址,極有可能通過(guò)代碼覆蓋來(lái)進(jìn)行惡意活動(dòng)。因此,必須有一項(xiàng)類似于ASLR的技術(shù)來(lái)保護(hù)JIT引擎,即JIT Hardienng。JIT Hardening常用技術(shù)包括:代碼庫(kù)隊(duì)列隨機(jī)化、指令庫(kù)隊(duì)列隨機(jī)化、常量合并、內(nèi)存頁(yè)面保護(hù)、資源限制等。
4、數(shù)據(jù)執(zhí)行保護(hù)(DEP)
DEP是一種阻止數(shù)據(jù)頁(yè)執(zhí)行代碼的機(jī)制。將數(shù)據(jù)所在內(nèi)存頁(yè)標(biāo)識(shí)為不可執(zhí)行,當(dāng)程序嘗試在數(shù)據(jù)頁(yè)面上執(zhí)行指令時(shí)會(huì)拋出異常,而不是去執(zhí)行惡意指令。
5、緩沖區(qū)安全檢查(/GS)
/GS是一種不強(qiáng)制緩沖區(qū)大小限制的代碼常用技術(shù)。通過(guò)將安全檢查插入到已編譯代碼中完成,檢測(cè)某些改寫(xiě)返回地址的緩沖區(qū)溢出。
6、執(zhí)行流保護(hù)(CFG)
CFG是對(duì)CFI(控制流完整性)的一個(gè)實(shí)用性實(shí)現(xiàn),是一種編譯器和操作系統(tǒng)相結(jié)合的防護(hù)手段,目的在于防止不可信的間接調(diào)用。對(duì)基于虛表進(jìn)行攻擊的利用手段可以有效防御。
7、附加組件簽名機(jī)制
附加組件簽名機(jī)制是Firefox43版本開(kāi)始正式采取的一項(xiàng)對(duì)其附加組件管理的機(jī)制。Mozilla 根據(jù)一套安全準(zhǔn)則對(duì)其附加組件進(jìn)行驗(yàn)證并為其“簽名”,需要簽名的類型包括擴(kuò)展,未被簽名的擴(kuò)展默認(rèn)被禁用。這一機(jī)制對(duì)阻止來(lái)自第三方的惡意擴(kuò)展起到了很好的作用。
8、W^X
W^X是“寫(xiě)異或執(zhí)行”(WriteXOR Execute)的縮寫(xiě),是OpenBSD中富有代表性的安全特性之一。W^R內(nèi)存保護(hù)機(jī)制能夠讓網(wǎng)頁(yè)使用內(nèi)存寫(xiě)入代碼或執(zhí)行代碼,但不能夠同時(shí)進(jìn)行這兩種操作,可以阻止某些緩沖區(qū)溢出的攻擊。
9、MemGC
MemGC即內(nèi)存垃圾收集器(Memory Garbage Collector),是一種內(nèi)存管理機(jī)制,由IE11的Memory Protector改進(jìn)而來(lái),首次在EdgeHTML和MSHTML中使用,采用標(biāo)記清除(Mark-Sweep)算法對(duì)垃圾進(jìn)行回收,能夠阻止部分UAF(Use After Free)漏洞。
需要指出的一點(diǎn)是,上述幾種安全機(jī)制并不是瀏覽器獨(dú)有,有些機(jī)制,例如ASLR、/GS、CFG等,也被操作系統(tǒng)和編譯器廣泛采用。以上就是對(duì)幾種主要安全機(jī)制的簡(jiǎn)單介紹,不夠全面和詳盡,還請(qǐng)大神勿噴。
三、主流瀏覽器對(duì)安全機(jī)制的實(shí)現(xiàn)情況
對(duì)于前面提到的幾種瀏覽器安全機(jī)制,主流瀏覽器并不是全部實(shí)現(xiàn)了,具體情況如下表所示:

由表可以明顯看出,除了Safari以外,其他四種瀏覽器均實(shí)現(xiàn)了前六種安全機(jī)制。而Safari不支持緩沖區(qū)安全檢查機(jī)制,未實(shí)現(xiàn)CFG執(zhí)行流保護(hù)機(jī)制但有資料顯示其實(shí)現(xiàn)了控制流完整性(CFI)。對(duì)于后面三種安全機(jī)制,附加組件簽名機(jī)制和W^X機(jī)制是Firefox瀏覽器獨(dú)有的,而MemGC機(jī)制是Egde瀏覽器獨(dú)有的。
在此,還需指出一點(diǎn),雖然對(duì)某一安全機(jī)制有多個(gè)瀏覽器支持,但各個(gè)瀏覽器的實(shí)現(xiàn)方式及實(shí)現(xiàn)程度不盡相同。下面舉兩個(gè)例子加以說(shuō)明:
(1)雖然Edge瀏覽器和IE瀏覽器都實(shí)現(xiàn)了沙箱機(jī)制,但Edge瀏覽器將框架進(jìn)程也包含在了整個(gè)安全體系里面,權(quán)限更低,大大提高了安全性。
(2)Chrome和IE的沙箱機(jī)制對(duì)各種行為的限制也是不同的,圖3列舉了一些常見(jiàn)行為及Chrome和IE沙箱機(jī)制對(duì)其的限制對(duì)比情況:

總結(jié)
瀏覽器發(fā)展至今,已經(jīng)擁有比較成熟的安全機(jī)制,主要包括沙箱機(jī)制、JIT Hardening、地址空間布局隨機(jī)化、數(shù)據(jù)執(zhí)行保護(hù)、緩沖區(qū)安全檢查、執(zhí)行流保護(hù)、附加組件簽名機(jī)制、W^X、MemGC等。然而,瀏覽器的安全并不是已經(jīng)完全保障,各大瀏覽器廠商也在安全機(jī)制方面做著不懈的努力,期待著瀏覽器安全方面質(zhì)的提高。
Ghost123推薦:
●win10系統(tǒng)教程
●微軟win10系統(tǒng)下載鏈接
●windows10系統(tǒng)激活【win10激活工具】
硬件是實(shí)在的,有模有樣的。軟件是程序性的。是一系列的指令。有了軟件,硬件才會(huì)實(shí)現(xiàn)更豐富的功能。
|