[发明专利]面向源代码的基于不等式组求解的缓冲区溢出检测方法无效
申请号: | 200810057757.9 | 申请日: | 2008-02-15 |
公开(公告)号: | CN101241532A | 公开(公告)日: | 2008-08-13 |
发明(设计)人: | 徐国爱;张淼;刘宇航;杨义先 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F21/22 | 分类号: | G06F21/22 |
代理公司: | 北京德琦知识产权代理有限公司 | 代理人: | 夏宪富 |
地址: | 100876*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种面向源代码的基于不等式组求解的缓冲区溢出检测方法,包括下列操作步骤:(1)为描述危险函数的约束条件进行初始化设置;(2)对输入的程序源代码进行词法和语法解析并生成程序依赖图;(3)根据危险函数库中发生缓冲区溢出的不等式约束条件,在程序依赖图中查找有关危险函数调用的语句;(4)针对当前查找到的危险函数,在程序依赖图中查找与该危险函数有数据依赖或控制依赖关系的语句,形成依赖语句序列,即不等式组;(5)验证发生缓冲区溢出的不等式的约束条件是否成立。该方法能较好地解决现有静态代码分析技术在处理程序控制关系时,对缓存区变量或参数的长度属性的影响无法准确把握的缺陷,有效降低了缓冲区溢出漏洞检测的误报率。 | ||
搜索关键词: | 面向 源代码 基于 不等式 求解 缓冲区 溢出 检测 方法 | ||
【主权项】:
1、一种面向源代码的基于不等式组求解的缓冲区溢出检测方法,其特征在于,包括下列操作步骤:(1)为描述危险函数的约束条件进行初始化设置:定义缓冲区相关参数的长度属性,规定缓存区中的参数或变量的表示方法,并对包括赋值操作的多个C/C++库函数分别建立其发生缓存溢出的不等式约束条件;(2)对输入的程序源代码进行词法和语法解析并生成程序依赖图:在利用词法分析识别出的词法单元的基础上,进行语法分析,以便得到抽象语法树,即程序结构的树形表示;再从该抽象语法树中提取出危险函数及其相关的指针,用作后续分析的基础;然后对程序分别进行数据流分析和控制流分析,提取代码中包括指针变量、内存块、常量、函数结构的数据依赖的相关信息,获取程序中的相关语句之间的控制依赖关系,生成对应的程序依赖图;(3)根据危险函数库中发生缓冲区溢出的不等式约束条件,在程序依赖图中查找有关危险函数调用的语句:如果没有发现危险函数调用,则判定该程序没有缓冲区溢出的风险,并结束检测流程;如果发现有危险函数调用,则要分别对每个危险函数执行后续操作步骤;(4)针对当前查找到的危险函数,在程序依赖图中查找与该危险函数有数据依赖或控制依赖关系的语句,形成依赖语句序列,即不等式组:通过程序控制依赖图,对每个危险函数的调用分别生成一个依赖语句序列,该序列中的依赖语句与该危险函数之间存在有数据依赖、控制依赖、或同时存在数据依赖和控制依赖的关系;(5)验证发生缓冲区溢出的不等式的约束条件是否成立:将判断危险函数不等式约束条件是否成立的问题转化为判断步骤(4)中的不等式组是否有解;如果不等式组有解,即满足约束条件,则不存在缓冲区溢出;否则,认为存在缓冲区溢出风险,并输出存在缓冲区溢出的告警信息。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200810057757.9/,转载请声明来源钻瓜专利网。
- 上一篇:一种AlGaInP基多层结构的深槽刻蚀方法
- 下一篇:浮栅制备方法