[发明专利]基于变量关联规则的缓冲区溢出检测方法有效
申请号: | 202010012878.2 | 申请日: | 2020-01-06 |
公开(公告)号: | CN111382427B | 公开(公告)日: | 2022-04-26 |
发明(设计)人: | 李炼;李广威;张馨元;高琳 | 申请(专利权)人: | 宁波中科天齐信息技术有限公司 |
主分类号: | G06F21/52 | 分类号: | G06F21/52 |
代理公司: | 北京君恒知识产权代理有限公司 11466 | 代理人: | 余威 |
地址: | 315000 浙江省宁波*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 变量 关联 规则 缓冲区 溢出 检测 方法 | ||
本发明所述方法先识别代码中的缓冲区变量和其它预定义的关联规则,并在代码中传播和缓冲区容量相关联的变量及对应的关联函数。在得到关联关系后,本发明所述方法在缓冲区的访问点依据访问偏移量和缓冲区容量的关联关系来判断该缓冲区访问是否可能溢出。本发明中的预定义的关联规则可以简单清晰地表示出结构体的不同域间的关联关系,因此能够有效地检测出涉及结构体域对象的缓冲区访问溢出情况;[CALL]规则可以简洁地传播通过函数参数传递的关联关系,因此能够简单有效地检测出跨函数的缓冲区溢出情况。
技术领域
本发明涉及信息安全技术领域,尤其涉及基于变量关联规则的缓冲区溢出检测方法。
背景技术
缓冲区溢出是指对固定容量的缓冲区进行读写访问时,超出了缓冲区本身的容量。传统的缓冲区溢出检测技术是在程序代码的函数调用图中,采用自底向上的顺序对程序代码进行分析检测缓冲区溢出的。它从缓冲区访问点开始,先在访问所在的函数内计算缓冲区的容量和访问偏移量的取值范围。当访问偏移量的取值范围超出了缓冲区容量,则报告缓冲区溢出错误。当在缓冲区访问所在的函数内无法计算出缓冲区的容量或访问偏移量的取值范围时,则生成该函数的摘要。函数摘要的内容是该函数内发生缓冲区溢出的触发条件。摘要生成后,现有技术就在函数调用点,根据调用函数的数据信息,计算溢出触发条件。如果在调用函数内仍然无法计算溢出触发条件,则生成该调用函数的溢出触发条件摘要。现有技术自底向上地重复所述操作,直至在某个调用函数内能够计算出溢出触发条件,则根据计算结果判断是否存在缓冲区溢出。
传统的缓冲区溢出是基于函数摘要,自底向上地计算缓冲区的容量和访问偏移量的取值范围及溢出触发条件,借此来判断是否可能发生缓冲区溢出。这种基于摘要的溢出检测方法受局限于函数摘要的抽象表述能力和摘要的精度。现有的缓冲区溢出的检测方法的函数摘要方法仅支持简单函数参数的摘要。在缓冲区的容量和访问偏移量为结构体域变量,或是存在复杂跨函数定义和使用的情况下,现有函数摘要就无法正确地表示溢出的触发条件。因此,传统的缓冲区溢出检测方法无法检测出涉及结构体的缓冲区溢出情况,以及大量复杂跨函数的缓冲区溢出情况。
发明内容
本发明所解决的问题是提供了基于变量关联规则的缓冲区溢出检测方法,所述方法不需要调用函数摘要即可检测跨函数的以及涉及结构体的复杂缓冲区溢出情况。
基于变量关联规则的缓冲区溢出检测方法,包括以下几个步骤:
S1:扫描程序代码;
S2:在步骤S1中扫描到的程序代码中通过预定义的关联规则识别并传播缓冲区关联三元组集合。关联三元组O,x,f记录缓冲区对象O和该缓冲区的容量f(x),其中f是变量x和容量的关联函数,每个所述关联三元组O,x,f形成关联三元组集合;
S2.1:为所有扫描到的缓冲区分配语句O=malloc(f(x))通过预定义的关联规则[MALLOC]生成一个相应的关联三元组O,x,f;
S2.2:查找将已知缓冲区关联关系存储到结构体中的代码片段;所述代码片段由两个连续的存储语句组成,分别将一个指针和一个整型数据存入同一变量的两个域变量中,若所述的指针指向一个缓冲区O,而所述的整型数据是变量x的函数g,并且存在由O和x组成的已识别的关联三元组O,x,f,则识别出一个传播到结构体的缓冲区关联关系,并通过关联规则[STST]生成相应的关联三元组T.d1,T.d2,f·g-1;
O,x,f
O→p;store p,T(s→d1)
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于宁波中科天齐信息技术有限公司,未经宁波中科天齐信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010012878.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:追溯码管理系统
- 下一篇:一种基于温度在线监测的高质量激光骨加工方法