一种基于BAP的漏洞检测方法及智能终端技术

技术编号:27742753 阅读:15 留言:0更新日期:2021-03-19 13:36
本发明专利技术公开了一种基于BAP的漏洞检测方法及智能终端,所述方法包括:调取预设接口从二进制程序中获取所有的函数符号;调取所述预设接口从所述二进制程序中获取所有的预设指令;将未使用所述函数符号的所述预设指令进行过滤;获取过滤后的所述预设指令所在的指令块;遍历所述指令块中开始指令到所述预设指令中间的所有指令;判断所述指令块中的立即数是否等于系统指针,若是,则存在预设漏洞。本发明专利技术通过程序对外发布前,检测开发的二进制程序是否存在CWE467漏洞类型,如果存在CWE467漏洞则及时提醒相关人员进行漏洞修复,提高程序的安全性。

【技术实现步骤摘要】
一种基于BAP的漏洞检测方法及智能终端
本专利技术涉及程序基于BAP的漏洞检测
,尤其涉及一种基于BAP的漏洞检测方法及智能终端。
技术介绍
BAP(BinaryAnalysisPlatform,一个编写程序分析工具的框架)是一种二进制分析平台工具,可以基于该工具开发对应的插件来分析二进制指令。CWE(CommonWeaknessEnumeration,通用缺陷列表)是社区开发的常见软件和硬件安全漏洞列表,它是一种通用编号,为每种漏洞类型都制定了对应的编号。CWE467漏洞编号代表的漏洞类型是:在指针类型上错误使用sizeof()。在Pascal语言中,sizeof()是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在C语言中,sizeof()是一个判断数据类型或者表达式长度的运算符。在Pascal语言与C语言中,对sizeof()的处理都是在编译阶段进行。CWE467漏洞类型范例如下:错误代码:double*foo;...foo=(double*)malloc(sizeof(foo));正确代码:double*foo;...foo=(double*)malloc(sizeof(*foo));上述代码,错误的使用sizeof(),导致申请内存变小,可能会导致程序后续运行异常。现有技术中没有有效检测CWE467漏洞的方法,无法及时发现CWE467漏洞,从而导致程序运行异常。因此,现有技术还有待于改进和发展。
技术实现思路
本专利技术的主要目的在于提供一种基于BAP的漏洞检测方法及智能终端,旨在解决现有技术中没有有效检测CWE467漏洞的方法,无法及时发现CWE467漏洞,从而导致程序运行异的问题。为实现上述目的,本专利技术提供一种基于BAP的漏洞检测方法,所述基于BAP的漏洞检测方法包括如下步骤:调取预设接口从二进制程序中获取所有的函数符号;调取所述预设接口从所述二进制程序中获取所有的预设指令;将未使用所述函数符号的所述预设指令进行过滤;获取过滤后的所述预设指令所在的指令块;遍历所述指令块中开始指令到所述预设指令中间的所有指令;判断所述指令块中的立即数是否等于系统指针,若是,则存在预设漏洞。可选地,所述的基于BAP的漏洞检测方法,其中,所述预设漏洞为CWE467漏洞。可选地,所述的基于BAP的漏洞检测方法,其中,所述判断所述指令块中的立即数是否等于系统指针,若是,则存在预设漏洞,具体为:获取所述指令块中的立即数,判断所述指令块中的立即数是否等于系统指针;若所述指令块中的立即数等于系统指针,则检测存在所述CWE467漏洞。可选地,所述的基于BAP的漏洞检测方法,其中,所述判断所述指令块中的立即数是否等于系统指针,之后还包括:若所述指令块中的立即数不等于系统指针,则检测不存在所述CWE467漏洞。可选地,所述的基于BAP的漏洞检测方法,其中,所述预设接口为BAP接口。可选地,所述的基于BAP的漏洞检测方法,其中,所述预设指令为call指令。可选地,所述的基于BAP的漏洞检测方法,其中,所述调取所述预设接口从所述二进制程序中获取所有的预设指令,具体为:调取所述BAP接口,通过所述BAP接口从所述二进制程序中获取所有的所述call指令。可选地,所述的基于BAP的漏洞检测方法,其中,所述将未使用所述函数符号的所述预设指令进行过滤,具体为:将未使用所述函数符号的所述call指令进行过滤;所述获取过滤后的所述预设指令所在的指令块,具体为:获取过滤后的所述call指令所在的指令块;所述遍历所述指令块中开始指令到所述预设指令中间的所有指令;具体为:遍历所述指令块中开始指令到所述call指令中间的所有指令。此外,为实现上述目的,本专利技术还提供一种智能终端,其中,所述智能终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于BAP的漏洞检测程序,所述基于BAP的漏洞检测程序被所述处理器执行时实现如上所述的基于BAP的漏洞检测方法的步骤。此外,为实现上述目的,本专利技术还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有基于BAP的漏洞检测程序,所述基于BAP的漏洞检测程序被处理器执行时实现如上所述的基于BAP的漏洞检测方法的步骤。本专利技术通过调取预设接口从二进制程序中获取所有的函数符号;调取所述预设接口从所述二进制程序中获取所有的预设指令;将未使用所述函数符号的所述预设指令进行过滤;获取过滤后的所述预设指令所在的指令块;遍历所述指令块中开始指令到所述预设指令中间的所有指令;判断所述指令块中的立即数是否等于系统指针,若是,则存在预设漏洞。本专利技术通过程序对外发布前,检测开发的二进制程序是否存在CWE467漏洞类型,如果存在CWE467漏洞则及时提醒相关人员进行漏洞修复,提高程序的安全性。附图说明图1是本专利技术基于BAP的漏洞检测方法的较佳实施例的流程图;图2为本专利技术智能终端的较佳实施例的运行环境示意图。具体实施方式为使本专利技术的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本专利技术进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术较佳实施例所述的基于BAP的漏洞检测方法,如图1所示,所述基于BAP的漏洞检测方法包括以下步骤:步骤S10、调取预设接口从二进制程序中获取所有的函数符号。具体地,本专利技术的基于BAP的漏洞检测方法通过智能终端(例如计算机)来完成;其中,所述预设接口为BAP接口,其中,二进制程序(即二进制代码)由两个基本字符'0'、'1'组成的代码。其中,码元:"一位"二进制代码。码字:N个码元可以组成的不同组合,任意一个组合称一个码字。二进制代码语言或称为机器语言,计算机可以直接识别,不需要进行任何翻译的语言。每台机器的指令,其格式和代码所代表的含义都是硬性规定的,故称之为面向机器的语言,也称为机器语言。它是第一代的计算机语言,机器语言对不同型号的计算机来说一般是不同的。直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义,例如某台计算机字长为16位,即有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。具体的,所述智能终端调取所述BAP接口,通过所述BAP接口从所述二进制程序中获取所有的函数符号。步骤S20、调取所述预设接口从所述二进制程序中获取所有的预设指令。具体地,所述预设指令为call指令;所述智能终端调取所述BAP接口,通过所述BAP接口从所述二进制程序中获取所有的所述call指令。其中,ca本文档来自技高网
...

【技术保护点】
1.一种基于BAP的漏洞检测方法,其特征在于,所述基于BAP的漏洞检测方法包括:/n调取预设接口从二进制程序中获取所有的函数符号;/n调取所述预设接口从所述二进制程序中获取所有的预设指令;/n将未使用所述函数符号的所述预设指令进行过滤;/n获取过滤后的所述预设指令所在的指令块;/n遍历所述指令块中开始指令到所述预设指令中间的所有指令;/n判断所述指令块中的立即数是否等于系统指针,若是,则存在预设漏洞。/n

【技术特征摘要】
1.一种基于BAP的漏洞检测方法,其特征在于,所述基于BAP的漏洞检测方法包括:
调取预设接口从二进制程序中获取所有的函数符号;
调取所述预设接口从所述二进制程序中获取所有的预设指令;
将未使用所述函数符号的所述预设指令进行过滤;
获取过滤后的所述预设指令所在的指令块;
遍历所述指令块中开始指令到所述预设指令中间的所有指令;
判断所述指令块中的立即数是否等于系统指针,若是,则存在预设漏洞。


2.根据权利要求1所述的基于BAP的漏洞检测方法,其特征在于,所述预设漏洞为CWE467漏洞。


3.根据权利要求2所述的基于BAP的漏洞检测方法,其特征在于,所述判断所述指令块中的立即数是否等于系统指针,若是,则存在预设漏洞,具体为:
获取所述指令块中的立即数,判断所述指令块中的立即数是否等于系统指针;
若所述指令块中的立即数等于系统指针,则检测存在所述CWE467漏洞。


4.根据权利要求2所述的基于BAP的漏洞检测方法,其特征在于,所述判断所述指令块中的立即数是否等于系统指针,之后还包括:
若所述指令块中的立即数不等于系统指针,则检测不存在所述CWE467漏洞。


5.根据权利要求1所述的基于BAP的漏洞检测方法,其特征在于,所述预设接口为BAP接口。


6.根据权利要求5所述的基...

【专利技术属性】
技术研发人员:余少高严智慧
申请(专利权)人:深圳爱加密科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1