CN116225962A - 用于模糊测试的json变异方法 - Google Patents
用于模糊测试的json变异方法 Download PDFInfo
- Publication number
- CN116225962A CN116225962A CN202310335990.3A CN202310335990A CN116225962A CN 116225962 A CN116225962 A CN 116225962A CN 202310335990 A CN202310335990 A CN 202310335990A CN 116225962 A CN116225962 A CN 116225962A
- Authority
- CN
- China
- Prior art keywords
- key
- seed
- attribute
- algorithm
- sequence
- 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
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012360 testing method Methods 0.000 title claims abstract description 17
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 47
- 230000035772 mutation Effects 0.000 claims abstract description 29
- 238000005070 sampling Methods 0.000 claims description 4
- 241001632422 Radiola linoides Species 0.000 claims description 2
- 238000010606 normalization Methods 0.000 claims description 2
- 238000011156 evaluation Methods 0.000 abstract description 3
- 101100439669 Drosophila melanogaster chrb gene Proteins 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了用于模糊测试的JSON变异方法,涉及计算机技术领域,包括:S1属性选择概率值和算法选择概率值是否初始化,若均是,进S2,反之,初始化后进S2;S2种子池中选取种子A,并移除;S3选择A的变异属性KEY;S4、选择变异算法进行变异;S5形成种子B’;S6判断B’是否已存在缓存序列内,若是,返回S3;反之则B’加入缓存序列,进S7;S7将B’送入目标程序,收集目标程序被覆盖的总行数,设定上一次覆盖总行数;S8分析该次变异,得到分析结果;S9将B’或A放入种子池,更新属性选择策略和算法选择策略;采用以概率为引导的策略选择,并且在结果评估之后对属性选择策略和算法选择策略进行修正,排除了变异的过度随机性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种用于模糊测试的JSON变异方法。
背景技术
直译式脚本语言对象简谱(Java Script Object Notation,JSON)是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,易于阅读和编写,同时也易于解析和生成,其简洁和清晰的层次结构使之成为理想的数据交换语言,有效地提升了数据交换过程中的数据传输效率。
在模糊测试系统里面,需要对JSON格式的文档进行变异生成新的文档来进行新一轮的测试,以命中目标程序的各个分支和覆盖路径,但传统的方法,变异效率低下,且变异文档质量不高。
发明内容
本发明的目的就在于为了解决上述问题设计了一种用于模糊测试的JSON变异方法。
本发明通过以下技术方案来实现上述目的:
用于模糊测试的JSON变异方法,包括:
S1、判断属性选择概率值和算法选择概率值是否进行初始化处理,若均是,则直接进入S2,反之,则属性选择概率值和算法选择概率值进行了初始化处理后再进入S2;
S2、在种子池中选取种子A,并将其从种子池中移除;
S3、根据属性选择概率值利用属性选择策略选择种子A的一个变异属性KEY;
S4、根据算法选择概率值利用算法选择策略选择一种变异算法,对变异属性KEY的属性值V进行变异处理,得到V’;
S5、复制种子A作为种子B,用V’替换种子B变异属性KEY的属性值V,形成新的种子B’;
S6、判断种子B’是否已存在缓存序列内,缓存序列为用于记录变异后的新种子的记录序列空间,若存在,则返回S3;反之则将种子B’加入缓存序列,并进入S7;
S7、将种子B’送入到目标程序进行执行,收集目标程序被覆盖的总行数hit,设定上一次覆盖总行数hit’;
S8、分析当前总行数hit和上一次总行数hit’,得到分析结果;
S9、根据分析结果将种子B’或种子A放入种子池,并且根据分析结果更新属性选择策略和算法选择策略。
本发明的有益效果在于:采用以概率为引导的策略选择,并且在结果评估之后对属性选择策略和算法选择策略进行修正,排除了变异的过度随机性;对变异结果进行缓存,有效地对变异结果进行去重;采用结果反馈更新机制,动态更新策略,使得变异朝着优秀方向进行,提升种子变异质量和提升种子的有效性;基于属性值的变异,变异后不破坏其结构,极大减少种子的无效性。
附图说明
图1是本发明用于模糊测试的JSON变异方法的流程图;
图2是本发明属性选择示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,“设置”、“连接”等术语应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接连接,也可以通过中间媒介间接连接,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
下面结合附图,对本发明的具体实施方式进行详细说明。
如图1所示,用于模糊测试的JSON变异方法,包括:
S1、判断属性选择概率值和算法选择概率值是否进行初始化处理,若均是,则直接进入S2,反之,则属性选择概率值和算法选择概率值进行了初始化处理后再进入S2;
属性选择概率值初始化处理包括:
1、统计种子池中所有的种子属性,去重后得到序列Key={Key0,Key1,...Keyi,...,Keyn};
算法选择概率值初始化处理包括:
(1)、遍历序列Key,根据属性值确定Keyi能使用的变异算法;
(2)、初始一个键值对KS集合,KS={Key0:{S01,S02,...S0a},Key1:{S11,S12,...S1b},...,Keyi:{Si1,Si2,...Sij},...,Keyn:{Sn1,Sn2,...Snm}},Sij表示为Keyi能使用的第j个变异算法;
(3)、初始化一个键值对KP集合,KP={Key0:{P01,P02,...P0a},Key1:{P11,P12,...P1b},...,Keyi:{Pi1,Pi2,...Pij},...,Keyn:{Pn1,Pn2,...Pnm}},算法选择概率值Pij表示为变异算法Sij被选择的概率。
S2、在种子池中选取种子A,并将其从种子池中移除。
S3、根据属性选择概率值利用属性选择策略选择种子A的一个变异属性KEY;具体包括
S32、对序列P'进行采样得到一个下标i,且i≤n;
S33、在序列Key中获取索引为i的Keyi作为变异属性KEY,并令P=P'。
S4、根据算法选择概率值利用算法选择策略选择一种变异算法,对变异属性KEY的属性值V进行变异处理,得到V’;具体为:
S41、根据变异属性KEY分别在KS集合和KP集合中获取候选算法序列Si和候选算法概率序列SPi,Si={Si0,Si1,...,Sij,...,Sim},SPi={Pi0,Pi1,...,Pij,...,Pim};
S43、对序列SPi'进行采样得到一个下标j,且j≤m;
S44、在序列Si中获取索引为j的Sij即为被选中的变异算法,并令SPi=SPi';
S45、利用变异算法Sij对变异属性KEY的属性值V进行变异处理,得到V’。
S5、复制种子A作为种子B,用V’替换种子B变异属性KEY的属性值V,形成新的种子B’。
S6、判断种子B’是否已存在缓存序列内,缓存序列为用于记录变异后的新种子的记录序列空间,若存在,则返回S3;反之则将种子B’加入缓存序列,并进入S7。
S7、将种子B’送入到目标程序进行执行,收集目标程序被覆盖的总行数hit,设定上一次覆盖总行数hit’。
S8、分析当前总行数hit和上一次总行数hit’,得到分析结果;具体为:判断种子B’是否进入程序,若是,则分析结果score=(hit-hit’)/hit;反之则分析结果score=-0.5*(hit’-1)/hit’。
S9、根据分析结果将种子B’或种子A放入种子池,并且根据分析结果更新属性选择策略和算法选择策略;具体为:
当分析结果为负时,将种子A放入到种子池中;反之则将种子B’放入到种子池中;
更新算法选择策略:更新变异属性KEY的变异算法Si被选择的概率Pij,表示为Pij*=(1+score*beta),其中beta=0.02。
缓存序列:
初始化一个布尔序列C={0,0,0,0,0,...}作为缓存序列,长度为c_n,默认值50000000,序列所有值均为0。
判断种子B’是否已存在缓存序列内:
1)、将种子B’转化成字符序(char[])CH,长度为L;
按照种子B’属性序列Key升序,将种子B’序列化成字符序列char[]。
2)、将字符序列转化成特征值s;
longints,i,j,k;
i←0;s←1;j←1;k←L;
whilei++<kdo
s^=CH[i-1]*(s&255)+(s<<8)+j++;
done
s*=2;
returns;
3)、特征值s转化成缓存序列C的下标c_index
c_index=s%c_n
4)、判断缓存情况
获取对应下标标记的布尔值flag=C[c_index]
如果flag为0,表示新种子B’不存在于缓存序列,反之则存在于缓存序列。
加入缓存序列时,C[c_index]=1。
种子池:缓存变异候选种子,每次取出一个种子以供后续变异引导。种子池来源于用户提供的文档和变异过程中产生的(优秀)种子。
变异算法包括Splice,SelectFeatures,SearchFeature,Mosaic,RandomClip,CenterCrop,RandomInsert,IncByte,DecByte,NegByte等。用户也可以自定义算法,通过插拔方式应用到选择策略中来。
缓存序列:将新生成的新种子缓存起来,用于后续生成去重,增加种子的有效性。采用IndexBit的形式,先将种子的属性排序后,再序列化成字符串,字符串转化成特征数值映射到缓存空间的索引上,每个空间储存0或1(0表示当前索引位没有缓存记录,1表示当前索引位已经缓存过)。
采用以概率为引导的策略选择,并且在结果评估之后对概率值进行修正,排除了变异的过度随机性;采用Index的方式查询缓存,极大提高运行效率;采用Bit形式对变异结果进行缓存,有效地对变异结果进行去重。并且采用的是Bit标记,大幅减少缓存的内存占用;采用结果反馈更新机制,动态更新策略,使得变异朝着优秀方向进行,提升种子变异质量和提升种子的有效性;基于属性值的变异,变异后不破坏其结构,极大减少种子的无效性。
本发明的技术方案不限于上述具体实施例的限制,凡是根据本发明的技术方案做出的技术变形,均落入本发明的保护范围之内。
Claims (7)
1.用于模糊测试的JSON变异方法,其特征在于,包括:
S1、判断属性选择概率值和算法选择概率值是否进行初始化处理,若均是,则直接进入S2,反之,则属性选择概率值和算法选择概率值进行了初始化处理后再进入S2;
S2、在种子池中选取种子A,并将其从种子池中移除;
S3、根据属性选择概率值利用属性选择策略选择种子A的一个变异属性KEY;
S4、根据算法选择概率值利用算法选择策略选择一种变异算法,对变异属性KEY的属性值V进行变异处理,得到V’;
S5、复制种子A作为种子B,用V’替换种子B变异属性KEY的属性值V,形成新的种子B’;
S6、判断种子B’是否已存在缓存序列内,缓存序列为用于记录变异后的新种子的记录序列空间,若存在,则返回S3;反之则将种子B’加入缓存序列,并进入S7;
S7、将种子B’送入到目标程序进行执行,收集目标程序被覆盖的总行数hit,设定上一次覆盖总行数hit’;
S8、分析当前总行数hit和上一次总行数hit’,得到分析结果;
S9、根据分析结果将种子B’或种子A放入种子池,并且根据分析结果更新属性选择策略和算法选择策略。
2.根据权利要求1所述的用于模糊测试的JSON变异方法,其特征在于,属性选择概率值初始化处理包括:
①、统计种子池中所有的种子属性,去重后得到序列Key={Key0,Key1,...Keyi,...,Keyn};
算法选择概率值初始化处理包括:
(1)、遍历序列Key,根据属性值确定Keyi能使用的变异算法;
(2)、初始一个键值对KS集合,KS={Key0:{S01,S02,...S0a},Key1:{S11,S12,...S1b},...,Keyi:{Si1,Si2,...Sij},...,Keyn:{Sn1,Sn2,...Snm}},Sij表示为Keyi能使用的第j个变异算法;
(3)、初始化一个键值对KP集合,KP={Key0:{P01,P02,...P0a},Key1:{P11,P12,...P1b},...,Keyi:{Pi1,Pi2,...Pij},...,Keyn:{Pn1,Pn2,...Pnm}},算法选择概率值Pij表示为变异算法Sij被选择的概率。
4.根据权利要求2所述的用于模糊测试的JSON变异方法,其特征在于,在S4中包括:
S41、根据变异属性KEY分别在KS集合和KP集合中获取候选算法序列Si和候选算法概率序列SPi,Si={Si0,Si1,...,Sij,...,Sim},SPi={Pi0,Pi1,...,Pij,...,Pim};
S43、对序列SPi'进行采样得到一个下标j,且j≤m;
S44、在序列Si中获取索引为j的Sij即为被选中的变异算法,并令SPi=SPi';
S45、利用变异算法Sij对变异属性KEY的属性值V进行变异处理,得到V’。
5.根据权利要求1所述的用于模糊测试的JSON变异方法,其特征在于,在S8中,判断种子B’是否进入程序,若是,则分析结果score=(hit-hit’)/hit;反之则分析结果score=-0.5*(hit’-1)/hit’。
6.根据权利要求5所述的用于模糊测试的JSON变异方法,其特征在于,在S9中,当分析结果为负时,将种子A放入到种子池中;反之则将种子B’放入到种子池中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310335990.3A CN116225962B (zh) | 2023-03-31 | 2023-03-31 | 用于模糊测试的json变异方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310335990.3A CN116225962B (zh) | 2023-03-31 | 2023-03-31 | 用于模糊测试的json变异方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116225962A true CN116225962A (zh) | 2023-06-06 |
CN116225962B CN116225962B (zh) | 2024-08-06 |
Family
ID=86582609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310335990.3A Active CN116225962B (zh) | 2023-03-31 | 2023-03-31 | 用于模糊测试的json变异方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225962B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647145A (zh) * | 2018-05-10 | 2018-10-12 | 清华大学 | 软件内存安全检测方法及系统 |
US20180365139A1 (en) * | 2017-06-15 | 2018-12-20 | Microsoft Technology Licensing, Llc | Machine learning for constrained mutation-based fuzz testing |
CN111881039A (zh) * | 2020-07-24 | 2020-11-03 | 广州大学 | 模糊测试的种子处理、模糊测试方法、系统和存储介质 |
CN111913877A (zh) * | 2020-07-03 | 2020-11-10 | 中国科学院信息工程研究所 | 一种面向文本配置文件的模糊测试方法及装置 |
CN113934621A (zh) * | 2021-09-06 | 2022-01-14 | 中国科学院信息工程研究所 | 模糊测试方法、系统、电子设备及介质 |
CN114117454A (zh) * | 2021-12-10 | 2022-03-01 | 中国电子科技集团公司第十五研究所 | 一种基于漏洞预测模型的种子优化方法 |
CN114281690A (zh) * | 2021-12-22 | 2022-04-05 | 杭州电子科技大学 | 一种对软件进行分组模糊测试的方法 |
EP4006733A1 (en) * | 2020-11-30 | 2022-06-01 | Irdeto B.V. | Fuzzy testing a software system |
CN114647566A (zh) * | 2020-12-18 | 2022-06-21 | 南京泛函智能技术研究院有限公司 | 一种基于强化学习的漏洞挖掘技术 |
CN114840856A (zh) * | 2022-04-26 | 2022-08-02 | 浙江大学 | 一种状态感知的物联网可信执行环境模糊测试方法和系统 |
-
2023
- 2023-03-31 CN CN202310335990.3A patent/CN116225962B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180365139A1 (en) * | 2017-06-15 | 2018-12-20 | Microsoft Technology Licensing, Llc | Machine learning for constrained mutation-based fuzz testing |
CN108647145A (zh) * | 2018-05-10 | 2018-10-12 | 清华大学 | 软件内存安全检测方法及系统 |
CN111913877A (zh) * | 2020-07-03 | 2020-11-10 | 中国科学院信息工程研究所 | 一种面向文本配置文件的模糊测试方法及装置 |
CN111881039A (zh) * | 2020-07-24 | 2020-11-03 | 广州大学 | 模糊测试的种子处理、模糊测试方法、系统和存储介质 |
EP4006733A1 (en) * | 2020-11-30 | 2022-06-01 | Irdeto B.V. | Fuzzy testing a software system |
CN114647566A (zh) * | 2020-12-18 | 2022-06-21 | 南京泛函智能技术研究院有限公司 | 一种基于强化学习的漏洞挖掘技术 |
CN113934621A (zh) * | 2021-09-06 | 2022-01-14 | 中国科学院信息工程研究所 | 模糊测试方法、系统、电子设备及介质 |
CN114117454A (zh) * | 2021-12-10 | 2022-03-01 | 中国电子科技集团公司第十五研究所 | 一种基于漏洞预测模型的种子优化方法 |
CN114281690A (zh) * | 2021-12-22 | 2022-04-05 | 杭州电子科技大学 | 一种对软件进行分组模糊测试的方法 |
CN114840856A (zh) * | 2022-04-26 | 2022-08-02 | 浙江大学 | 一种状态感知的物联网可信执行环境模糊测试方法和系统 |
Non-Patent Citations (4)
Title |
---|
HOUSEHOLDER A D等: "Probability-based parameter selection for black-box fuzz testing", 《SOFTWARE ENGINEERING INSTITUTE》, 31 December 2012 (2012-12-31), pages 1 - 31 * |
蔡军等: "基于改进轮盘赌策略的反馈式模糊测试方法", 《四川大学学报(工程科学版)》, no. 02, 15 March 2016 (2016-03-15), pages 132 - 138 * |
赵栖栖: "模糊测试工具AFL变异策略优化", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 January 2022 (2022-01-15), pages 138 - 342 * |
邬骁杰: "基于概率模型的模糊测试种子生成与优化", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 January 2023 (2023-01-15), pages 138 - 402 * |
Also Published As
Publication number | Publication date |
---|---|
CN116225962B (zh) | 2024-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20100293175A1 (en) | Feature normalization and adaptation to build a universal ranking function | |
CN109033833B (zh) | 一种基于多特征与特征选择的恶意代码分类方法 | |
CN109766481B (zh) | 基于协同矩阵分解的在线哈希跨模态信息检索方法 | |
CN114036303B (zh) | 一种基于双粒度注意力和对抗训练的远程监督关系抽取方法 | |
CN115205689B (zh) | 一种改进的无监督遥感影像异常检测方法 | |
CN113836341B (zh) | 基于无监督转换器平衡哈希的遥感图像检索方法 | |
CN115983274B (zh) | 一种基于两阶段标签校正的噪声事件抽取方法 | |
CN111598712B (zh) | 社交媒体跨模态搜索中数据特征生成器训练及搜索方法 | |
CN114826776B (zh) | 一种用于加密恶意流量的弱监督检测方法及系统 | |
CN116680343A (zh) | 基于融合多模态信息的实体和关系表示的链接预测方法 | |
CN116225962B (zh) | 用于模糊测试的json变异方法 | |
CN110110739A (zh) | 一种基于样本选择的域自适应降维方法 | |
CN117332420A (zh) | 一种智能合约漏洞检测方法 | |
CN115879505A (zh) | 一种自适应相关感知无监督深度学习异常检测方法 | |
CN116451111A (zh) | 一种基于去噪对比学习的鲁棒跨域自适应分类方法 | |
Ni et al. | PSNEA: Pseudo-siamese network for entity alignment between multi-modal knowledge graphs | |
CN116878885B (zh) | 一种基于自适应联合域适应网络的轴承故障诊断方法 | |
CN112348041B (zh) | 日志分类、日志分类训练方法及装置、设备、存储介质 | |
CN115019183B (zh) | 基于知识蒸馏和图像重构的遥感影像模型迁移方法 | |
CN116933000A (zh) | 一种基于低频负荷多特征融合的非侵入式负荷监测方法 | |
Wittenberg | Using denoising autoencoder genetic programming to control exploration and exploitation in search | |
CN115470365A (zh) | 一种基于深度度量学习的细粒度跨媒体检索方法 | |
CN115422914A (zh) | 一种基于深度学习的活跃ipv6地址预测方法 | |
CN114595360A (zh) | 一种基于时序特征的同源视频检索方法及系统 | |
CN118300700B (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 |