CN109446079A - 一种基于ast突变的浏览器模糊测试方法 - Google Patents
一种基于ast突变的浏览器模糊测试方法 Download PDFInfo
- Publication number
- CN109446079A CN109446079A CN201811224105.XA CN201811224105A CN109446079A CN 109446079 A CN109446079 A CN 109446079A CN 201811224105 A CN201811224105 A CN 201811224105A CN 109446079 A CN109446079 A CN 109446079A
- Authority
- CN
- China
- Prior art keywords
- browser
- test sample
- ast
- confirmatory test
- mutation
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种基于AST突变的浏览器模糊测试方法,通过将旧版本浏览器存在的漏洞的验证性测试样本解析为AST语法树,进行AST语法突变后得到新的AST语法树,重新解析生成新的验证性测试样本,浏览器对新的验证性测试样本进行加载,以调试器监控浏览器的运行,若浏览器崩溃,则收集崩溃时刻的验证性测试样本,上传到WEB服务器端,删除运行时的验证性测试样本,否则正常,删除运行时的验证性测试样本。本发明可以在原有的验证性测试样本进行突变,重新生成新的验证性测试样本,让浏览器运行,监控浏览器的状态,收集使得浏览器奔溃的验证性测试样本,能大大地提高浏览器模糊测试的效率,提高漏洞挖掘的效率。
Description
技术领域
本发明涉及通过软件的测试或调试防止错误的技术领域,特别涉及一种提高漏洞挖掘效率的基于AST突变的浏览器模糊测试方法。
背景技术
模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法,即利用自动化或是半自动化的方法重复向应用提供输入。
用于模糊测试的模糊测试器(fuzzer)分为两类,其一是基于变异(mutation-based)的模糊测试器,通过对已有的数据样本进行变异来创建,而另一类是基于生成(generation-based)的模糊测试器,为被测系统使用的协议或是文件格式建模,基于模型生成输入并据此创建测试用例。
现有技术中,浏览器的模糊测试更多采用针对DOM树或者Javascript引擎来进行,然而,由于目前的浏览器已经针对这些模糊测试出的漏洞进行了修补并在浏览器层面做了一些防护机制,因此,目前单一的模糊测试方法比较难以模糊测试出浏览器漏洞,甚至就算有漏洞可能也需要模糊测试一个月或者更多时间才能发现。
发明内容
本发明解决的技术问题是,现有技术中,目前的浏览器已经针对模糊测试出的漏洞进行了修补并在浏览器层面做了一些防护机制,而导致的目前单一的模糊测试方法比较难以模糊测试出浏览器漏洞,甚至就算有漏洞可能也需要模糊测试一个月或者更多时间才能发现的问题,进而提供了一种优化的基于AST突变的浏览器模糊测试方法。
本发明所采用的技术方案是,一种基于AST突变的浏览器模糊测试方法,所述方法包括以下步骤:
步骤1:启动模糊测试;
步骤2:启动浏览器进程;
步骤3:将旧版本浏览器存在的漏洞的验证性测试样本解析为AST语法树,进行AST语法突变;
步骤4:将突变后的AST语法树重新解析,生成新的验证性测试样本;
步骤5:以浏览器对新的验证性测试样本进行加载,以调试器监控浏览器的运行;
步骤6:若浏览器崩溃,则收集崩溃时刻的验证性测试样本,上传到WEB服务器端,删除运行时的验证性测试样本,返回步骤2,否则,进行下一步;
步骤7:删除运行时的验证性测试样本,返回步骤3。
优选地,所述步骤3中,AST语法突变包括随机增加AST语法或替换字符串或替换整数值。
优选地,所述替换字符串为将字符串匹配语法树中的关键字并对字符串的值进行替换。
优选地,所述验证性测试为用户提出性能要求和扩展需求的指标。
本发明提供了一种优化的基于AST突变的浏览器模糊测试方法,通过将在先存在漏洞的验证性测试样本解析为AST语法树,进行AST语法突变后得到新的AST语法树,重新解析生成新的验证性测试样本,浏览器对新的验证性测试样本进行加载,以调试器监控浏览器的运行,若浏览器崩溃,则收集崩溃时刻的验证性测试样本,上传到WEB服务器端,删除运行时的验证性测试样本,否则正常,删除运行时的验证性测试样本。本发明的基于AST语法树突变的方法可以在原有的验证性测试样本进行突变,重新生成新的验证性测试样本,让浏览器运行,监控浏览器的状态,收集使得浏览器奔溃的验证性测试样本,能大大地提高浏览器模糊测试的效率,提高漏洞挖掘的效率。
具体实施方式
下面结合实施例对本发明做进一步的详细描述,但本发明的保护范围并不限于此。
本发明涉及一种基于AST突变的浏览器模糊测试方法。
所述验证性测试为用户提出性能要求和扩展需求的指标。
本发明中,验证性测试即Proof of Concept,是业界流行的针对客户具体应用的验证性测试,根据用户对采用系统提出的性能要求和扩展需求的指标,在选用服务器上进行真实数据的运行,对承载用户数据量和运行时间进行实际测算,并根据用户未来业务扩展的需求加大数据量以验证系统和平台的承载能力和性能变化。
所述方法包括以下步骤。
步骤1:启动模糊测试。
步骤2:启动浏览器进程。
本发明中,事实上,步骤2与步骤4是可以相对独立、分开运行的,并没有先后顺序,也不存在没有验证性测试样本的情况,当检测时遇到浏览器崩溃的情况则重启浏览器。
步骤3:将旧版本浏览器存在的漏洞的验证性测试样本解析为AST语法树,进行AST语法突变。
所述步骤3中,AST语法突变包括随机增加AST语法或替换字符串或替换整数值。
所述替换字符串为将字符串匹配语法树中的关键字并对字符串的值进行替换。
本发明中,旧版本浏览器存在的漏洞的验证性测试样本是指曾经存在漏洞的验证性测试样本POC,现在这些POC无法使浏览器进程崩溃,故需要进行突变修改。
本发明中,对于语法突变,可以将验证性测试样本中的数值,如0x10000,更改为0x7fffffff等容易造成整数溢出漏洞之类的数值,亦可以对函数repeat等做替换实现。
本发明中,对于替换字符串,可以匹配语法树中的property、raw等关键字,对其值进行替换,只要符合AST的语法规则,最终可以成功重新解析为js语法的验证性测试样本即可。
步骤4:将突变后的AST语法树重新解析,生成新的验证性测试样本。
步骤5:以浏览器对新的验证性测试样本进行加载,以调试器监控浏览器的运行。
步骤6:若浏览器崩溃,则收集崩溃时刻的验证性测试样本,上传到WEB服务器端,删除运行时的验证性测试样本,返回步骤2,否则,进行下一步。
本发明中,由于上传的这些验证性测试样本POC可以使浏览器进程崩溃、触发漏洞,故需要进行收集,而没有使浏览器进程崩溃则表明这些验证性测试样本POC是无效的。
步骤7:删除运行时的验证性测试样本,返回步骤3。
本发明中,应当及时删除完成作业的验证性测试样本,以免文件越来越多、占用硬盘。
本发明通过将在先存在漏洞的验证性测试样本解析为AST语法树,进行AST语法突变后得到新的AST语法树,重新解析生成新的验证性测试样本,浏览器对新的验证性测试样本进行加载,以调试器监控浏览器的运行,若浏览器崩溃,则收集崩溃时刻的验证性测试样本,上传到WEB服务器端,删除运行时的验证性测试样本,否则正常,删除运行时的验证性测试样本。本发明的基于AST语法树突变的方法可以在原有的验证性测试样本进行突变,重新生成新的验证性测试样本,让浏览器运行,监控浏览器的状态,收集使得浏览器奔溃的验证性测试样本,能大大地提高浏览器模糊测试的效率,提高漏洞挖掘的效率。
Claims (4)
1.一种基于AST突变的浏览器模糊测试方法,其特征在于:所述方法包括以下步骤:
步骤1:启动模糊测试;
步骤2:启动浏览器进程;
步骤3:将旧版本浏览器存在的漏洞的验证性测试样本解析为AST语法树,进行AST语法突变;
步骤4:将突变后的AST语法树重新解析,生成新的验证性测试样本;
步骤5:以浏览器对新的验证性测试样本进行加载,以调试器监控浏览器的运行;
步骤6:若浏览器崩溃,则收集崩溃时刻的验证性测试样本,上传到WEB服务器端,删除运行时的验证性测试样本,返回步骤2,否则,进行下一步;
步骤7:删除运行时的验证性测试样本,返回步骤3。
2.根据权利要求1所述的一种基于AST突变的浏览器模糊测试方法,其特征在于:所述步骤3中,AST语法突变包括随机增加AST语法或替换字符串或替换整数值。
3.根据权利要求2所述的一种基于AST突变的浏览器模糊测试方法,其特征在于:所述替换字符串为将字符串匹配语法树中的关键字并对字符串的值进行替换。
4.根据权利要求1所述的一种基于AST突变的浏览器模糊测试方法,其特征在于:所述验证性测试为用户提出性能要求和扩展需求的指标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811224105.XA CN109446079B (zh) | 2018-10-19 | 2018-10-19 | 一种基于ast突变的浏览器模糊测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811224105.XA CN109446079B (zh) | 2018-10-19 | 2018-10-19 | 一种基于ast突变的浏览器模糊测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109446079A true CN109446079A (zh) | 2019-03-08 |
CN109446079B CN109446079B (zh) | 2022-02-18 |
Family
ID=65546840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811224105.XA Active CN109446079B (zh) | 2018-10-19 | 2018-10-19 | 一种基于ast突变的浏览器模糊测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109446079B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131115A (zh) * | 2020-09-23 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 一种智能合约模糊测试的方法、装置及存储介质 |
CN112685314A (zh) * | 2021-01-05 | 2021-04-20 | 广州知图科技有限公司 | 一种JavaScript引擎安全测试方法及测试系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631706A (zh) * | 2012-08-27 | 2014-03-12 | 腾讯科技(深圳)有限公司 | 一种浏览器测试方法和装置 |
CN103942137A (zh) * | 2013-01-23 | 2014-07-23 | 腾讯科技(深圳)有限公司 | 浏览器兼容性测试方法及装置 |
CN105574416A (zh) * | 2015-12-16 | 2016-05-11 | 北京神州绿盟信息安全科技股份有限公司 | 一种浏览器漏洞检测方法及装置 |
-
2018
- 2018-10-19 CN CN201811224105.XA patent/CN109446079B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631706A (zh) * | 2012-08-27 | 2014-03-12 | 腾讯科技(深圳)有限公司 | 一种浏览器测试方法和装置 |
CN103942137A (zh) * | 2013-01-23 | 2014-07-23 | 腾讯科技(深圳)有限公司 | 浏览器兼容性测试方法及装置 |
CN105574416A (zh) * | 2015-12-16 | 2016-05-11 | 北京神州绿盟信息安全科技股份有限公司 | 一种浏览器漏洞检测方法及装置 |
Non-Patent Citations (1)
Title |
---|
程勇等: "针对JavaScript浏览器兼容性的变异测试方法", 《计算机应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131115A (zh) * | 2020-09-23 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 一种智能合约模糊测试的方法、装置及存储介质 |
CN112685314A (zh) * | 2021-01-05 | 2021-04-20 | 广州知图科技有限公司 | 一种JavaScript引擎安全测试方法及测试系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109446079B (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Barbour et al. | An empirical study of faults in late propagation clone genealogies | |
Gupta et al. | PHP-sensor: a prototype method to discover workflow violation and XSS vulnerabilities in PHP web applications | |
Beschastnikh et al. | Leveraging existing instrumentation to automatically infer invariant-constrained models | |
Lo et al. | SMArTIC: Towards building an accurate, robust and scalable specification miner | |
Wu et al. | Crashlocator: Locating crashing faults based on crash stacks | |
Yuan et al. | Sherlog: error diagnosis by connecting clues from run-time logs | |
US6785848B1 (en) | Method and system for categorizing failures of a program module | |
CN105068925B (zh) | 软件安全缺陷发现系统 | |
Stock et al. | From facepalm to brain bender: Exploring client-side cross-site scripting | |
WO2015084319A1 (en) | Code routine performance prediction using test results from code integration tool | |
JP2009121832A (ja) | 分析装置、分析システム及びコンピュータプログラム | |
CN106407102B (zh) | 应用程序的模糊测试方法、装置及系统 | |
US11429574B2 (en) | Computer system diagnostic log chain | |
CN105404580A (zh) | 分布式压力测试系统和方法 | |
Astekin et al. | DILAF: a framework for distributed analysis of large‐scale system logs for anomaly detection | |
Xu et al. | Detecting cloud provisioning errors using an annotated process model | |
KR101696694B1 (ko) | 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치 | |
CN109446079A (zh) | 一种基于ast突变的浏览器模糊测试方法 | |
Li et al. | LogicScope: Automatic discovery of logic vulnerabilities within web applications | |
Rong et al. | How is logging practice implemented in open source software projects? a preliminary exploration | |
CN116405412B (zh) | 基于混沌工程故障模拟服务端集群有效性验证方法和系统 | |
JP2009237749A (ja) | 障害情報収集方式 | |
CN101833505B (zh) | 一种软件系统安全缺陷检测方法 | |
CN116756021A (zh) | 基于事件分析的故障定位方法、装置、电子设备及介质 | |
CN112446030B (zh) | 一种网页端的文件上传漏洞检测方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |