【技术实现步骤摘要】
代码段校验方法、装置及存储介质
[0001]本申请实施例涉及网络安全
,特别涉及一种代码段校验方法、装置及存储介质。
技术介绍
[0002]随着网络技术的发展和广泛应用,网络安全变得越来越重要。目前,网络攻击的攻击目标不仅包括程序文件,还包括软件运行时的内核和用户态进程。其中,通常采用动态完整性度量(dynamic intergrity measurement,DIM)机制对软件运行过程中用户态进程运行的代码段进行动态校验,以此来防止用户态进程受到攻击,提升系统安全性。
[0003]当前,对软件运行过程中的用户态进程运行的代码段进行动态校验的实现思路是:首先在离线状态下计算软件的代码段的基线值。后续,在软件运行过程中,计算内存中用户态进程的代码段的动态值。将该动态值和基线值进行比较,如果二者相同,则确定校验通过,否则,则确定校验未通过。
[0004]然而,软件在运行过程中可能会由于存在程序漏洞而需要打补丁。在这种情况下,需要在软件运行时修改代码段信息,以便跳转到补丁代码区继续运行,实现热修复能力。由此可见,由于代码段信息被修改,因此,在软件运行过程中在线计算得到的代码段的动态值与离线状态下计算的代码段的基线值将无法一致。也即,在这种情况下,将无法再采用DIM机制对运行中的用户态进程进行校验。基于此,亟需提供一种代码段校验方法,以对软件运行过程中打补丁情况下的用户态进程进行校验,从而保证系统安全性。
技术实现思路
[0005]本申请实施例提供了一种代码段校验方法、装置及存储介质,用 ...
【技术保护点】
【技术特征摘要】
1.一种代码段校验方法,其特征在于,所述方法包括:在目标软件的运行过程中,根据打完多个补丁后第一文件内的进程代码段和多个过程链接表PLT表项,确定所述第一文件的代码段动态值,所述第一文件为所述目标软件的二进制镜像文件,所述第一文件还包括多个全局偏移表GOT表项,每个PLT表项用于存放指示跳转至GOT表项的指示信息,每个GOT表项用于存放所述多个补丁中的一个补丁函数的地址;存储所述第一文件的代码段动态值,以便证明设备根据所述第一文件的代码段动态值和代码段基线值,对所述目标软件运行过程中打完所述多个补丁后的第一文件的代码段进行校验,所述第一文件的代码段基线值为离线状态下根据重放打补丁后的进程代码段和所述多个PLT表项预测得到。2.根据权利要求1所述的方法,其特征在于,所述第一文件内的进程代码段中包括多个第一补丁原函数,所述方法还包括:在离线状态下,按照所述多个第一补丁原函数的执行顺序,从所述多个PLT表项和所述多个GOT表项中依次为每个第一补丁原函数分配对应的PLT表项以及GOT表项;确定从每个第一补丁原函数相对跳转至对应的PLT表项的跳转指令;根据每个第一补丁原函数对应的跳转指令预测变化后的进程代码段;确定预测的变化后的进程代码段和所述多个PLT表项的哈希值,得到所述第一文件的代码段基线值;将所述第一文件的代码段基线值发送至所述证明设备。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:生成所述多个第一补丁原函数、所述多个PLT表项和所述多个GOT表项之间的映射关系。4.根据权利要求1
‑
3任一所述的方法,其特征在于,所述方法还包括:在离线状态下,根据所述第一补丁中的补丁函数中的全局变量调用,在所述第一补丁中插入所述全局变量调用对应的第一类GOT表项,根据所述第一补丁中的补丁函数中的函数调用,在所述第一补丁中插入所述函数调用对应的第一类PLT表项和第一类GOT表项,所述第一补丁为所述多个补丁中的任一补丁;当所述第一补丁中不包含有补丁新增函数时,根据所述第一补丁中的补丁代码段和所述第一类PLT表项,确定所述第一补丁的代码段基线值,并将所述第一补丁的代码段基线值发送至所述证明设备。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:当所述第一补丁中包含有所述补丁新增函数时,在所述第一补丁中插入所述补丁新增函数对应的第二类PLT表项和第二类GOT表项;根据所述第一补丁中的补丁代码段、所述第一类PLT表项和所述第二类PLT表项,确定所述第一补丁的代码段基线值;将所述第一补丁的代码段基线值发送至所述证明设备。6.根据权利要求4或5所述的方法,其特征在于,所述存储所述第一文件的代码段动态值之后,还包括:在所述目标软件运行过程中,确定加载所述第一补丁后所述第一补丁的代码段动态值;
存储所述第一补丁的代码段动态值,以便所述证明设备根据所述第一补丁的代码段动态值和代码段基线值,对所述第一补丁进行校验。7.根据权利要求1
‑
6任一所述的方法,其特征在于,所述存储所述第一文件的代码段动态值,包括:生成包含有所述第一文件的代码段动态值的第一度量日志,并将所述第一度量日志存储至内核模块的内存中。8.根据权利要求7所述的方法,其特征在于,所述方法还包括:根据存储的各个度量日志中的代码段动态值,确定综合校验值;将所述综合校验值存储至可信平台模块TPM的平台配置寄存器PCR中,以便所述证明设备根据所述综合校验值、所述第一度量日志中的第一文件的代码段动态值和第一文件的代码段基线值,对所述第一文件的代码段进行校验。9.根据权利要求1
‑
8任一所述的方法,其特征在于,所述根据打完多个补丁后第一文件内的进程代码段和多个过程链接表PLT表项,确定所述第一文件的代码段动态值之前,还包括:当检测到打补丁进程打完所述多个补丁后,通过管理进程对所述打补丁进程进行认证;如果对所述打补丁进程的认证通过,则执行根据打完多个补丁后第一文件内的进程代码段和多个过程链接表PLT表项,确定所述第一文件的代码段动态值的步骤。10.根据权利要求9所述的方法,其特征在于,所述如果对所述打补丁进程的认证通过,所述方法还包括:通过内核模块对所述管理进程进行认证;如果对所述管理进程的认证通过,则执行根据打完多个补丁后第一文件内的进程代码段和多个过程链接表PLT表项,确定所述第一文件的代码段动态值的步骤。11.一种代码段校验装置,其特征在于,所述装置包括:第一确定模块,用于在目标软件的运行过程中,根据打完多个补丁后第一文件内的进程代码段和多个过程链接表PLT表项,确定所述第一文件的代码段动态值,所述第一文件为所述目标软件的二进...
【专利技术属性】
技术研发人员:陈欣佳,王超,
申请(专利权)人:北京华为数字技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。