用于验证基于UEFI的BIOS的安全性的方法和设备技术

技术编号:22364417 阅读:25 留言:0更新日期:2019-10-23 04:48
本文描述了用于验证基于UEFI的BIOS的安全性的方法。所述方法包括:获取基于UEFI的BIOS镜像;解析所述BIOS镜像,以得到BIOS镜像的分层解析结构,所述分层解析结构包括一个或多个固件卷,每个固件卷包括一个或多个固件文件,所述固件文件包括数据固件文件和可执行固件文件;以及基于所述分层解析结构确定所述BIOS的安全性。

Methods and devices for verifying the security of UEFI based BIOS

【技术实现步骤摘要】
用于验证基于UEFI的BIOS的安全性的方法和设备
本公开涉及计算机安全的
,具体地涉及用于验证基于UEFI的BIOS的安全性的方法和设备。
技术介绍
近年来,随着计算机技术和互联网的快速发展,计算机的安全性变得越来越重要。使用Intel公司的CPU(中央处理单元)的计算机是目前主流的计算平台,涉及到互联网公司内的数万计的个人电脑与十万计的服务器,而基于UEFI(统一可扩展固件接口)的BIOS则是这些使用Intel公司的CPU的个人电脑与服务器的初始化启动代码,可以说是整个计算平台的根基。如果所述BIOS中存在安全漏洞,则整个计算平台的安全性便无从谈起。目前来说,利用BIOS中存在的安全漏洞对计算机或服务器进行攻击或入侵是黑客常用的手段之一。然而,现有技术却很难确认Intel平台下的基于UEFI的BIOS的安全性,因此也难以避免使用存在潜在漏洞的BIOS,从而使得计算机或服务器的信息安全受到潜在威胁。
技术实现思路
有鉴于此,本公开提供了用于验证基于UEFI的BIOS的安全性的方法和设备,期望克服上面提到的部分或全部缺陷以及其它可能的缺陷。根据本公开的第一方面,提供了一种用于验证基于UEFI的BIOS的安全性的方法。所述方法包括:获取基于UEFI的BIOS镜像;解析所述BIOS镜像,以得到所述BIOS镜像的分层解析结构,所述分层解析结构包括一个或多个固件卷,每个固件卷包括一个或多个固件文件,所述固件文件包括数据固件文件和可执行固件文件;以及基于所述分层解析结构确定所述BIOS的安全性。在一些实施例中,基于所述分层解析结构确定所述BIOS的安全性可以包括:利用安全性判断模型来确定所述BIOS的安全性。所述安全性判断模型可以包括如下条件:(a)初始化引导代码块清单中定义的BIOS镜像的初始化启动阶段执行文件的地址范围完全包含BIOS镜像中SEC阶段和PEI阶段的可执行固件文件所在固件卷的地址范围;(b)PEI阶段的BootGuard实现所读取的DXE阶段的地址范围完全包含Dxe阶段的可执行固件文件的地址范围的集合;(c)PEI阶段的BootGuard实现中的散列算法的实现流程符合标准散列算法的实现流程,以及在所述BootGuard实现中的散列验证阶段仅引入单一正确的散列验证对象以与BootGuard实现中的散列算法得到的待验证对象进行对比并且不存在变量覆盖;(d)DXE阶段的SecureBoot实现中的散列算法的实现流程符合标准散列算法的实现流程,以及在所述SecureBoot实现中的散列验证阶段仅引入单一正确的散列验证对象以与SecureBoot实现中的散列算法得到的另一待验证对象进行对比并且不存在变量覆盖。在一些实施例中,所述方法还包括:如果上述条件(a)-(d)全部被满足,则确定所述BIOS为安全的。在一些实施例中,所述方法还包括:通过如下步骤得到Dxe阶段的可执行固件文件的地址范围的集合:确定涵盖Dxe阶段的可执行固件文件所在的所有固件卷的地址范围,并从中排除所述所有固件卷中的数据固件文件对应的地址范围。在一些实施例中,所述方法还包括:通过以下步骤确定PEI阶段的BootGuard实现中的散列算法的实现流程符合标准散列算法的实现流程:跟踪PEI阶段的BootGuard实现的流程以生成针对BootGuard实现的指令与上下游程序控制流图;从所述针对BootGuard实现的指令与上下游程序控制流图中获取BootGuard实现中的散列算法实现的控制流图;以及,确定所述BootGuard实现中的散列算法实现的控制流图属于标准散列算法实现的控制流图集。在一些实施例中,所述方法还包括:通过以下步骤确定PEI阶段的BootGuard实现中的散列验证阶段不存在变量覆盖:确定所述BootGuard实现中散列算法终结指令与散列验证指令间没有修改过BootGuard实现中的散列算法得到的所述待验证对象;以及,确定在通过散列验证指令得到结果后,针对该结果的变量没有被重新赋值。在一些实施例中,所述方法还包括:通过以下步骤确定DXE阶段的SecureBoot实现中的散列算法的实现流程符合标准散列算法的实现流程:跟踪DXE阶段的SecureBoot实现的流程以生成针对SecureBoot实现的指令与上下游程序控制流图;从所述针对SecureBoot实现的指令与上下游程序控制流图中获取SecureBoot实现中的散列算法实现的控制流图;以及,确定所述SecureBoot实现中的散列算法实现的控制流图属于标准散列算法实现的控制流图集。在一些实施例中,所述方法还包括:通过以下步骤确定SecureBoot实现中的散列验证阶段不存在变量覆盖:确定所述SecureBoot实现中的散列算法终结指令与散列验证指令间没有修改过SecureBoot实现中的散列算法得到的所述另一待验证对象;以及确定在通过所述散列验证指令得到结果后,针对该结果的变量没有被重新赋值。在一些实施例中,所述方法还包括:响应于确定不存在与该BIOS具有相同可执行固件文件且已确定其安全性的另一BIOS,则利用安全判断模型来确定所述BIOS的安全性。在一些实施例中,所述方法还包括:响应于确定存在与该BIOS具有相同可执行固件文件且已确定其安全性的另一BIOS,则将所述另一BIOS的安全性确定为该BIOS的安全性。根据本公开的第二方面,提供了一种用于验证基于UEFI的BIOS的安全性的设备。所述设备包括:获取模块,被配置成获取基于UEFI的BIOS镜像;解析模块,被配置成解析所述BIOS镜像,以得到所述BIOS镜像的分层解析结构,所述分层解析结构包括一个或多个固件卷,每个固件卷包括一个或多个固件文件,所述固件文件包括数据固件文件和可执行固件文件;以及,安全确定模块,被配置成基于所述分层解析结构确定所述BIOS的安全性。在一些实施例中,所述安全确定模块可以被配置成利用安全性判断模型来确定所述BIOS的安全性。所述安全性判断模型包括如下条件:(a)初始化引导代码块清单中定义的BIOS镜像的初始化启动阶段执行文件的地址范围完全包含BIOS镜像中SEC阶段和PEI阶段的可执行固件文件所在固件卷的地址范围;(b)PEI阶段的BootGuard实现所读取的DXE阶段的地址范围完全包含Dxe阶段的可执行固件文件的地址范围的集合;(c)PEI阶段的BootGuard实现中的散列算法的实现流程符合标准散列算法的实现流程,以及在所述BootGuard实现中的散列验证阶段仅引入单一正确的散列验证对象以与BootGuard实现中的散列算法得到的待验证对象进行对比并且不存在变量覆盖;(d)DXE阶段的SecureBoot实现中的散列算法的实现流程符合标准散列算法的实现流程,以及在所述SecureBoot实现中的散列验证阶段仅引入单一正确的散列验证对象以与SecureBoot实现中的散列算法得到的另一待验证对象进行对比并且不存在变量覆盖。在一些实施例中,所述安全确定模块可以被配置成响应于确定所述条件(a)-(d)全部被满足,则确定所述BIOS为安全的。根据本公开的第三方面,提供了一种计算设备,包括:处理器;以及,存储器,其被配置为在其上存储有计算机可执行指令,当计算机可执行指令被处理器执行时本文档来自技高网...

【技术保护点】
1.一种用于验证基于UEFI的BIOS的安全性的方法,包括:获取基于UEFI的BIOS镜像;解析所述BIOS镜像,以得到所述BIOS镜像的分层解析结构,所述分层解析结构包括一个或多个固件卷,每个固件卷包括一个或多个固件文件,所述固件文件包括数据固件文件和可执行固件文件;基于所述分层解析结构确定所述BIOS的安全性。

【技术特征摘要】
1.一种用于验证基于UEFI的BIOS的安全性的方法,包括:获取基于UEFI的BIOS镜像;解析所述BIOS镜像,以得到所述BIOS镜像的分层解析结构,所述分层解析结构包括一个或多个固件卷,每个固件卷包括一个或多个固件文件,所述固件文件包括数据固件文件和可执行固件文件;基于所述分层解析结构确定所述BIOS的安全性。2.根据权利要求1所述的方法,其中,基于所述分层解析结构确定所述BIOS的安全性,包括:利用安全性判断模型来确定所述BIOS的安全性,所述安全性判断模型包括如下条件:(a)初始化引导代码块清单中定义的BIOS镜像的初始化启动阶段执行文件的地址范围完全包含BIOS镜像中SEC阶段和PEI阶段的可执行固件文件所在固件卷的地址范围;(b)PEI阶段的BootGuard实现所读取的DXE阶段的地址范围完全包含Dxe阶段的可执行固件文件的地址范围的集合;(c)PEI阶段的BootGuard实现中的散列算法的实现流程符合标准散列算法的实现流程,以及在所述BootGuard实现中的散列验证阶段仅引入单一正确的散列验证对象以与BootGuard实现中的散列算法得到的待验证对象进行对比并且不存在变量覆盖;(d)DXE阶段的SecureBoot实现中的散列算法的实现流程符合标准散列算法的实现流程,以及在所述SecureBoot实现中的散列验证阶段仅引入单一正确的散列验证对象以与SecureBoot实现中的散列算法得到的另一待验证对象进行对比并且不存在变量覆盖。3.根据权利要求2所述的方法,还包括:如果所述条件(a)-(d)全部被满足,则确定所述BIOS为安全的。4.根据权利要求2或3所述的方法,还包括:通过如下步骤得到Dxe阶段的可执行固件文件的地址范围的集合:确定涵盖Dxe阶段的可执行固件文件所在的所有固件卷的地址范围,并从中排除所述所有固件卷中的数据固件文件对应的地址范围。5.根据权利要求2或3所述的方法,还包括:通过以下步骤确定PEI阶段的BootGuard实现中的散列算法的实现流程符合标准散列算法的实现流程:跟踪PEI阶段的BootGuard实现的流程以生成针对BootGuard实现的指令与上下游程序控制流图;从所述针对BootGuard实现的指令与上下游程序控制流图中获取BootGuard实现中的散列算法实现的控制流图;确定所述BootGuard实现中的散列算法实现的控制流图属于标准散列算法实现的控制流图集。6.根据权利要求2或3所述的方法,还包括:通过以下步骤确定PEI阶段的BootGuard实现中的散列验证阶段不存在变量覆盖:确定所述BootGuard实现中散列算法终结指令与散列验证指令间没有修改过BootGuard实现中的散列算法得到的所述待验证对象;确定在通过散列验证指令得到结果后,针对该结果的变量没有被重新赋值。7.根据权利要求2或3所述的方法,还包括:通过以下步骤确定DXE阶段的SecureBoot实现中的散列算法的实现流程符合标准散列算法的实现流程:跟踪DXE阶段的SecureBoot实现的流程以生成针对SecureBoot实现的指令与上下游程序控制流...

【专利技术属性】
技术研发人员:杨韬张尧
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

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

1