[发明专利]整形溢出漏洞的二进制检测定位装置无效

专利信息
申请号: 200910025885.X 申请日: 2009-03-12
公开(公告)号: CN101510241A 公开(公告)日: 2009-08-19
发明(设计)人: 陈平;王逸;辛知;茅兵;谢立 申请(专利权)人: 南京大学
主分类号: G06F21/00 分类号: G06F21/00;G06F21/22
代理公司: 南京苏高专利商标事务所(普通合伙) 代理人: 柏尚春
地址: 210093江苏省南京市*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 整形 溢出 漏洞 二进制 检测 定位 装置
【权利要求书】:

1.一种整形溢出漏洞的二进制检测定位装置,其特征在于,该装置包括以下单元:

用于将二进制代码转换成VEX中间代码的代码转换单元(20);

信息记录单元(21),所述信息记录单元(21)包括:用于记录变量的类型信息的类型信息提取模块(211);用于记录变量的最新值的数值信息提取模块(212);用于记录算术运算及其操作数的算术运算提取模块(213);用于记录赋给变量最新值指令地址的指令地址提取模块(214);

检测定位单元(22),所述检测定位单元(22)包括:整形数上溢出检测模块(221)以及整形数下溢出检测模块(222);

所述整形数上溢出检测模块(221)包括以下步骤:

步骤S100,根据信息记录单元(21)提取的宽度信息,判断操作数的长度n,有三种类型8bits,16bits,32bits;

步骤S200,根据信息记录单元(21)提取的类型信息,判断操作数的符号类型是无符号数,还是有符号数,并结合宽度信息,记操作数的类型为Signed n或者Unsigned n,如果是有符号数则执行步骤S300,否则执行步骤S400;

步骤S300,根据信息记录单元(21)提取的算术运算信息,判断与该操作数相关的算术运算是加法还是乘法操作,如果是有符号数加法运算执行步骤S500,如果是有符号数乘法运算执行步骤S600;如果既不是加法运算也不是乘法运算,则执行步骤S900;

步骤S400,根据信息记录单元(21)提取的算术运算信息,判断与该操作数相关的算术运算是加法还是乘法操作,如果是无符号数加法运算,则执行步骤S700,如果是无符号数乘法运算,执行步骤S800;如果既不是加法运算也不是乘法运算,则执行步骤S900;

步骤S500,根据信息记录单元(21)提取的操作数最新值信息,即程序运行时该操作数当前的值,判断加法运算的两个操作数是否同号,如果两个操作数同号,执行步骤S501,否则执行步骤S900;

步骤S501,根据信息记录单元(21)提取的操作数最新值信息,判断两个操作数是否均为负数,如果两个操作数均为正数执行步骤S502,否则执行步骤S503;

步骤S502,如果两个操作数均为正数,判断是否两个正数相加有整形数上溢出;如果有整形上溢出,判定为漏洞,执行步骤S1000,否则执行步骤S900继续运行;

步骤S503,如果两个操作数均为负数,判断两个负数相加是否有整形数上溢出发生;如果有上溢出,判定为漏洞,执行步骤S1000,否则执行步骤S900继续运行;

步骤S600,判断有符号数乘法是否溢出,包括以下步骤:

步骤S601,判断乘法运算的两个操作数是否同号,如果两个操作数同号,则执行步骤S602,否则执行步骤S603;

步骤S602,根据步骤S500中信息记录单元(21)提取的操作数最新值信息,判断两个操作数是否均为负数,如果两个操作数均为负数执行步骤S604,否则执行步骤S605;

步骤S603,判断第一操作数arg1的符号:

如果第一操作数arg1是负数,则第二操作数arg2为正数,执行步骤S606;如果第一操作数arg1是正数,则第二操作数arg2为负数,执行步骤S607;

步骤S604,如果两个操作数均是负数,判断两个负数相乘是否有整形数上溢出发生,如果有,则判定为漏洞,并执行步骤S1000,否则执行步骤S900;

步骤S605,如果两个操作数均是正数,判断两个正数相乘是否有整形数上溢出发生,如果有上溢出发生,则判定为漏洞,并执行步骤S1000,否则执行步骤S900;

步骤S606,判断是否有整形数上溢出发生,如果有上溢出,则判定为漏洞,并执行步骤S1000,否则执行步骤S900;

步骤S607,判断是否有整形数上溢出发生,如果有上溢出,则判定为漏洞,并执行步骤S1000,否则执行步骤S900;

步骤S700,判断无符号数加法运算是否有整形数上溢出发生,如果有上溢出,则判定为漏洞,并执行步骤S1000,否则执行步骤S900;

步骤S800,判断无符号数乘法运算是否有整形数上溢出发生,如果有上溢出,则判定为漏洞,并执行步骤S1000,否则执行步骤S900继续运行;

步骤S900,程序没有检测到整形上溢出,继续正常运行;

步骤S1000,根据信息记录单元(21)提取的指令地址信息,并由信息记录单元(21)记录该指令地址信息;

所述整形数下溢出检测模块(222)包括以下步骤:

步骤S1010,根据信息记录单元(21)提取的宽度信息,判断操作数的长度n,有三种类型8bits,16bits,32bits;

步骤S1020,根据信息记录单元(21)提取的类型信息,判断操作数的符号类型是无符号数,还是有符号数,并结合宽度信息,分别记录操作数的类型为Signedn或者Unsigned n,如果是有符号数则执行步骤S1100,否则执行步骤S1105;

步骤S1100判断与该操作数相关的算术运算是否为减法运算,如果是有符号数减法操作,则执行步骤S1101;如果不是减法运算,则执行步骤S1107;

步骤S1101,根据信息提取单元(21)提取的操作数最新值信息,并判断减法操作的两个操作数是否同号,如果两个操作数异号,则执行步骤S1102,否则执行步骤S1107;

步骤S1102,判断第一操作数arg1的符号:

如果第一操作数arg1是负数,则第二操作数arg2为正数,执行步骤S1103;

如果第一操作数arg1是正数,则第二操作数arg2为负数,执行步骤S1104;

步骤S1103,判断是否有整形数下溢出发生;如果发现漏洞,执行步骤S1108,否则执行步骤S1107;

步骤S1104,判断是否有整形数下溢出发生;如果发现漏洞,执行步骤S1108,否则执行步骤S1107;

步骤S1105,如果是无符号数减法操作则执行步骤S1106;如果不是减法运算,则执行步骤S1107;

步骤S1106,判断无符号数减法是否有整形数下溢出发生,有则判定为漏洞,并执行步骤S1108,否则执行步骤S1107;

步骤S1107,程序没有检测到整形下溢出,继续正常运行;

步骤S1108,根据信息记录单元(21)提取的指令地址信息,并由信息记录单元(21)记录该指令地址信息。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200910025885.X/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top