掌桥专利:专业的专利平台
掌桥专利
首页

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

文献发布时间:2023-06-19 10:19:37


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

技术领域

本发明涉及程序基于BAP的漏洞检测技术领域,尤其涉及一种基于BAP的漏洞检测方法及智能终端。

背景技术

BAP(Binary Analysis Platform,一个编写程序分析工具的框架)是一种二进制分析平台工具,可以基于该工具开发对应的插件来分析二进制指令。

CWE(Common Weakness Enumeration,通用缺陷列表)是社区开发的常见软件和硬件安全漏洞列表,它是一种通用编号,为每种漏洞类型都制定了对应的编号。

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指令。其中,call指令是计算机转移到调用的子程序,call指令执行时,进行两步操作:(1)将程序下一条指令的位置的IP压入堆栈中;(2)转移到调用的子程序。

步骤S30、将未使用所述函数符号的所述预设指令进行过滤。

具体地,所述预设指令为call指令,所述智能终端将未使用所述函数符号的所述call指令进行过滤,即过滤掉没有使用所述函数符号的所述call指令。

步骤S40、获取过滤后的所述预设指令所在的指令块。

具体地,所述预设指令为call指令,所述智能终端获取过滤后的所述call指令所在的指令块。

步骤S50、遍历所述指令块中开始指令到所述预设指令中间的所有指令。

具体地,所述预设指令为call指令,所述智能终端遍历所述指令块中开始指令到所述call指令中间的所有指令。

步骤S60、判断所述指令块中的立即数是否等于系统指针,若是,则存在预设漏洞。

具体地,所述智能终端获取所述指令块中的立即数(通常把在立即寻址方式指令中给出的数称为立即数,立即数可以是8位、16位或32位,该数值紧跟在操作码之后,立即数寻址方式通常用于对通用寄存器或内存单元赋初值),判断所述指令块中的立即数是否等于系统指针(即操作系统);若所述指令块中的立即数等于系统指针,则检测存在所述CWE467漏洞。

另外,若所述指令块中的立即数不等于系统指针,则检测不存在所述CWE467漏洞。

进一步地,在确定检测到所述CWE467漏洞后,所述智能终端及时通知相关工作人员(例如所述智能终端在界面上提示存在CWE467漏洞或者将存在CWE467漏洞的信息发送给预先绑定的工作人员随身携带的电子设备上),便于工作人员及时修复所述CWE467漏洞,避免存在所述CWE467漏洞的二进制程序发布出去。

本发明提供一种检测开发的二进制程序是否存在CWE467漏洞的方法,使得程序在对外发布之前可以先检测倒CWE467漏洞,并进行修复。

进一步地,如图2所示,基于上述基于BAP的漏洞检测方法,本发明还相应提供了一种智能终端,所述智能终端包括处理器10、存储器20及显示器30。图2仅示出了智能终端的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

所述存储器20在一些实施例中可以是所述智能终端的内部存储单元,例如智能终端的硬盘或内存。所述存储器20在另一些实施例中也可以是所述智能终端的外部存储设备,例如所述智能终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器20还可以既包括所述智能终端的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述智能终端的应用软件及各类数据,例如所述安装智能终端的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有基于BAP的漏洞检测程序40,该基于BAP的漏洞检测程序40可被处理器10所执行,从而实现本申请中基于BAP的漏洞检测方法。

所述处理器10在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述基于BAP的漏洞检测方法等。

所述显示器30在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器30用于显示在所述智能终端的信息以及用于显示可视化的用户界面。所述智能终端的部件10-30通过系统总线相互通信。

在一实施例中,当处理器10执行所述存储器20中基于BAP的漏洞检测程序40时实现以下步骤:

调取预设接口从二进制程序中获取所有的函数符号;

调取所述预设接口从所述二进制程序中获取所有的预设指令;

将未使用所述函数符号的所述预设指令进行过滤;

获取过滤后的所述预设指令所在的指令块;

遍历所述指令块中开始指令到所述预设指令中间的所有指令;

判断所述指令块中的立即数是否等于系统指针,若是,则存在预设漏洞。

其中,所述预设漏洞为CWE467漏洞。

其中,所述判断所述指令块中的立即数是否等于系统指针,若是,则存在预设漏洞,具体为:

获取所述指令块中的立即数,判断所述指令块中的立即数是否等于系统指针;

若所述指令块中的立即数等于系统指针,则检测存在所述CWE467漏洞。

其中,所述判断所述指令块中的立即数是否等于系统指针,之后还包括:

若所述指令块中的立即数不等于系统指针,则检测不存在所述CWE467漏洞。

其中,所述预设接口为BAP接口。

其中,所述预设指令为call指令。

其中,所述调取所述预设接口从所述二进制程序中获取所有的预设指令,具体为:

调取所述BAP接口,通过所述BAP接口从所述二进制程序中获取所有的所述call指令。

其中,所述将未使用所述函数符号的所述预设指令进行过滤,具体为:

将未使用所述函数符号的所述call指令进行过滤;

所述获取过滤后的所述预设指令所在的指令块,具体为:

获取过滤后的所述call指令所在的指令块;

所述遍历所述指令块中开始指令到所述预设指令中间的所有指令;具体为:

遍历所述指令块中开始指令到所述call指令中间的所有指令。

本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有基于BAP的漏洞检测程序,所述基于BAP的漏洞检测程序被处理器执行时实现如上所述的基于BAP的漏洞检测方法的步骤。

综上所述,本发明提供一种基于BAP的漏洞检测方法及智能终端,所述方法包括:调取预设接口从二进制程序中获取所有的函数符号;调取所述预设接口从所述二进制程序中获取所有的预设指令;将未使用所述函数符号的所述预设指令进行过滤;获取过滤后的所述预设指令所在的指令块;遍历所述指令块中开始指令到所述预设指令中间的所有指令;判断所述指令块中的立即数是否等于系统指针,若是,则存在预设漏洞。本发明通过程序对外发布前,检测开发的二进制程序是否存在CWE467漏洞类型,如果存在CWE467漏洞则及时提醒相关人员进行漏洞修复,提高程序的安全性。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的计算机可读存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的计算机可读存储介质可为存储器、磁碟、光盘等。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

相关技术
  • 一种基于BAP的漏洞检测方法及智能终端
  • 一种智能终端设备的漏洞检测方法及装置
技术分类

06120112502040