首页> 中国专利> 基于FORTIFY安全保护的检测方法、终端及存储介质

基于FORTIFY安全保护的检测方法、终端及存储介质

摘要

本发明公开了基于FORTIFY安全保护的检测方法、终端及存储介质,所述方法包括:获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF符号表信息;判断所述ELF符号表信息中是否存在带_chk@字符串的符号,如是则表示所述程序已开启FORTIFY安全保护。本发明通过判断程序是否开启FORTIFY安全保护,在程序未开启FORTIFY安全保护时提醒用户开启FORTIFY安全保护,如果程序开启了FORTIFY安全保护的话,内存操作函数会被替换成包括安全校验的函数,安全性更高,预防程序被黑客攻击。

著录项

  • 公开/公告号CN112287335A

    专利类型发明专利

  • 公开/公告日2021-01-29

    原文格式PDF

  • 申请/专利权人 北京智游网安科技有限公司;

    申请/专利号CN202011170061.4

  • 发明设计人 余少高;严智慧;

    申请日2020-10-28

  • 分类号G06F21/52(20130101);G06F21/56(20130101);G06F21/57(20130101);

  • 代理机构44268 深圳市君胜知识产权代理事务所(普通合伙);

  • 代理人陈专

  • 地址 100000 北京市海淀区东北旺西路8号中关村软件园10号楼2层207-2(国永融通大厦)

  • 入库时间 2023-06-19 09:43:16

说明书

技术领域

本发明涉及计算机安全技术领域,尤其涉及一种基于FORTIFY安全保护的检测方法、终端及存储介质。

背景技术

FORTIFY能够提供静态和动态应用程序安全测试技术,以及运行时应用程序监控和保护功能。为实现高效安全监测,FORTIFY具有源代码安全分析,可精准定位漏洞产生的路径,以及具有1分钟1万行的扫描速度。

FORTIFY是非常简单的检查,用于检查是否存在缓冲区溢出的错误。适用情形是程序采用大量的字符串或者内存操作函数,如memcpy,memset,stpcpy,strcpy,strncpy,strcat,strncat,sprintf,snprintf,vsprintf,vsnprintf,gets以及宽字符的变体。

缓冲区溢出就是超长的数据向小缓冲区复制,导致数据超出了小缓冲区,导致缓冲区其他的数据遭到破坏,这就是缓冲区溢出,而栈溢出是缓冲区溢出的一种,栈溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围。

如果程序没有开启FORTIFY安全保护的话,内存操作函数的安全性不高,那么就无法避免黑客攻击。

因此,现有技术还有待于改进和发展。

发明内容

本发明的主要目的在于提供一种基于FORTIFY安全保护的检测方法、终端及存储介质,旨在解决现有技术中未开启FORTIFY安全保护时无法避免黑客攻击的问题。

为实现上述目的,本发明提供一种基于FORTIFY安全保护的检测方法,所述基于FORTIFY安全保护的检测方法包括如下步骤:

获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF符号表信息;

判断所述ELF符号表信息中是否存在带_chk@字符串的符号,如是则表示所述程序已开启FORTIFY安全保护。

所述的基于FORTIFY安全保护的检测方法,其中,所述判断所述ELF符号表信息中是否存在带_chk@字符串的符号,之后还包括:

如果判断出所述ELF符号表信息中不存在带_chk@字符串的符号,则表示所述程序未开启FORTIFY安全保护。

所述的基于FORTIFY安全保护的检测方法,其中,所述基于FORTIFY安全保护的检测方法还包括:

如果所述程序未开启FORTIFY安全保护,则提示用户开启FORTIFY安全保护。

所述的基于FORTIFY安全保护的检测方法,其中,所述第一命令为readelf–s。

此外,为实现上述目的,本发明还提供一种终端,其中,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于FORTIFY安全保护的检测程序,所述基于FORTIFY安全保护的检测程序被所述处理器执行时实现如上所述的基于FORTIFY安全保护的检测方法的步骤。

此外,为实现上述目的,本发明还提供一种存储介质,其中,所述存储介质存储有基于FORTIFY安全保护的检测程序,所述基于FORTIFY安全保护的检测程序被处理器执行时实现如上所述的基于FORTIFY安全保护的检测方法的步骤。

本发明通过获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF符号表信息;判断所述ELF符号表信息中是否存在带_chk@字符串的符号,如是则表示所述程序已开启FORTIFY安全保护。本发明通过判断程序是否开启FORTIFY安全保护,在程序未开启FORTIFY安全保护时提醒用户开启FORTIFY安全保护,如果程序开启了FORTIFY安全保护的话,内存操作函数会被替换成包括安全校验的函数,安全性更高,预防程序被黑客攻击。

附图说明

图1是本发明基于FORTIFY安全保护的检测方法的较佳实施例的流程图;

图2为本发明终端的较佳实施例的运行环境示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明较佳实施例所述的基于FORTIFY安全保护的检测方法,如图1所示,所述基于FORTIFY安全保护的检测方法包括以下步骤:

步骤S10、获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF符号表信息。

本发明中,FORTIFY是Micro Focus旗下AST(应用程序安全测试)产品,其产品组合包括:Fortify Static Code Analyzer提供静态代码分析器(SAST),Fortify WebInspect是动态应用安全测试软件(DAST),Software Security Centre是软件安全中心(SSC)和Application Defender是实时应用程序自我保护(RASP)。

FORTIFY能够提供静态与动态应用程序安全测试技术,以及运行时应用程序监控和保护功能;FORTIFY SCA是一款静态应用程序安全性测试(SAST)产品,可供开发团队和安全专家分析源代码,检测安全漏洞,帮助开发人员更快更轻松地识别问题并排定问题优先级,然后加以解决。Micro Focus Fortify WebInspect是一款动态应用程序安全测试工具,可利用动态扫描程序来扫描当今主流的技术框架和Web技术,提供动态应用程序安全测试覆盖范围,并可检测黑盒安全测试技术经常检测不到的新型漏洞。

在计算机科学中,ELF文件是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。

具体地,ELF文件由4部分组成,分别是ELF头(ELF header,即文件头)、程序头表(Program header table)、节(Section)和节头表(Section header table)。实际上,一个文件中不一定包含全部内容,而且它们的位置也未必如同所示这样安排,只有ELF头的位置是固定的,其余各部分的位置、大小等信息由ELF头中的各项值来决定。

符号是表示每个ELF文件的一个重要部分,因为它保存了程序实现或使用的所有(全局)变量和函数。如果程序引用了一个自身代码未定义的符号,则称之为未定义的符号(例如一般程序中printf函数,就定义在c标准函数中)。此类引用必须在静态链接期间用其他目标模块或者库解决,或在加载期间通过动态链接(使用ld-linux.so)解决。nm工具可以生成程序定义和使用的所有符合列表。

符号表保存了查找程序符号、为符号赋值、重定位符号所需的全部信息。符号的主要任务是讲一个字符串和一个值关联起来。例如,printf符号表示printf函数在虚拟地址空间中的地址,该函数的机器代码就存在于该地址。符号也可能有绝对值,由程序解释,例如数值常数。

在获取程序的ELF文件后,通过分析ELF文件的第一命令(所述第一命令为readelf–s)查看所述ELF文件的ELF符号表信息。

其中,readelf命令是Linux下的分析ELF文件的命令,readelf用来显示ELF格式目标文件的信息.可通过参数选项来控制显示哪些特定信息,这个命令在分析ELF文件格式时非常有用。

步骤S20、判断所述ELF符号表信息中是否存在带_chk@字符串的符号,如是则表示所述程序已开启FORTIFY安全保护。

其中,FORTIFY是一款强大的静态代码扫描分析工具,其发现代码漏洞缺陷的能力十分强悍,主要是将代码经过编译,依托于其强大的内置规则库来发现漏洞的。其次FORTIFY SCA团队在开发此商业工具时,也提供了自定义规则的接口,只要经过正版授权后,便可以在此基础上自定义规则,来增强FORTIFY SCA的漏洞识别能力,同时经过自定义规则,也可以降低误报,使得静态分析的准确度和高效性。

默认情况下,FORTIFY SCA使用安装的安全编码规则包用来检查源代码,并定义一系列可能出现的问题,如可被攻击者利用的安全漏洞和不良的编码缺陷。

安全编码规则包中的规则分析了受支持语言的核心和扩展的API包中的函数,并将分析结果记录在FORTIFY SCA中。每一个问题的解释包含了对问题的描述和建议的解决方案,以便更好地解决程序中的漏洞和缺陷。

可以通过创建自定义规则包来准确地分析特定的应用程序(其中包含有关源代码元素附加信息的规则),验证专门的安全规则,以及细化FORTIFY SCA所报告的问题。

在获取所述ELF符号表信息后,判断所述ELF符号表信息中是否存在带_chk@字符串的符号,如果存在带_chk@字符串的符号则表示所述程序已开启FORTIFY安全保护。

进一步地,如果判断出所述ELF符号表信息中不存在带_chk@字符串的符号,则表示所述程序未开启FORTIFY安全保护。如果所述程序未开启FORTIFY安全保护,则提示用户开启FORTIFY安全保护,提前预防程序被黑客攻击。

也就是说,本发明中,只有程序开启了FORTIFY安全保护时,内存操作函数会被替换成包括安全校验的函数,比如strcpy(字符串复制函数,strcpy是一种C语言的标准库函数,strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*)会被替换成__strcpy_chk函数(隐式函数),__strcpy_chk函数相对于strcpy函数具有更高的安全性,FORTIFY安全保护大大提高了程序的安全性。

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

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

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

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

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

获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF符号表信息;

判断所述ELF符号表信息中是否存在带_chk@字符串的符号,如是则表示所述程序已开启FORTIFY安全保护。

其中,所述判断所述ELF符号表信息中是否存在带_chk@字符串的符号,之后还包括:

如果判断出所述ELF符号表信息中不存在带_chk@字符串的符号,则表示所述程序未开启FORTIFY安全保护。

其中,所述基于FORTIFY安全保护的检测方法还包括:

如果所述程序未开启FORTIFY安全保护,则提示用户开启FORTIFY安全保护。

其中,所述第一命令为readelf–s。

本发明还提供一种存储介质,其中,所述存储介质存储有基于FORTIFY安全保护的检测程序,所述基于FORTIFY安全保护的检测程序被处理器执行时实现如上所述的基于FORTIFY安全保护的检测方法的步骤。

综上所述,本发明提供一种基于FORTIFY安全保护的检测方法、终端及存储介质,所述方法包括:获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF符号表信息;判断所述ELF符号表信息中是否存在带_chk@字符串的符号,如是则表示所述程序已开启FORTIFY安全保护。本发明通过判断程序是否开启FORTIFY安全保护,在程序未开启FORTIFY安全保护时提醒用户开启FORTIFY安全保护,如果程序开启了FORTIFY安全保护的话,内存操作函数会被替换成包括安全校验的函数,安全性更高,预防程序被黑客攻击。

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

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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号