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

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

文献发布时间:2023-06-19 09:27:35


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

技术领域

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

背景技术

在Linux系统(是一套免费使用和自由传播的类UNIX操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统,它能运行主要的Unix工具软件、应用程序和网络协议;Linux具有开放源码、没有版权、技术社区用户多等特点,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台)安全领域数据可以写的存储区就会是攻击的目标,尤其是存储函数指针的区域;所以在安全防护的角度来说尽量减少可写的存储区域,对安全会有极大的好处。

GCC、GNU linker以及Glibc-dynamic linker一起配合实现了一种叫做RELRO的技术(read only relocation,只读重定位,RELRO是一种用于加强对binary数据段的保护的技术)。大概实现就是由linker指定二进制文件经过dynamic linker处理过relocation之后的区域为只读,设置符号重定向表格为只读或在程序启动时就解析并绑定所有动态符号,从而减少对GOT(Global Offset Table)攻击(也就是说,RELRO让加载器将重定位表中加载时解析的符号标记为只读,这减少了GOT覆写攻击的面积)。

当程序在编译时如果未开启RELRO安全保护的话,无法有效防止GOT被黑客攻击。

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

发明内容

本发明的主要目的在于提供一种基于RELRO安全保护的检测方法、终端及存储介质,旨在解决现有技术程序在编译时如果未开启RELRO安全保护的话,无法有效防止GOT被黑客攻击的问题。

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

获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF程序头;

判断所述ELF程序头中是否存在GNU_RELRO,如是则通过分析ELF文件的第二命令查看所述ELF文件的动态段;

判断所述动态段是否存在BIND_NOW,如是则表示所述程序已开启RELRO安全保护。

所述的基于RELRO安全保护的检测方法,其中,所述判断所述ELF程序头中是否存在GNU_RELRO,之后还包括:

如果判断出所述ELF程序头中不存在GNU_RELRO时,则表示所述程序未开启RELRO安全保护。

所述的基于RELRO安全保护的检测方法,其中,所述判断所述动态段是否存在BIND_NOW,之后还包括:

如果判断出所述动态段不存在BIND_NOW时,则表示所述程序未开启RELRO安全保护。

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

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

所述的基于RELRO安全保护的检测方法,其中,所述开启RELRO安全保护的方式为:添加编译选项。

所述的基于RELRO安全保护的检测方法,其中,所述第一命令为readelf-l。

所述的基于RELRO安全保护的检测方法,其中,所述第二命令为readelf–d。

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

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

本发明通过获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF程序头;判断所述ELF程序头中是否存在GNU_RELRO,如是则通过分析ELF文件的第二命令查看所述ELF文件的动态段;判断所述动态段是否存在BIND_NOW,如是则表示所述程序已开启RELRO安全保护。本发明通过判断程序是否开启RELRO安全保护,在程序未开启RELRO安全保护时提醒用户开启RELRO安全保护,如果程序在编译时开启了RELRO安全保护的话,链接后的重定向表就会是只读属性,这样就有效的防止了GOT被黑客攻击,大大提高了程序的安全性。

附图说明

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

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

具体实施方式

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

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

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

具体地,ELF文件由4部分组成,分别是ELF头(ELF header,即文件头,文件头信息可以判断ELF文件的类型,例如在ELF Header中的file_identification指明该文件类型为ELF的二进制文件)、程序头表(Program header table,即程序头)、节(Section)和节头表(Section header table,段是程序执行的必要组成部分,每个段中,会有代码或者数据被划分为不同的节,节头表是对这些节位置和大小的描述)。实际上,一个文件中不一定包含全部内容,而且它们的位置也未必如同所示这样安排,只有ELF头的位置是固定的,其余各部分的位置、大小等信息由ELF头中的各项值来决定。

在获取程序的ELF文件后,通过分析ELF文件的第一命令(所述第一命令为为readelf–l,readelf–l这个命令专门用来读取ELF文件的程序头)查看所述ELF文件的ELF程序头。

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

本发明中,RELRO可以分为Partial RELRO(部分RELRO)和Full RELRO(完整RELRO)。开启Partial RELRO的话GOT表是可写的;开启Full RELRO的话GOT表是只读的。本发明中RELRO优选为Full RELRO,因为链接后的重定向表是只读属性的情况下才可以有效的防止了GOT被黑客攻击。

步骤S20、判断所述ELF程序头中是否存在GNU_RELRO,如是则通过分析ELF文件的第二命令查看所述ELF文件的动态段。

其中,程序头描述与程序执行直接相关的目标文件结构信息,用来在文件中定位各个段的映像,同时包含其他一些用来为程序创建进程映像所必需的信息,可执行文件或者共享目标文件的程序头部是一个结构数组,每个结构描述了一个段或者系统准备程序执行所必需的其它信息。

ELF程序头是对二进制文件中段的描述,是程序装载必需的部分,段载内核装载时被解析,描述了磁盘上可执行文件的内存布局,以及如何映射到内存中,可以通过引用原始ELF头中名为e_phoff(程序头表偏移量)的偏移量来得到程序头表。

常见有5种程序头类型:

PT_LOAD,一个可执行文件只是一个PT_LOAD类型的段。这类程序头描述的时可装载的段。一般一个需要动态链接的ELF可执行文件通常由两个可装载的段:存放程序代码的text段,存放全局变量和动态链接的data段。

上面两个段会被映射到内存,根据p_align中存放的值在内存中对齐。程序头主要描述程序执行时在内存中的布局。

PT_DYNAMIC,动态段时动态链接可执行文件持有的,包含动态链接器所必有的一些信息,包含了一些标记值和指针,比如运行是需要链接的共享库列表,全局偏移表,重定位条目的相关信息。

PT_NOTE,保存了与特定供应商或者系统相关的附加信息。

PT_INTERP,将信息二号位置存放在一个NULL为终止符的字符串中,对程序解释器位置的描述。

PT_PHDR,段保存了程序头标本身的位置和大小。Phdr表保存了所有的Phdr对文件(以及内存镜像)中段的描述信息。

本发明中,在获取ELF文件的ELF程序头后,判断所述ELF程序头中是否存在GNU_RELRO(默认链接描述文件就是指示链接器创建GNU_RELRO段,GNU_RELRO段指向数据段的开头),如是则通过分析ELF文件的第二命令(所述第二命令为readelf–d)查看所述ELF文件的动态段。

进一步地,如果判断出所述ELF程序头中不存在GNU_RELRO时,则表示所述程序未开启RELRO安全保护,如果所述程序未开启RELRO安全保护,则提示用户开启RELRO安全保护。

步骤S30、判断所述动态段是否存在BIND_NOW,如是则表示所述程序已开启RELRO安全保护。

其中,当通过分析ELF文件的第二命令(readelf–d))查看所述ELF文件的动态段之后,判断所述动态段是否存在BIND_NOW,如是则表示所述程序已开启RELRO安全保护。

进一步地,如果判断出所述动态段不存在BIND_NOW时,则表示所述程序未开启RELRO安全保护,如果所述程序未开启RELRO安全保护,则提示用户开启RELRO安全保护。

其中,所述开启RELRO安全保护的方式为:添加编译选项,例如,添加编译选项-Wl,-z,relro、-z,now。

也就是说,本发明中,只有程序开启了RELRO安全保护时,链接后的重定向表就会是只读属性,这样就有效的防止了GOT被黑客攻击,RELRO保护大大提高了程序的安全性。

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

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

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

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

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

获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF程序头;

判断所述ELF程序头中是否存在GNU_RELRO,如是则通过分析ELF文件的第二命令查看所述ELF文件的动态段;

判断所述动态段是否存在BIND_NOW,如是则表示所述程序已开启RELRO安全保护。

其中,所述判断所述ELF程序头中是否存在GNU_RELRO,之后还包括:

如果判断出所述ELF程序头中不存在GNU_RELRO时,则表示所述程序未开启RELRO安全保护。

其中,所述判断所述动态段是否存在BIND_NOW,之后还包括:

如果判断出所述动态段不存在BIND_NOW时,则表示所述程序未开启RELRO安全保护。

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

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

其中,所述开启RELRO安全保护的方式为:添加编译选项。

其中,所述第一命令为readelf-l。

其中,所述第二命令为readelf–d。

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

综上所述,本发明提供一种基于RELRO安全保护的检测方法、终端及存储介质,所述方法包括:获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF程序头;判断所述ELF程序头中是否存在GNU_RELRO,如是则通过分析ELF文件的第二命令查看所述ELF文件的动态段;判断所述动态段是否存在BIND_NOW,如是则表示所述程序已开启RELRO安全保护。本发明通过判断程序是否开启RELRO安全保护,在程序未开启RELRO安全保护时提醒用户开启RELRO安全保护,如果程序在编译时开启了RELRO安全保护的话,链接后的重定向表就会是只读属性,这样就有效的防止了GOT被黑客攻击,大大提高了程序的安全性。

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

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

相关技术
  • 基于RELRO安全保护的检测方法、终端及存储介质
  • 一种基于PIE安全保护的检测方法、终端及存储介质
技术分类

06120112177410