CN1889059A - 一种整型溢出漏洞自动化挖掘方法 - Google Patents
一种整型溢出漏洞自动化挖掘方法 Download PDFInfo
- Publication number
- CN1889059A CN1889059A CN 200610103592 CN200610103592A CN1889059A CN 1889059 A CN1889059 A CN 1889059A CN 200610103592 CN200610103592 CN 200610103592 CN 200610103592 A CN200610103592 A CN 200610103592A CN 1889059 A CN1889059 A CN 1889059A
- Authority
- CN
- China
- Prior art keywords
- data
- measurand
- integer overflow
- test
- address
- 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
本发明属于软件工程技术领域,提供了一种整型溢出漏洞自动化挖掘方法,该方法具体为:设置填充字符长度、内容及存储地址,在指定的存储地址用指定的字符填充数据,被测对象执行对文件型数据或网络协议型数据的处理,捕获被测对象是否有错误发生,如果有错误发生,记录出错的位置或/和保存出错的数据,并修改存储地址,如此循环测试,直到被测对象的数据尾为止。利用该方法,能够实现黑盒测试或独立的安全测试人员在不知道数据格式的情况下,通过自动对数据内容遍历的方法来尝试发现可能存储整型变量的位置,从而有效地进行整型溢出漏洞挖掘工作,提高软件开发的质量及稳定性。
Description
技术领域
本发明涉及软件工程技术领域,尤其是一种整型溢出漏洞自动化挖掘方法。
背景技术
在软件测试中,对从外界得到的参数必须进行合法性检查,而很多软件开发者因为考虑不周忽略了参数有效性检查导致软件处理出错,整型溢出就是这种出错的一种情况。
通常,整型溢出主要是由于解析程序在处理字段时对字段类型进行处理时考虑不周全,在经过运算之后,导致申请的空间大小小于实际拷贝的空间大小,在拷贝操作时覆盖堆栈中的数据,最终造成进程崩溃,甚至执行任意代码。
例如:
void function(char *userdata,short rawlen)//userdata为用户指定的字符,rawlen为用户指定的预分配空间大小{
char *buff;
short len=rawlen;
if(len!=strlen(userdata))
return false;
len=len *2;//len长度为用户提交长度的2倍,如果是0x8001的话,
//最终的结果就是0x10002字节,同时len是一个有符号short型,
//因此最终的长度为2字节
buff=malloc(len);//分配len长度(2字节)的空间
strncpy(buff,userdata,rawlen)//将用户提供的数据复制到buff缓冲区中去
//长度为rawlen,这时由于用户数据长度为
//0x8001,而内存只分配了0x0002字节
//造成溢出
}
从上面的程序可以看出,当程序执行到len=len *2;语句时,空间大小为指定长度的2倍,假设用户指定的长度为0x8001,在实际申请长度时需要申请0x8001*2=0x10002,但由于存储数据长度的变量是short类型,当把0x10002赋值给short类型变量datalenth时,最高位的1会因为溢出导致len的值实际为0x0002。也就是说,在上述程序中,如果用户提交的len>=0x8001,把>=0x10002长度的数据向实际分配的0x0002长度内存中拷贝,那么就会发生溢出。
整型溢出就是利用整数的范围、符号等问题所触发的安全漏洞,在软件测试中,必须尽量覆盖测试所有的外界输入参数,在上面的例子中,如果len这个参数从用户界面获取,那么就很容易构造出合适的测试用例来做测试:可以构造输入不同长度的,特别是边界值、异常值(超大值、负值)进行测试来发现问题。但如果这个len参数是从某个私有格式的文件中获取,或者是从接收到的通信报文中某字段获取,即该参数为隐含参数时,就无法由测试人员来构造需要的测试数据了,这样就无法通过黑盒测试来发现对该参数处理异常的问题。
发明内容
本发明要解决的问题是提供一种整型溢出漏洞自动化挖掘方法,该方法能够对隐含的参数进行测试,进而能够发现对隐含参数处理的异常问题。
为解决上述技术问题,本发明的目的是通过以下技术方案实现的:
(1)指定被测对象的存储地址用指定字符填充数据;
(2)被测对象进行数据处理;
(3)捕获被测对象的处理结果,并判断数据处理结果是否有错误发生,如果是, 执行步骤(4);
(4)执行错误处理。
其中,所述存储地址为:物理地址和偏移地址。
其中,所述步骤(1)之前进一步包括:
(01)设置填充字符长度及内容;
(02)设置被测对象的初始存储地址。
其中,所述步骤(01)之前进一步包括:
获取通信数据包,构造测试用网络协议型数据;
以及所述步骤(2)包括:
被测对象获取构造的网络协议型数据,并对网络协议型数据进行处理。
其中,所述步骤(4)包括:
记录出错的位置或/和保存出错的网络协议型数据。
其中,所述步骤(2)包括:
被测对象执行对文件型数据的处理。
其中,所述步骤(4)包括:
记录出错的位置或/和保存出错的文件型数据。
其中,所述步骤(4)进一步包括:
41)修改被测对象的存储地址;
42)判断是否到测试数据尾,如果是,结束流程,否则,执行步骤(1)。
本发明采用对任意偏移地址进行数据填充的方法来做输入参数异常测试,提供一个能够捕获异常的机制来进行错误判断,实现黑盒测试或独立的安全测试人员在不知道数据格式的情况下,通过自动对数据内容遍历的方法来尝试发现可能存储整型变量的位置,从而有效地进行整型溢出漏洞挖掘工作,提高软件开发的质量及稳定性。
附图说明
图1为本发明的流程图;
图2为本发明实施例一流程图;
图3为本发明实施例二的流程图;
图4为本发明实施例三的流程图;
图5为本发明实施例四的流程图。
具体实施方式
本发明提供了一种整型溢出漏洞自动化挖掘方法,为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步进行详细说明。
参见图1,实现本发明的具体流程如下:
步骤101:设置填充字符长度及内容,即输入参数,在进行测试时将被测对象的数据修改为设置的参数;
步骤102:设置被测对象的初始存储地址,测试时从设置的初始存储地址开始进行测试;
步骤103:在指定的存储地址用预先设置的参数进行数据填充,保存为一个构造好的测试用例;
步骤104:被测对象即软件,开始运行程序,对构造好的测试用例数据进行处理;
步骤105:捕获被测对象的处理结果;
步骤106:根据处理结果判断是否有错误发生,如果是,执行步骤107,否则,执行步骤108;
步骤107:记录出错的位置或/和保存出错的数据,得到含有隐含参数的整型溢出漏洞;
步骤108:修改被测对象的存储地址,作为下一次测试的初始地址;
步骤109:判断是否到被测对象的数据尾,若是,结束流程,否则,返回步骤103。
其中,所述存储地址为物理地址和偏移地址,对于16位的寄存器,物理地址和偏移地址之间的关系为:
物理地址=段地址*16+偏移地址。
对于文件型整型溢出漏洞自动化挖掘方法,下面结合附图并举例进行详细说明:
参见图2,为本发明实施例一的流程图,是通过以下步骤实现的:
步骤201:设置填充字符长度及内容,即输入参数,进行测试时将被测对象的数据修改为设置的参数;
步骤202:设置被测对象的初始偏移地址,测试时从设置的初始偏移地址开始进行测试;
步骤203:在指定的偏移地址用预先设置的参数进行数据填充,保存为一个构造好的测试用例;
步骤204:被测对象即软件,开始运行程序,对构造好的测试用例数据进行处理;
步骤205:捕获被测对象的处理结果;
步骤206:根据处理结果判断是否有错误发生,如果是,执行步骤207,否则,执行步骤208;
步骤207:记录被测对象处理数据时出错的位置,得到含有隐含参数的文件型整型溢出漏洞;
步骤208:修改被测对象的偏移地址,作为下一次测试的初始地址;
步骤209:判断是否到被测对象的数据尾,若是,结束流程,否则,返回步骤203。
参见图3,为本发明实施例二的流程图,使通过以下步骤实现的:
步骤301:设置填充字符长度及内容,即输入参数,当测试时将被测对象的数据修改为设置的参数;
步骤302:设置被测对象的初始偏移地址,测试时从设置的初始偏移地址开始进行测试;
步骤303:在指定的偏移地址用预先设置的参数进行数据填充,保存为一个构造好的测试用例;
步骤304:被测对象即软件,开始运行程序,对构造好的测试用例数据进行处理;
步骤305:捕获被测对象的处理结果;
步骤306:根据处理结果判断是否有错误发生,如果是,执行步骤307,否则,执行步骤308;
步骤307:保存被测对象处理数据时出错的文件型数据,得到含有隐含参数的文件型整型溢出漏洞;
步骤308:修改被测对象的偏移地址,作为下一次测试的初始地址;
步骤309:判断是否到被测对象的数据尾,若是,结束流程,否则,返回步骤303。
以上为实现文件型整型溢出漏洞自动化挖掘流程,下面举例来进一步进行说明:
例如,测试Excel软件对Excel文件的处理过程:
步骤1:设置填充字符长度为4字节,填充内容为0xFFFFFFFF。
步骤2:从指定量0开始测试;
步骤3:对一个正常的Excel文件,把偏移地址0至3字节的数据更改为0xFFFFFFFF,保存为一个构造好的测试用数据文件;
步骤4:调用Excel软件打开构造的测试用数据文件;
步骤5:观察Excel软件运行情况,或者通过自动异常捕获机制来捕获错误,例如产生了异常过程,或者正常进程退出等;
步骤6:如果出错,记录偏移位置或保存出错的测试文件;
步骤7:如果没有出错,则修改偏移地址,如把偏移量增加一个填充长度,如把0更改为4,下次更改为8等;
步骤8:判断是否到被测对象的数据尾,若是,结束流程,否则,返回步骤3。
其中,上述文件型整型溢出漏洞的挖掘方法中,当被测试对象运行程序,对构造的测试用例数据进行处理发现错误时,还包括:记录被测对象处理数据时出错的位置并且保存出错的数据。
对于网络协议型整型溢出漏洞的自动化挖掘方法,下面参照附图并举实施例进行详细说明:
参见图4,为本发明实施例三的流程图,是通过以下方法来实现的:
步骤401:获取通信数据包,得到测试用网络协议型数据;
步骤402:设置填充字符长度及内容,即输入参数,进行测试时将被测对象的数据修改为设置的参数;
步骤403:设置被测对象的初始偏移地址,测试时从设置的初始偏移地址开始进行测试;
步骤404:在指定的存储地址用预先设置的参数进行数据填充,保存为一个构造好的测试用例;
步骤405:向被测对象发送网络协议型数据;
步骤406:被测对象即软件运行程序,对网络协议型数据进行处理;
步骤407:捕获被测对象运行结果;
步骤408:根据处理结果判断是否有错误发生,如果是,执行步骤409,否则,执行步骤410;
步骤409:记录被测对象处理数据时的出错的位置;
步骤410:修改偏移地址,作为下次网络协议型数据测试的初始地址;
步骤411:判断是否到数据尾,若是,结束流程,否则,返回步骤404。
参见图5,为本发明实施例四的流程图,是通过以下步骤来实现的:
步骤501:获取通信数据包,得到测试用网络协议型数据;
步骤502:设置填充字符长度及内容,即输入参数,进行测试时将被测对象的数据修改为设置的参数;
步骤503:设置被测对象的初始偏移地址,测试时从设置的初始偏移地址开始进行测试;
步骤504:在指定的存储地址用预先设置的参数进行数据填充,保存为一个构造好的测试用例;
步骤505:向被测对象发送网络协议型数据;
步骤506:被测对象即软件运行程序,对网络协议型数据进行处理;
步骤507:捕获被测对象运行结果;
步骤508:根据处理结果判断是否有错误发生,如果是,执行步骤509,否则,执行步骤510;
步骤509:保存被测对象处理数据时出错的网络协议型数据;
步骤510:修改偏移地址,作为下次网络协议型数据测试的初始地址;
步骤511:判断是否到数据尾,若是,结束流程,否则,返回步骤504。
例如,MSSQL客户端连接服务器的测试过程:
步骤1):从MSSQL数据库获取通信数据包,得到测试用数据;
步骤2):设置填充字符长度及内容,即输入参数,进行测试时将被测对象的数据修改为设置的参数;
步骤3):设置被测对象的初始偏移地址,测试时从设置的初始偏移地址开始进行测试;
步骤4):在指定的偏移地址用预先设置的参数进行数据填充,保存为一个构造好的测试用例;
步骤5):向被测对象发送构造的测试用数据;
步骤6):被测对象即软件运行程序,对数据进行处理;
步骤7):捕获被测对象运行结果;
步骤8):根据处理结果判断是否有错误发生,如果是,执行步骤9),否则,执行步骤10);
步骤9):记录被测对象处理数据时出错的偏移地址或保存出错的数据;
步骤10):修改偏移地址,作为下次网络协议型数据测试的初始地址;
步骤11):判断是否到数据尾,若是,结束流程,否则,返回步骤504。
其中,上述网络协议型整型溢出漏洞挖掘方法中,当被测试对象运行程序,对构造的测试用例数据进行处理发现错误时,还包括:记录被测对象处理数据时出错的位置并且保存出错的数据。
其中,所述的偏移地址也可以用物理地址来替换,对于16位的寄存器,物理地址和偏移地址之间的关系为:物理地址=段地址*16+偏移地址。
其中,填充长度、填充内容、偏移地址都可根据测试人员的测试目的自行指定,如在64位的操作系统中可设定填充长度为8字节,其它也可以设置为1字节的byte型,2字节的short型,填充内容也可以添全0或其它值。
以上对本发明所提供的一种整型溢出漏洞自动化挖掘方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1、一种整型溢出漏洞自动化挖掘方法,其特征在于,该方法包括:
(1)指定被测对象的存储地址用指定字符填充数据;
(2)被测对象进行数据处理;
(3)捕获被测对象的处理结果,并判断数据处理结果是否有错误发生,如果是,执行步骤(4);
(4)执行错误处理。
2、根据权利要求1所述的整型溢出漏洞自动化挖掘方法,其特征在于,所述存储地址为:物理地址和偏移地址。
3、根据权利要求1所述的整型溢出漏洞自动化挖掘方法,其特征在于,所述步骤(1)之前进一步包括:
(01)设置填充字符长度及内容;
(02)设置被测对象的初始存储地址。
4、根据权利要求3所述的整型溢出漏洞自动化挖掘方法,其特征在于,所述步骤(01)之前进一步包括:
获取通信数据包,构造测试用网络协议型数据;
以及所述步骤(2)包括:
被测对象获取构造的网络协议型数据,并对网络协议型数据进行处理。
5、根据权利要求4所述的整型溢出漏洞自动化挖掘方法,其特征在于,所述步骤(4)包括:
记录出错的位置或/和保存出错的网络协议型数据。
6、根据权利要求1所述的整型溢出漏洞自动化挖掘方法,其特征在于,所述步骤(2)包括:
被测对象执行对文件型数据的处理。
7、根据权利要求6所述的整型溢出漏洞自动化挖掘方法,其特征在于,所述步骤(4)包括:
记录出错的位置或/和保存出错的文件型数据。
8、根据权利要求1所述的整型溢出漏洞自动化挖掘方法,其特征在于,所述步骤(4)进一步包括:
41)修改被测对象的存储地址;
42)判断是否到测试数据尾,如果是,结束流程,否则,执行步骤(1)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610103592 CN1889059A (zh) | 2006-07-25 | 2006-07-25 | 一种整型溢出漏洞自动化挖掘方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610103592 CN1889059A (zh) | 2006-07-25 | 2006-07-25 | 一种整型溢出漏洞自动化挖掘方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1889059A true CN1889059A (zh) | 2007-01-03 |
Family
ID=37578338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610103592 Pending CN1889059A (zh) | 2006-07-25 | 2006-07-25 | 一种整型溢出漏洞自动化挖掘方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1889059A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010048776A1 (zh) * | 2008-10-28 | 2010-05-06 | 中国科学院研究生院 | 一种obex协议漏洞挖掘方法及其系统 |
WO2013035040A1 (en) * | 2011-09-05 | 2013-03-14 | Nagravision S.A. | Method to identify at least one content within a data stream |
CN106998275A (zh) * | 2017-03-31 | 2017-08-01 | 武汉斗鱼网络科技有限公司 | 一种测试漏洞的方法及装置 |
CN107154930A (zh) * | 2017-03-31 | 2017-09-12 | 武汉斗鱼网络科技有限公司 | 一种测试漏洞的方法和系统 |
CN109189328A (zh) * | 2018-08-02 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种适用于NAND Flash控制器的索引表保护方法 |
-
2006
- 2006-07-25 CN CN 200610103592 patent/CN1889059A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010048776A1 (zh) * | 2008-10-28 | 2010-05-06 | 中国科学院研究生院 | 一种obex协议漏洞挖掘方法及其系统 |
WO2013035040A1 (en) * | 2011-09-05 | 2013-03-14 | Nagravision S.A. | Method to identify at least one content within a data stream |
US10009634B2 (en) | 2011-09-05 | 2018-06-26 | Nagravision S.A. | Method to identify at least one content within a data stream |
CN106998275A (zh) * | 2017-03-31 | 2017-08-01 | 武汉斗鱼网络科技有限公司 | 一种测试漏洞的方法及装置 |
CN107154930A (zh) * | 2017-03-31 | 2017-09-12 | 武汉斗鱼网络科技有限公司 | 一种测试漏洞的方法和系统 |
CN109189328A (zh) * | 2018-08-02 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种适用于NAND Flash控制器的索引表保护方法 |
CN109189328B (zh) * | 2018-08-02 | 2021-06-25 | 郑州云海信息技术有限公司 | 一种适用于NAND Flash控制器的索引表保护方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101035039A (zh) | Usb映射方法 | |
CN101043384A (zh) | 一种网络测试的系统和方法 | |
CN1889059A (zh) | 一种整型溢出漏洞自动化挖掘方法 | |
CN101056220A (zh) | 无网管接口的数据业务系统的集中监控方法 | |
CN1731747A (zh) | 自动化测试框架系统及方法 | |
CN1812417A (zh) | 接入点的安全接入协议符合性测试方法及其系统 | |
CN1791037A (zh) | 一种实现Web服务自动化测试的方法 | |
CN101068205A (zh) | 互联网通信架构、网络设备及执行数据包内容分析的方法 | |
CN1848760A (zh) | 软件组件参数配置方法及系统、及其终端设备 | |
CN101042710A (zh) | 实现采集数据共享的方法、系统 | |
CN1913524A (zh) | 一种网络管理系统接口协商的方法及其装置 | |
CN1851693A (zh) | 一种对系统资源进行管理的实现方法 | |
CN1167011C (zh) | 可进行多种应用协议测试的方法 | |
CN1614927A (zh) | 在b/s结构中实现树型结构的方法 | |
CN1863102A (zh) | 对设备进行基于管理信息库的测试的系统和方法 | |
CN1852546A (zh) | 一种用于基站系统的操作维护系统和方法 | |
CN1859462A (zh) | 实现自动切换的方法、系统及装置 | |
CN1863085A (zh) | 保证网管和网元配置数据一致性的方法及系统 | |
CN1882152A (zh) | 一种接入网设备的数据配置方法 | |
CN1780236A (zh) | 一种电信智能业务的通用测试系统及方法 | |
CN1284093C (zh) | 安全漏洞诊断系统 | |
CN101056210A (zh) | 一种网络集中管理平台上的事件处理系统和方法 | |
CN1777124A (zh) | 协议测试的装置及其实现协议测试的方法 | |
CN1862267A (zh) | 对电路原理图进行审查的方法 | |
CN1845514A (zh) | 软件模块的测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20070103 |