CN102799524A - 一种浏览器扩展的缺陷检测方法 - Google Patents
一种浏览器扩展的缺陷检测方法 Download PDFInfo
- Publication number
- CN102799524A CN102799524A CN201210227518XA CN201210227518A CN102799524A CN 102799524 A CN102799524 A CN 102799524A CN 201210227518X A CN201210227518X A CN 201210227518XA CN 201210227518 A CN201210227518 A CN 201210227518A CN 102799524 A CN102799524 A CN 102799524A
- Authority
- CN
- China
- Prior art keywords
- defect
- expansion
- code
- extension
- javascript
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种浏览器扩展的缺陷检测方法,包括:(1)将扩展缺陷特征转化为Datalog语言格式的缺陷信息作为规则,由所述规则构建关于扩展的安全缺陷特征库;(2)对扩展源代码进行预处理,从源代码中分离出描述扩展行为的JavaScript代码,转化成Datalog语言格式的信息作为事实;(3)将JavaScript代码变成抽象语法树并且转换成Datalog语言格式,(4)待检测的扩展信息储存为演绎数据库,进行演绎数据库推理,从扩展的演绎数据库中查找跟安全缺陷特征库里面的缺陷条目匹配的部分实现扩展的检测。与现有技术相比,本发明使浏览器扩展的人工审核的工作能够实现自动化,也提高了精确度。
Description
技术领域
本发明涉及软件安全技术领域,特别是涉及浏览器扩展中存在的安全漏洞的检测方法。
背景技术
随着互联网在人们生活中扮演着日益重要的角色,浏览器成为了当今人们使用最多的一个计算机应用软件。对于用户来说,它正逐渐变为一个功能强大的平台。替代了传统的桌面应用,为了实现浏览器代替桌面应用和操作系统,就需要对浏览器内核进行越来越多的扩展。
早期的浏览器只是用来阅读HTML语言编写的文档的工具,对于网络来说并没有构成威胁。但是随着新技术的不断发展,特别是JavaScript、VisualScript、Java应用程序及ActiveX控件在Internet的广泛应用,一方面这些技术突破使浏览器的功能大大增强,丰富了网上资源,但另一方面也为网络带来了新的安全问题。浏览器的安全性问题包括浏览器本身和第三方扩展两个方面的问题,相关的研究表明,浏览器的安全性问题绝大部分来源于第三方开发的扩展。扩展的开发大多数都是由安全意识不够的爱好者完成的,导致浏览器的扩展安全状况令人担忧。浏览器允许不可信的扩展以最高的权限运行,更使得用户的隐私受到极大的威胁。
扩展(Extensions)是指添加新功能到浏览器中,可以是简单添加一个工具栏按钮,也可以始实现一个完整的新功能。扩展可以让浏览器更加适合个人需要。扩展跟插件(plugins)不同。插件帮助浏览器显示特殊内容,例如播放多媒体文件。
基于JavaScript语言的浏览器扩展(JSEs)通过提升浏览器的外观、用户体验扩展了浏览器的核心功能,因而被商用浏览器广泛采用。为了使扩展能够满足用户多样化的需求,浏览器赋予扩展浏览器本身全部的权限。例如,跟web工程里的JavaScript不一样,JSEs里的代码不受“同源策略”限制。即使是恶意JSEs也可以利用它们的权限来危害机密性和一致性,例如,窃取敏感信息如Cookies和保存的密码,或者在主机上执行任意的语句。即使一个JSE本身不是恶意的,但是JSE和浏览器里的缺陷也可能让一个远程攻击者威胁到浏览器的安全。同时,JavaScript语言一直被一些语言纯化学家认为是恶劣的,因为它动态生成代码的特性,这些观点使人们相信,JavaScript语言不适于静态分析。举一个简单的例子,如果认为document.write语句是不安全的话,为了查找它,静态分析方法需要考虑到下表中document.write变式的三种形式。因而更增加对扩展的安全威胁的侦测难度。
表1.document.write的三种形式
从Mozilla官网上可以看到,光Firefox浏览器的扩展总下载数量已经达到2,493,374,422次,在2010一年中,谷歌Chrome浏览器的扩展数量也从3,000个增加到11,623个,其他一些国内新推出的浏览器,大部分也都提供了扩展功能,扩展数量也增加得很快,奇虎360浏览器的扩展数量在2011年4月份的时候也增加到了一万个以上。这些扩展都是由扩展开发爱好者提交到扩展中心的,所以不可避免会有一些恶意的扩展会被提交到官方扩展中心并被用户下载安装。比起恶意扩展,数量更多的是由安全意识不足的开发者提交的容易被黑客利用的扩展。
发明内容
基于上述现有技术存在的问题,本发明提出了一种浏览器扩展的缺陷检测方法,利用扩展行为的特征库与扩展行为信息的结合,实现对扩展缺陷的推理和匹配,采用对Java语言进行静态分析的先进方法,将其应用于对扩展的静态分析,找出与缺陷特征匹配的缺陷。
本发明提出了一种一种浏览器扩展的缺陷检测方法,该方法包括以下步骤:
步骤一、将扩展缺陷特征转化为Datalog语言格式的缺陷信息作为规则,并由所述规则构建关于扩展的安全缺陷特征库;
步骤二、对扩展源代码进行预处理,从源代码中分离出描述扩展行为的JavaScript代码和界面表示语言XUL,将该JavaScript代码转化成Datalog语言格式的信息作为事实;
步骤三、将JavaScript代码变成抽象语法树,所述抽象语法树包含扩展信息;以抽象语法树与事实之间的匹配为依据将所述抽象语法树转换成Datalog语言格式,
步骤四、待检测的扩展信息全部储存为一个演绎数据库,该演绎数据库包含了原来扩展源代码中的调用、传参、声明和指向;利用开源工具bddbddb进行演绎数据库推理,从扩展的演绎数据库中查找跟安全缺陷特征库里面的缺陷条目匹配的部分,实现扩展的检测。
所述匹配的具体处理是针对扩展缺陷,分别找到了一条匹配,并给出缺陷所在的代码行号
与现有技术相比,本发明使浏览器扩展的人工审核的工作能够实现自动化,也提高了精确度。
附图说明
图1为本发明的浏览器扩展的应用场景示意图;
图2为本发明的基于指向分析的浏览器扩展安全漏洞检测方法的数据流示意图;
图3为本发明的基于指向分析的浏览器扩展安全漏洞检测方法的具体实现流程示意图;
图4为本发明的基于规则库的转化成的抽象语法树数据结构图;
图5为本发明的基于指向分析的浏览器扩展安全漏洞检测方法BGP验证结果显示界面图;
图6为本发明的基于指向分析的浏览器扩展安全漏洞检测方法检查到的扩展缺陷显示界面图。
具体实施方式
以下结合附图及较佳实施例,对依据本发明提供的具体实施方式、结构、特征及其功效,详细说明如下。
如图1所示,为本发明的浏览器扩展的缺陷检测方法的应用场景示意图,开发者将开发好的扩展上线提交,判断该扩展是否有备攻击的脆弱性,如果有,则拒绝发布和输出报警;如果无,则将扩展进行发布,提供用户选择使用。
本专利提出了一种浏览器扩展的缺陷检测方法,该方法借助于一个表示成Datalog规则形式的扩展缺陷库,首先将扩展进行预处理,从中分离出JavaScript代码,再将JavaScript代码转化成抽象语法树,根据抽象语法树将源程序表示成易于进行布尔操作的二元决策图形式的事实(Fact),最后检测漏洞的工作就变成从这些事实中查询符合缺陷规则的事实序列,这部分由开源工具bddbddb进行,该方法的数据流如图2所示。
如图3所示,主要包括分离JavaScript代码,转化成抽象语法树,生成二元决策图文件,查找缺陷匹配等步骤。各步骤详细说明如下:
1、分离JavaScript代码
扩展中的JavaScript以两种形式存在,一种是单独的JavaScript文件,这种JavaScript代码比较容易分离,只需要遍历扩展的文件目录,找出扩展名为.js的文件就可以了;另外一种是嵌入在xul等其他文件中的代码片段,这部分JavaScript代码比较难以分离,需要分情况进行处理。
第一种情况是document元素的事件由JavaScript代码定义,如下面的代码片段所示,元素“homepage”的onclick事件是一段JavaScript代码。
<descriptionid="homepage"
class="text-link"onclick="Utils.loadInBrowser(this.getAttribute('value'))"/>
这种情况的处理办法是改写,例如上面的代码片段会被改写成为如下代码片段并被添加到分离出的JavaScript源代码文件尾部,这样也避免了出现引用未定义的函数的错误。代码为:
document.getElementById("homepage").onclick=Utils.loadInBrowser(this.getAttribute('value'));。
另外一种情况是xul等文件中的JavaScript代码片段,如下面的代码片段所示。
这种情况的处理方法比较简单,将其按照原来在文件中的顺序复制到分离出的JavaScript代码文件的尾部就可以了。
2、转化为抽象语法树
虽然Rhino和Firefox都是Mozilla基金会的开源工程,但是两者支持的JavaScript文法却不相同。Rhino支持JavaScript 1.7的标准语言特性,但是Firefox扩展使用的JavaScript是一种只在该版本的浏览器中使用的JavaScript标准。这两种JavaScript的区别主要包括:
①、Firefox支持“let”关键字而标准JavaScript不支持
“let”关键字类似于“var”,表示该变量的作用域是局部的。因为在浏览器扩展安全缺陷检测工具的缺陷特征中没有区分变量的作用域,所以预处理模块就扫描分离出的JavaScript代码,并把所有“let”字符串替换成了“var”。
②、Firefox支持“yield”关键字而标准JavaScript不支持
“yield”关键字表示一个迭代器的生成器,预处理模块扫描分离出的JavaScript代码并改写“yield”关键字。可以用不使用“yield”关键字的代码替换。
经过这样的处理之后,开源工具Rhino就可以将JavaScript代码转化成跟编程语言无关的抽象语法树,以便进行下一步的处理。
3、生成二元决策图文件
转化成的抽象语法树包含着扩展的信息,同时又跟编程语言的文法无关。我们将它变成容易进行查询的形式,就是Datalog的演绎数据库的形式。这个转化过程是靠将抽象语法树与11种Datalog的事实之间的匹配为依据的。
表2 11种事实(Fact)
4、查找缺陷匹配
现在扩展的信息全部存在一个演绎数据库中,这个数据库包含了原来扩展源代码中的调用、传参、声明和指向等各种必要的信息,开源工具bddbddb是一个高效的演绎数据库推理工具,我们的方法最后一步就是借助于这个工具,从扩展的演绎数据库中查找跟缺陷特征库里面的缺陷条目匹配的部分。
以下通过具体实施例进一步详细说明本发明的基于指向分析的浏览器扩展缺陷检测方法的的技术方案。
本实施例中选取了当前mozilla网站上面下载数量最多的扩展addblock的1.3.3版本。通过检测该扩展中的安全漏洞来说明本方法的使用。
1、假设要检查的扩展缺陷有9条,定义如下:
表3待检查的扩展缺陷定义
2、将扩展的路径输入工具,预处理模块会遍历这个路径,将所有的JavaScript文件都找到,然后扫描其他的文件,将其中嵌入的JavaScript代码片段处理后加在刚才分离出来的JavaScript代码后面。
3、调用Rhino模块生成AST,生成的部分AST如附图4所示。然后,BEVDT会从中抽取Datalog事实,并写在bevdt.dtl文件中。
4、用缺陷特征文件对Datalog事实进行推理,推理的工作由开源工具bddbddb完成,如图5所示展示了推理过程,bddbddb依次对9条扩展缺陷的定义进行检查,并将结果打印出来,如图6所示。从图中可以看到,针对LocationAssign和XMLHttpRequest扩展缺陷,分别找到了1条匹配,并给出了具体的代码所在行号,156(8)和131(7),这样开发人员就能很快地根据报告定位到源代码中。经手工验证,这两处缺陷的确存在。
设计出了一个基于缺陷库的浏览器扩展缺陷安全检测工具,并编程实现了设计。实现了将JavaScript的AST转化为Datalog语言的工作,这种转化本来没有一种标准,本专利提出了一种方法。提出了一种以缺陷库检测扩展的方法,这与以往只对扩展进行原则的证明不同,得到的结果不是一些对原则的破坏,而是缺陷,因此对开发人员帮助更大。将以往应用于对Java语言进行静态分析的Datalog语言应用于对JavaScript语言的静态分析。根据JavaScript语言的特性,从程序中提取出H(堆分配对象和函数)、V(变量)、I(调用点)、F(属性)和Z(整数)五个域,11个EDB。
综上所述,本专利对浏览器扩展安全问题提出了一种解决方法,并且编程实现了该设计,实验证明,这种方案是可行的,而且效率很高。
Claims (2)
1.一种浏览器扩展的缺陷检测方法,其特征在于,该方法包括以下步骤:
步骤一、将扩展缺陷特征转化为Datalog语言格式的缺陷信息作为规则,并由所述规则构建关于扩展的安全缺陷特征库;
步骤二、对扩展源代码进行预处理,从源代码中分离出描述扩展行为的JavaScript代码和界面表示语言XUL,将该JavaScript代码转化成Datalog语言格式的信息作为事实;
步骤三、将JavaScript代码变成抽象语法树,所述抽象语法树包含扩展信息;以抽象语法树与事实之间的匹配为依据将所述抽象语法树转换成Datalog语言格式,
步骤四、待检测的扩展信息全部储存为一个演绎数据库,该演绎数据库包含了原来扩展源代码中的调用、传参、声明和指向;利用开源工具bddbddb进行演绎数据库推理,从扩展的演绎数据库中查找跟安全缺陷特征库里面的缺陷条目匹配的部分,实现扩展的检测。
2.如权利要求1所述的浏览器扩展的缺陷检测方法,其特征在于,所述匹配的具体处理是针对扩展缺陷,分别找到了一条匹配,并给出缺陷所在的代码行号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210227518XA CN102799524A (zh) | 2012-07-03 | 2012-07-03 | 一种浏览器扩展的缺陷检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210227518XA CN102799524A (zh) | 2012-07-03 | 2012-07-03 | 一种浏览器扩展的缺陷检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102799524A true CN102799524A (zh) | 2012-11-28 |
Family
ID=47198637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210227518XA Pending CN102799524A (zh) | 2012-07-03 | 2012-07-03 | 一种浏览器扩展的缺陷检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102799524A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335655A (zh) * | 2015-09-22 | 2016-02-17 | 南京大学 | 一种基于敏感行为识别的安卓应用安全性分析方法 |
CN105808423A (zh) * | 2016-02-04 | 2016-07-27 | 天津橙子科技有限公司 | 构建基于web工程测试用例编程语言的执行引擎的方法 |
CN106650437A (zh) * | 2016-12-29 | 2017-05-10 | 广州华多网络科技有限公司 | webshell检测方法和装置 |
CN108197024A (zh) * | 2017-12-28 | 2018-06-22 | 深圳Tcl数字技术有限公司 | 嵌入式浏览器调试方法、调试终端及计算机可读存储介质 |
CN109684838A (zh) * | 2018-11-23 | 2019-04-26 | 电子科技大学 | 一种针对以太坊智能合约的静态代码审计系统及方法 |
CN112052448A (zh) * | 2020-09-14 | 2020-12-08 | 莫毓昌 | 基于关键词自动识别和决策图模型的Web攻击检测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010140407A (ja) * | 2008-12-15 | 2010-06-24 | Nomura Research Institute Ltd | ソースコード検査装置 |
CN101937388A (zh) * | 2009-12-17 | 2011-01-05 | 北京测腾信息技术有限公司 | 一种高可扩展性和可维护性的源代码缺陷检测方法及装置 |
-
2012
- 2012-07-03 CN CN201210227518XA patent/CN102799524A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010140407A (ja) * | 2008-12-15 | 2010-06-24 | Nomura Research Institute Ltd | ソースコード検査装置 |
CN101937388A (zh) * | 2009-12-17 | 2011-01-05 | 北京测腾信息技术有限公司 | 一种高可扩展性和可维护性的源代码缺陷检测方法及装置 |
Non-Patent Citations (1)
Title |
---|
GUARNIERI S,LIVSHITS B.: "《GATEKEEPER: Mostly Static Enforcement of Security and Reliability Policies for JavaScript Code》", 《USENIX SECURITY SYMPOSIUM》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335655A (zh) * | 2015-09-22 | 2016-02-17 | 南京大学 | 一种基于敏感行为识别的安卓应用安全性分析方法 |
CN105808423A (zh) * | 2016-02-04 | 2016-07-27 | 天津橙子科技有限公司 | 构建基于web工程测试用例编程语言的执行引擎的方法 |
CN105808423B (zh) * | 2016-02-04 | 2018-11-13 | 天津橙子科技有限公司 | 构建基于web工程测试用例编程语言的执行引擎的方法 |
CN106650437A (zh) * | 2016-12-29 | 2017-05-10 | 广州华多网络科技有限公司 | webshell检测方法和装置 |
CN108197024A (zh) * | 2017-12-28 | 2018-06-22 | 深圳Tcl数字技术有限公司 | 嵌入式浏览器调试方法、调试终端及计算机可读存储介质 |
CN108197024B (zh) * | 2017-12-28 | 2022-01-04 | 深圳Tcl数字技术有限公司 | 嵌入式浏览器调试方法、调试终端及计算机可读存储介质 |
CN109684838A (zh) * | 2018-11-23 | 2019-04-26 | 电子科技大学 | 一种针对以太坊智能合约的静态代码审计系统及方法 |
CN109684838B (zh) * | 2018-11-23 | 2020-03-27 | 电子科技大学 | 一种针对以太坊智能合约的静态代码审计系统及方法 |
CN112052448A (zh) * | 2020-09-14 | 2020-12-08 | 莫毓昌 | 基于关键词自动识别和决策图模型的Web攻击检测方法 |
CN112052448B (zh) * | 2020-09-14 | 2023-12-12 | 莫毓昌 | 基于关键词自动识别和决策图模型的Web攻击检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dewi et al. | Social media web scraping using social media developers API and regex | |
CN102799524A (zh) | 一种浏览器扩展的缺陷检测方法 | |
US8255885B2 (en) | Detecting copied computer source code by examining computer object code | |
US11263062B2 (en) | API mashup exploration and recommendation | |
CN105205356B (zh) | 一种app应用重打包检测方法 | |
US20190196796A1 (en) | Api mashup generation | |
Rao et al. | An enhanced blacklist method to detect phishing websites | |
CN103761476A (zh) | 特征提取的方法及装置 | |
CN113342639B (zh) | 小程序安全风险评估方法和电子设备 | |
CN103455758A (zh) | 恶意网站的识别方法及装置 | |
CN104168293A (zh) | 结合本地内容规则库识别可疑钓鱼网页的方法及系统 | |
CN111181922A (zh) | 一种钓鱼链接检测方法及系统 | |
CN102591965A (zh) | 一种黑链检测的方法及装置 | |
CN105138907A (zh) | 一种主动探测被攻击网站的方法和系统 | |
Nguyen et al. | Toward a deep learning approach for detecting php webshell | |
CN103366120A (zh) | 基于脚本的漏洞攻击图生成方法 | |
CN105160246A (zh) | 一种识别被劫持浏览器的方法及浏览器 | |
Akram et al. | DroidMD: an efficient and scalable android malware detection approach at source code level | |
CN103793508A (zh) | 一种加载推荐信息、网址检测的方法、装置和系统 | |
JP2021108189A (ja) | 脆弱性特徴の取得方法、装置及び電子機器 | |
Lyu et al. | An Efficient and Packing‐Resilient Two‐Phase Android Cloned Application Detection Approach | |
CN103838865A (zh) | 用于挖掘时效性种子页的方法及装置 | |
Martín et al. | Clonespot: Fast detection of android repackages | |
US8538935B2 (en) | One-to-one and one-to-many relationships in databases | |
Picazo-Sanchez et al. | DeDup. js: Discovering Malicious and Vulnerable Extensions by Detecting Duplication. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121128 |