APP下载

基于Chrome调试协议的Chromium浏览器V8引擎漏洞检测方法

2020-04-29秦梦远傅忠传

智能计算机与应用 2020年2期
关键词:源代码字节日志

秦梦远, 傅忠传

(哈尔滨工业大学 计算机科学与技术学院, 哈尔滨 150001)

0 引 言

从上个世纪90年代至今,随着互联网技术的二次飞跃,商业机构参与建设互联网,网络逐渐成为人们日常生活中不可或缺的一部分。因此,大量以浏览器为入口进行穿透攻击,盗取用户个人信息,甚至破坏用户操作系统的恶意代码纷纷涌现。这种攻击方式不同于传统的端口攻击,由于攻击载荷是无害的HTML文本,需要通过浏览器的解析与渲染才能有效触发,本机防火墙无法对其进行有效防御。

Chrome浏览器作为目前最流行的浏览器,其商业版本Chrome与对应的开源版本Chromium,以及国内外各种基于Chromium浏览器内核开发的浏览器,占据了超过半数的浏览器市场份额。对于Chromium浏览器内核的漏洞,谷歌Chrome开发团队能够第一时间对其进行修复,并提供补丁,但对于那些基于Chromium浏览器内核的浏览器开发者而言,修复漏洞并非易事。由于对Chromium浏览器内核的核心功能缺乏足够透彻的了解,开发者往往不能自主定位漏洞产生的位点,更不必谈修复漏洞;而对Chromium浏览器内核的自主修改,往往又导致了无法及时移植最新版本的Chromium浏览器内核,从而使自行研发的浏览器暴露在漏洞威胁之中。

针对上述问题,本文首先对Chromium浏览器内核的工作原理进行了分析;对Chrome调试协议的原理和实现进行详细阐述;针对Chrome调试协议提出一种修改方案,使Chromium浏览器能够对外传输内部工作状态信息,并以此为基础构建漏洞扫描平台,在浏览器崩溃时回溯浏览器工作状态,定位漏洞产生位点,为修复漏洞提供有效建议。

1 Chromium浏览器工作原理

1.1 渲染引擎结构与工作原理

Chromium浏览器使用Blink引擎作为其渲染引擎。

Blink引擎包含的主要模块,以及其在渲染网页时的作用如图1所示。由图1可知,圆角矩形对应的结点表示一个Blink模块,矩形对应的结点表示原始文本,菱形对应的结点表示Blink内部数据结构。Blink内,HTML解析器负责对接收到的原始HTML文本进行解析,将原始HTML文本反序列化为内部HTML DOM结点数据结构,同时配合DOM树生成器,依据原始HTML文本的从属关系,连接这些DOM结点组成DOM树。CSS解析器负责将原始HTML文本内包含的CSS样式表解析为CSS规则树。在DOM树生成完毕后,将DOM树与CSS规则树合并,使用渲染排版模块生成渲染树交给Content中的渲染模块实现网页的渲染。

图1 Blink渲染引擎主要模块及工作流程

1.2 脚本引擎结构与工作原理

JavaScript脚本语言因为其特有的面向对象特性[1]、事件驱动特性、安全性,得到广泛的应用。业内为统一JavaScript标准,提出了ECMA-262[2]。Chromium浏览器使用V8脚本引擎作为其JavaScript解析器。根据W3C HTML标准[3],当网页渲染过程需要JavaScript脚本参与时(如处理