[发明专利]基于数据流分析的缓冲区溢出分析方法及装置在审
申请号: | 201911050708.7 | 申请日: | 2019-10-31 |
公开(公告)号: | CN111062031A | 公开(公告)日: | 2020-04-24 |
发明(设计)人: | 唐云善;王文祥;杨维永;朱春雷;马森;高庆;张世琨 | 申请(专利权)人: | 国家电网有限公司;北京大学;南瑞集团有限公司;南京南瑞信息通信科技有限公司;国网江苏省电力有限公司 |
主分类号: | G06F21/52 | 分类号: | G06F21/52;G06F16/901 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王宇杨 |
地址: | 100031 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 数据流 分析 缓冲区 溢出 方法 装置 | ||
本发明实施例提供一种缓冲区溢出分析方法及装置。所述方法包括:基于程序的控制流图,通过静态污点分析确定被污染的变量;根据所述被污染的变量,确定以所述被污染的变量作为数组下标的数组表达式;根据所述数组表达式,通过后向数据流分析确定所述被污染的变量的边界限制值;判断外部输入变量与所述边界限制值的大小,若所述外部输入变量大于或等于所述边界限制值,则确认缓冲区溢出。本发明实施例提供的缓冲区溢出分析方法及装置可快速准确地判断出缓冲区溢出。
技术领域
本发明涉及计算机领域,具体涉及一种缓冲区溢出分析方法及装置。
背景技术
缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。
缓冲区溢出(buffer overflow)是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁着中断之际获取程序乃至系统的控制权。
利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。
因此,分析缓冲区是否溢出对于计算机的安全具有十分重要的意义。然而,现有的缓冲区溢出分析方法大多需要对所有程序进行遍历,且对缓冲区是否溢出的判断精度不高。
因此,如何提出一种缓冲区溢出分析方法,以快速准确地判断出缓冲区溢出,成为亟待解决的问题。
发明内容
针对现有技术中的缺陷,一方面,本发明实施例提供一种缓冲区溢出分析方法,包括:
基于程序的控制流图,通过静态污点分析确定被污染的变量;
根据所述被污染的变量,确定以所述被污染的变量作为数组下标的数组表达式;
根据所述数组表达式,通过后向数据流分析确定所述被污染的变量的边界限制值;
判断外部输入变量与所述边界限制值的大小,若所述外部输入变量大于或等于所述边界限制值,则确认缓冲区溢出。
在一个实施例中,所述根据所述数组表达式,通过后向数据流分析确定所述数组下标的边界限制值包括:
以所述程序的控制流图中包括所述被污染的变量的最后一个块作为起点,以所述程序的控制流图中包括所述被污染的变量的最后一个前驱块作为终点,进行后向数据流分析;
其中,所述边界限制值为所述最后一个前驱块中所述被污染的变量的边界限制值。
在一个实施例中,所述被污染的变量为所述外部输入变量,以及取值基于所述外部输入变量的变量。
另一方面,本发明实施例还提供一种缓冲区溢出分析装置,包括:
第一确定模块,用于基于程序的控制流图,通过静态污点分析确定被污染的变量;
第二确定模块,用于根据所述被污染的变量,确定以所述被污染的变量作为数组下标的数组表达式;
第三确定模块,用于根据所述数组表达式,通过后向数据流分析确定所述被污染的变量的边界限制值;
判断模块,用于判断外部输入变量与所述边界限制值的大小,若所述外部输入变量大于或等于所述边界限制值,则确认缓冲区溢出。
在一个实施例中,所述第三确定模块具体用于:
以所述程序的控制流图中包括所述被污染的变量的最后一个块作为起点,以所述程序的控制流图中包括所述被污染的变量的最后一个前驱块作为终点,进行后向数据流分析;
其中,所述边界限制值为所述最后一个前驱块中所述被污染的变量的边界限制值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国家电网有限公司;北京大学;南瑞集团有限公司;南京南瑞信息通信科技有限公司;国网江苏省电力有限公司,未经国家电网有限公司;北京大学;南瑞集团有限公司;南京南瑞信息通信科技有限公司;国网江苏省电力有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911050708.7/2.html,转载请声明来源钻瓜专利网。