秦夢遠, 傅忠傳
(哈爾濱工業(yè)大學(xué) 計算機科學(xué)與技術(shù)學(xué)院, 哈爾濱 150001)
從上個世紀90年代至今,隨著互聯(lián)網(wǎng)技術(shù)的二次飛躍,商業(yè)機構(gòu)參與建設(shè)互聯(lián)網(wǎng),網(wǎng)絡(luò)逐漸成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠帧R虼?,大量以瀏覽器為入口進行穿透攻擊,盜取用戶個人信息,甚至破壞用戶操作系統(tǒng)的惡意代碼紛紛涌現(xiàn)。這種攻擊方式不同于傳統(tǒng)的端口攻擊,由于攻擊載荷是無害的HTML文本,需要通過瀏覽器的解析與渲染才能有效觸發(fā),本機防火墻無法對其進行有效防御。
Chrome瀏覽器作為目前最流行的瀏覽器,其商業(yè)版本Chrome與對應(yīng)的開源版本Chromium,以及國內(nèi)外各種基于Chromium瀏覽器內(nèi)核開發(fā)的瀏覽器,占據(jù)了超過半數(shù)的瀏覽器市場份額。對于Chromium瀏覽器內(nèi)核的漏洞,谷歌Chrome開發(fā)團隊能夠第一時間對其進行修復(fù),并提供補丁,但對于那些基于Chromium瀏覽器內(nèi)核的瀏覽器開發(fā)者而言,修復(fù)漏洞并非易事。由于對Chromium瀏覽器內(nèi)核的核心功能缺乏足夠透徹的了解,開發(fā)者往往不能自主定位漏洞產(chǎn)生的位點,更不必談修復(fù)漏洞;而對Chromium瀏覽器內(nèi)核的自主修改,往往又導(dǎo)致了無法及時移植最新版本的Chromium瀏覽器內(nèi)核,從而使自行研發(fā)的瀏覽器暴露在漏洞威脅之中。
針對上述問題,本文首先對Chromium瀏覽器內(nèi)核的工作原理進行了分析;對Chrome調(diào)試協(xié)議的原理和實現(xiàn)進行詳細闡述;針對Chrome調(diào)試協(xié)議提出一種修改方案,使Chromium瀏覽器能夠?qū)ν鈧鬏攦?nèi)部工作狀態(tài)信息,并以此為基礎(chǔ)構(gòu)建漏洞掃描平臺,在瀏覽器崩潰時回溯瀏覽器工作狀態(tài),定位漏洞產(chǎn)生位點,為修復(fù)漏洞提供有效建議。
Chromium瀏覽器使用Blink引擎作為其渲染引擎。
Blink引擎包含的主要模塊,以及其在渲染網(wǎng)頁時的作用如圖1所示。由圖1可知,圓角矩形對應(yīng)的結(jié)點表示一個Blink模塊,矩形對應(yīng)的結(jié)點表示原始文本,菱形對應(yīng)的結(jié)點表示Blink內(nèi)部數(shù)據(jù)結(jié)構(gòu)。Blink內(nèi),HTML解析器負責對接收到的原始HTML文本進行解析,將原始HTML文本反序列化為內(nèi)部HTML DOM結(jié)點數(shù)據(jù)結(jié)構(gòu),同時配合DOM樹生成器,依據(jù)原始HTML文本的從屬關(guān)系,連接這些DOM結(jié)點組成DOM樹。CSS解析器負責將原始HTML文本內(nèi)包含的CSS樣式表解析為CSS規(guī)則樹。在DOM樹生成完畢后,將DOM樹與CSS規(guī)則樹合并,使用渲染排版模塊生成渲染樹交給Content中的渲染模塊實現(xiàn)網(wǎng)頁的渲染。
圖1 Blink渲染引擎主要模塊及工作流程
JavaScript腳本語言因為其特有的面向?qū)ο筇匦訹1]、事件驅(qū)動特性、安全性,得到廣泛的應(yīng)用。業(yè)內(nèi)為統(tǒng)一JavaScript標準,提出了ECMA-262[2]。Chromium瀏覽器使用V8腳本引擎作為其JavaScript解析器。根據(jù)W3C HTML標準[3],當網(wǎng)頁渲染過程需要JavaScript腳本參與時(如處理 嘉鱼县| 鄱阳县| 石阡县| 正定县| 永年县| 永修县| 徐闻县| 乌鲁木齐县| 怀远县| 罗田县| 房山区| 高平市| 常山县| 耒阳市| 江孜县| 德钦县| 贡嘎县| 宣威市| 奎屯市| 昆明市| 温宿县| 于田县| 大同市| 密山市| 永修县| 嘉峪关市| 郧西县| 崇州市| 汝南县| 肃南| 福清市| 博湖县| 深圳市| 普兰店市| 曲阳县| 股票| 汉川市| 棋牌| 互助| 松潘县| 太保市|