可左右滑动选省市

计算机系统执行的方法、计算机可读存储介质和计算机平台

更新时间:2024-10-01
计算机系统执行的方法、计算机可读存储介质和计算机平台 专利申请类型:实用新型专利;
源自:美国高价值专利检索信息库;

专利名称:计算机系统执行的方法、计算机可读存储介质和计算机平台

专利类型:实用新型专利

专利申请号:CN202111250288.4

专利申请(专利权)人:慧与发展有限责任合伙企业
权利人地址:美国德克萨斯州

专利发明(设计)人:G·恩杜,N·J·爱德华兹

专利摘要:本公开总体上涉及基于内存扫描的进程监测。一种技术包括计算机系统的操作系统代理对进程进行监测以检测所述进程的完整性是否已经受到损害。所述监测包括所述操作系统代理扫描数据结构。所述进程在用户空间中执行,并且所述数据结构是操作系统内核空间的一部分。所述技术包括所述计算机系统的硬件控制器监听由所述操作系统代理生成的心跳。所述硬件控制器响应于以下各项中的至少一项而采取纠正动作:所述硬件控制器检测到所述心跳的中断、或所述操作系统代理向所述硬件控制器传送所述进程的安全警报。

主权利要求:
1.一种计算机系统执行的方法,包括:
由所述计算机系统的操作系统代理对进程进行监测以检测所述进程的完整性是否已经受到损害,其中,所述监测包括所述操作系统代理扫描与所述进程相关联的数据结构中的数据,所述进程在用户空间中执行,所述数据结构是操作系统内核空间的一部分,所述操作系统代理生成心跳,并且所述心跳包括遵循时间表的一系列指示以表示所述操作系统代理正在以可接受的状态操作,其中,所述内核空间包括虚拟内存区,所述虚拟内存区包含关于所述进程的地址空间的对应部分的信息,并且所述虚拟内存区不能由所述用户空间中的所述进程访问;
所述计算机系统的硬件控制器监听所述心跳,其中所述硬件控制器与所述操作系统代理分离;以及所述硬件控制器响应于以下各项中的至少一项而采取纠正动作:所述硬件控制器检测到所述心跳的中断、或所述操作系统代理向所述硬件控制器传送所述进程的安全警报,其中所述安全警报响应于所扫描的数据指示所述进程的完整性受损而生成。
2.如权利要求1所述的方法,进一步包括:
应用程序向所述操作系统代理注册所述进程,其中,所述操作系统代理响应于所述注册而开始监测所述进程。
3.如权利要求2所述的方法,其中,所述注册包括所述应用程序启用所述操作系统代理对所述进程的心跳监测。
4.如权利要求1所述的方法,其中,所述硬件控制器采取所述纠正动作包括以下各项中的至少一项:所述硬件控制器发起所述计算机系统的重启、或所述硬件控制器向管理服务器传送安全警报。
5.如权利要求1所述的方法,其中,所述硬件控制器监听所述心跳包括所述硬件控制器进行以下操作:从所述操作系统代理接收消息;以及
基于与所述心跳相关联的预定种子或密钥来确定所述消息是否表示所述心跳。
6.如权利要求5所述的方法,进一步包括:
在所述计算机系统的预操作系统环境中,所述硬件控制器将所述预定种子或密钥存储在系统管理基本输入输出系统SMBIOS表中;
所述操作系统代理从所述SMBIOS表中读取所述预定种子或密钥;以及从所述SMBIOS表中擦除所述预定种子或密钥。
7.如权利要求5所述的方法,进一步包括:
响应于所述计算机系统的操作系统的初始化,将取得的种子或密钥注入到所述操作系统的密钥环中。
8.如权利要求5所述的方法,进一步包括:
应用程序将所述预定密钥或种子作为内核参数传送到所述操作系统代理;以及使用应用程序编程接口将所述预定种子或密钥传送到所述硬件控制器。
9.如权利要求1所述的方法,其中,所述一系列指示的中断与所述操作系统代理不以所述可接受的状态操作相对应。
10.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储机器可读指令,所述指令在由机器执行时使所述机器进行以下操作:使操作系统代理扫描与进程相关联的内核内存空间,以检测与所述进程被安全攻击损害相对应的内存状态,其中,所述内核内存空间包括虚拟内存区,所述虚拟内存区包含关于所述进程的地址空间的对应部分的信息,并且所述虚拟内存区不能由用户空间中的所述进程访问;
使所述操作系统代理向硬件控制器发送第一心跳,其中所述硬件控制器与所述操作系统代理分离,并且所述第一心跳包括遵循时间表的一系列指示以表示所述操作系统代理正在以可接受的状态操作;以及响应于检测到所述内存状态,使所述操作系统代理向所述硬件控制器传送警报以使所述硬件控制器采取纠正动作。
11.如权利要求10所述的计算机可读存储介质,其中,所述指令在由所述机器执行时进一步使所述机器进行以下操作:响应于向心跳监测选项注册所述进程,监听由所述进程生成的第二心跳;以及响应于未能检测到所述第二心跳,向所述硬件控制器传送警报以使所述硬件控制器采取纠正动作。
12.如权利要求10所述的计算机可读存储介质,其中,所述指令在由所述机器执行时,进一步使所述机器基于对共享库对象的识别和所述共享库对象的位置来检测所述内存状态。
13.如权利要求10所述的计算机可读存储介质,其中,所述指令在由所述机器执行时,进一步使所述机器基于检测到与所述进程相关联的可执行内存页面是写入时复制页面来检测所述内存状态。
14.如权利要求13所述的计算机可读存储介质,其中,所述指令在由所述机器执行时,进一步使所述机器基于与所述内存页面相关联的至少一个状态标志来检测所述内存状态。
15.如权利要求10所述的计算机可读存储介质,其中,所述指令在由所述机器执行时进一步使所述机器进行以下操作:识别与所述进程相关联的给定共享库对象以及与所述给定共享库对象相关联的路径;
将所述给定共享库对象与具有多个经批准的共享库对象和与所述多个经批准的共享库对象相关联的文件路径的参考列表进行比较;以及基于所述比较来确定是否已经检测到与所述进程被安全攻击损害相对应的内存状态。
16.一种计算机平台,包括:
基板管理控制器,所述基板管理控制器用于进行以下操作:
监测由可加载的操作系统内核扩展提供的第一心跳,其中所述第一心跳包括遵循第一时间表的第一系列指示以表示所述内核扩展正在以可接受的状态操作;以及响应于检测到所述第一系列指示的中断或从所述操作系统内核扩展传送安全警报,发起用于解决所述安全警报的动作;
除所述基板管理控制器之外的硬件处理器;以及
存储器,所述存储器用于存储与所述操作系统内核扩展相对应的指令,其中,所述指令在由所述硬件处理器执行时使所述硬件处理器进行以下操作:监听由进程生成的第二心跳,其中所述第二心跳包括遵循第二时间表的第二系列指示以表示所述进程正在以可接受的状态操作;
扫描与所述进程相关联的内核内存空间,以检测与所述进程的完整性被损害相对应的内存状态,其中,所述内核内存空间包括虚拟内存区,所述虚拟内存区包含关于所述进程的地址空间的对应部分的信息,并且所述虚拟内存区不能由用户空间中的所述进程访问;
将所述第一心跳发送到所述基板管理控制器;以及
响应于检测到所述第二系列指示的中断或者检测到所述内存状态中的至少一项,将所述安全警报传送到所述基板管理控制器。
17.如权利要求16所述的计算机平台,其中,所述指令在由所述硬件处理器执行时,进一步使所述硬件处理器使用所述内存扫描来确定所述进程是否已经经受进程挖空或代码注入中的至少一个。
18.如权利要求16所述的计算机平台,其中,所述进程包括多个进程中的一个进程,并且所述指令在由所述硬件处理器执行时进一步使所述硬件处理器进行以下操作:监听由所述多个进程生成的多个心跳;以及
响应于检测到所述多个心跳中的给定心跳的中断,将安全警报传送到所述基板管理控制器。
19.如权利要求16所述的计算机平台,其中:
所述指令在由所述硬件处理器执行时进一步使所述硬件处理器进行以下操作:确定与所述进程相关联的多个共享库对象,并且对于所述多个共享库对象中的每个共享库对象,确定所述共享库对象的文件路径;
将所述多个共享库对象和所述文件路径传送到所述基板管理控制器;以及所述基板管理控制器将传送到所述基板管理控制器的所述多个共享库对象和所述文件路径传送到远程管理服务器。
20.如权利要求16所述的计算机平台,其中,所述指令在由所述硬件处理器执行时,进一步使所述硬件处理器基于与所述基板管理控制器共享的预定种子或密钥来生成与所述第一心跳相对应的消息。
21.如权利要求16所述的计算机平台,其中,所述指令在由所述硬件处理器执行时,进一步使所述硬件处理器基于以下各项中的至少一项来检测所述内存状态:确定与所述进程相关联的可执行内存页面是写入时复制页面;或者检测到与所述进程相关联的共享库对象和所述共享库对象的文件路径位置。 说明书 : 计算机系统执行的方法、计算机可读存储介质和计算机平台技术领域[0001] 本公开一般涉及计算机系统。背景技术[0002] 计算机平台(例如,服务器)可能会受到安全攻击,其中,外部实体试图访问在计算机平台上存储的信息或损害计算机平台的部件。为了防止安全攻击或至少抑制由安全攻击造成的危害的程度,计算机平台可以具有不同级别的保护。例如,计算机平台可以具有用于限制访问的各种机制,如防火墙、密码、密钥等等。作为另一个示例,计算机平台可以具有扫描目录、搜索恶意软件代理的恶意软件防护软件。作为其他示例,计算机平台可以定期测量其软件部件,使得可以分析测量结果(例如,通过远程服务器上的分析工具)以确定是否发生了篡改;计算机平台中发生的事件(登录密码失败、网站访问等等)可以使用系统信息和事件管理(systeminformationandeventmanagement,SIEM)系统进行监测;等等。发明内容[0003] 根据本公开的一个方面,提供了一种计算机系统执行的方法,包括:由所述计算机系统的操作系统代理对进程进行监测以检测所述进程的完整性是否已经受到损害,其中,所述监测包括所述操作系统代理扫描与所述进程相关联的数据结构中的数据,所述进程在用户空间中执行,所述数据结构是操作系统内核空间的一部分,所述操作系统代理生成心跳,并且所述心跳包括遵循时间表的一系列指示以表示所述操作系统代理正在以可接受的状态操作;所述计算机系统的硬件控制器监听所述心跳,其中所述硬件控制器与所述操作系统代理分离;以及所述硬件控制器响应于以下各项中的至少一项而采取纠正动作:所述硬件控制器检测到所述心跳的中断、或所述操作系统代理向所述硬件控制器传送所述进程的安全警报,其中所述安全警报响应于所扫描的数据指示所述进程的完整性受损而生成。[0004] 根据本公开的另一方面,还提供了一种非暂态计算机可读存储介质,所述非暂态存储介质存储机器可读指令,所述指令在由机器执行时使所述机器进行以下操作:使操作系统代理扫描与进程相关联的内核内存空间,以检测与所述进程被安全攻击损害相对应的内存状态;使所述操作系统代理向硬件控制器发送第一心跳,其中所述硬件控制器与所述操作系统代理分离,并且所述第一心跳包括遵循时间表的一系列指示以表示所述操作系统代理正在以可接受的状态操作;以及响应于检测到所述内存状态,使所述操作系统代理向所述硬件控制器传送警报以使所述硬件控制器采取纠正动作。[0005] 根据本公开的又一方面,还提供了一种计算机平台,包括:基板管理控制器,所述基板管理控制器用于进行以下操作:监测由可加载的操作系统内核扩展提供的第一心跳,其中所述第一心跳包括遵循第一时间表的第一系列指示以表示所述内核扩展正在以可接受的状态操作;以及响应于检测到所述第一系列指示的中断或从所述操作系统内核扩展传送安全警报,发起用于解决所述安全警报的动作;除所述基板管理控制器之外的硬件处理器;以及存储器,所述存储器用于存储与所述操作系统内核扩展相对应的指令,其中,所述指令在由所述硬件处理器执行时使所述硬件处理器进行以下操作:监听由所述进程生成的第二心跳,其中所述第二心跳包括遵循第二时间表的第二系列指示以表示所述进程正在以可接受的状态操作;扫描与所述进程相关联的内核内存空间,以检测与所述进程的完整性被损害相对应的内存状态;将所述第一心跳发送到所述基板管理控制器;以及响应于检测到所述第二系列指示的中断或者检测到所述内存状态中的至少一项,将所述安全警报传送到所述基板管理控制器。附图说明[0006] 图1是根据示例实施方式的包括用于监测用户空间进程的完整性的基于操作系统内核的进程监测器的计算机平台的示意图。[0007] 图2是根据示例实施方式的由图1的进程监测器进行的进程监测的图示,包括计算机平台的基板管理控制器对进程监测的增强。[0008] 图3是描绘了根据示例实施方式的对用户空间进程的基于内核空间的数据结构进行扫描以搜索可疑共享库对象的流程图。[0009] 图4是描绘了根据示例实施方式的对用户空间进程的基于内核空间的数据结构进行扫描以搜索写入时复制(copyonwrite,COW)可执行页面的流程图。[0010] 图5是图示了根据示例实施方式的将心跳种子或密钥传递到计算机平台的操作系统的流程图。[0011] 图6是描绘了根据示例实施方式的由进程监测器使用以构建心跳消息并将心跳消息发送到基板管理控制器的技术的流程图。[0012] 图7是描绘了根据示例实施方式的由进程监测器使用的心跳监测技术的流程图。[0013] 图8是描绘了根据示例实施方式的由基板管理控制器使用以验证心跳消息的技术的流程图。[0014] 图9是描绘了根据示例实施方式的由基板管理控制器使用以响应来自进程监测器的警报消息以及响应来自进程监测器的心跳中断的技术的流程图。[0015] 图10是描绘了根据示例实施方式的用于使用操作系统代理和硬件控制器来监测用户空间进程的技术的流程图。[0016] 图11是根据示例实施方式的存储用于使机器对进程进行监测的机器可读指令的非暂态存储介质的图示。[0017] 图12是描绘了根据示例实施方式的使用操作系统内核扩展和基板管理控制器来监测进程的计算机平台的示意图。具体实施方式[0018] 计算机平台(例如,服务器、便携式计算机、平板计算机等等)可以具有多种用户空间进程,如为计算机平台提供安全服务的用户空间进程。在该上下文中,“进程”是指正在执行的程序的实例,如应用程序的实例。给定的进程可以是单线程的(即,与单个线程相对应)或多线程的(即,与多个线程相对应),其中,“线程”是指可执行程序指令的单元。例如,多个线程可以由计算机平台的多个处理核并行执行以执行计算机平台的特定任务或任务的集合。[0019] 计算机平台的内存空间可以分为内核空间和用户空间。“内核空间”是指其中存储和执行操作系统内核代码的计算机平台的内存空间;而“用户空间”是指由如应用程序进程等非操作系统内核进程(或“用户空间进程”)使用的计算机平台的内存空间。内核空间具有最高特权级别并且无法由用户空间进程访问。内核进程可以访问内核空间和用户空间两者。执行恶意软件防护应用程序的实例是为计算机平台提供安全服务的用户空间进程的示例。Linux内核和WindowsNT内核是操作系统内核的示例。[0020] 由于为计算机系统提供安全服务的进程可以在用户空间中,所以这些进程可能容易受到恶意软件的安全攻击的影响。在这种情况下,“恶意软件”通常是指以故意损坏计算机系统(例如,单个计算机平台或计算机平台网络)和/或从计算机系统中提取信息为目的而构建的任何软件。恶意软件以多种不同形式存在,如病毒、勒索软件、蠕虫、特洛伊木马(Trojanhorse)等等。[0021] 恶意软件(例如,RobinHood勒索软件)可能会停止或杀死用户空间安全服务相关的进程,以保持隐藏并且更深地进入到企业的计算机系统中。杀死这些安全服务相关的用户空间进程可以与传统的基于恶意软件的攻击(例如,注入攻击(injectionattack)、进程挖空攻击(processhollowingattack)等等)相结合,以逃避防御以及尽可能地提升恶意软件代理的特权。[0022] 根据本文所描述的示例实施方式,如计算机平台的计算机系统包括被称为“进程监测器”的操作系统内核代理,所述操作系统内核代理监测用户空间进程(例如,提供安全服务的进程)以检测这些进程的完整性是否已经受损。根据示例实施方式,进程监测器扫描内核空间数据结构(例如,虚拟内存区(VMA)),所述数据结构包含关于被监测的用户进程地址空间的对应部分的信息。通过监测内核空间数据结构,进程监测器能够检测与受损进程的完整性一致的进程的内存状态的特定状态。例如,进程监测器可以检测进程内存状态,所述进程内存状态指示被监测的进程经历了进程挖空或指示代码已被注入到进程中。[0023] 由于进程监测器是操作系统内核的一部分并且被监测的数据结构在内核空间内,因此对用户空间进程的监测是高度抗篡改的。根据示例实施方式,为了进一步加强进程监测器对潜在强大对手的监测,计算机平台的硬件对监测进行了增强。更具体地,根据一些实施方式,进程监测器生成心跳;并且计算机平台的硬件控制器(例如,基板管理控制器)监听所述心跳。如果硬件控制器检测到心跳中断,则硬件控制器可以假定操作系统内核(和进程监测器)的完整性已经受到损害,并且继续采取补救或纠正动作。如本文中进一步描述的,(多个)纠正动作可以包括关闭计算机平台、重启计算机平台、通知远程管理服务器等等。在该上下文中,“心跳”是指信号、ping或指示(如消息)的重复序列,它们遵循特定时间表(例如,周期性时间表)以表示发送或生成心跳的实体正在以可接受的状态运行。因此,心跳的中断(例如,心跳的信号、ping或指示丢失)与未在可接受状态下操作的实体相对应。[0024] 根据示例实施方式,如果进程监测器检测到被监测的用户空间进程与受损的进程的完整性一致的内存状态,则硬件控制器从进程监测器接收警报。硬件控制器可以响应于这种警报而采取纠正动作(例如,关闭计算机平台、重启计算机平台、向远程管理服务器发出警报等等)。[0025] 如本文中进一步描述的,根据示例实施方式,进程监测器可以监听被监测的用户空间进程的心跳,使得如果用户空间进程停止运行(例如,由于恶意软件杀死进程而停止运行),则进程监测器可以经由检测到的心跳缺失来检测该事件。因此,根据一些实施方式,被监测的用户空间进程可以具有以下心跳层次结构:由被监测的进程发送的第一层级的心跳,所述第一层级可以用于检测对进程的篡改;以及包括由进程监测器发送的心跳的第二层级,所述第二层级可以用于检测对进程监测器的篡改(以及因此对操作系统内核的篡改)。同样如本文中进一步描述的,根据一些实施方式,由给定的被监测的用户空间进程对心跳的发送(以及对心跳的对应监测)可以是可选的,由此允许基于内存扫描的监测仍然用于不支持生成心跳的传统用户空间进程。[0026] 参考图1,作为更具体的示例,根据一些实施方式,计算机平台100可以包括一个或多个处理器110(例如,一个或多个中央处理单元(CPU)、一个或多个CPU处理核等等);以及系统存储器114。系统存储器114和本文中讨论的其他存储器是非暂态存储介质,所述非暂态存储介质可以由半导体存储设备、基于忆阻器的存储设备、磁存储设备、相变存储器设备、这些存储技术中的一种或多种存储技术的设备的组合等形成。系统存储器114可以表示易失性存储器设备和非易失性存储器设备两者的存储器的集合。[0027] 根据示例实施方式,系统存储器114的存储器位置包括用户空间115和内核空间117。内核空间117表示系统存储器114的存储器位置,与操作系统内核104相对应的操作系统内核代码在所述内核空间中存储和执行;并且用户空间115是指系统存储器114的内存空间,所述用户空间由如与应用程序111的执行实例相对应的进程等非操作系统内核进程(或“用户空间进程”)使用。如本文中进一步描述的,给定的用户空间进程可以是被监测的用户空间进程108(本文中也被称为“被被监测的进程108”或“进程108”)。[0028] 根据许多可能的实施方式,计算机平台100只是许多不同潜在架构的一个示例。通常,无论其具体架构如何,计算机平台都是基于处理器的电子设备,所述电子设备的操作系统具有相关联的内核空间和用户空间。作为示例,计算机平台100可以是独立服务器、安装在机架上的服务器模块;边缘处理的安装在机架上的模块;刀片服务器;包含一个或多个刀片服务器的刀片机箱;客户机;瘦客户机;台式计算机;便携式计算机;膝上型计算机;笔记本计算机;平板计算机;智能电话;可穿戴计算机;等等。[0029] 根据示例实施方式,计算机平台100包括被称为“进程监测器106”(本文中也被称为“基于操作系统内核的进程监测器106”)的内核空间操作系统代理,所述内核空间操作系统代理可以出于检测或确定进程108的完整性是否已经受损的目的(即,为了检测是否发生篡改)而对多个用户空间进程108中的一个用户空间进程进行监测。根据示例实施方式,进程监测器106可以是操作系统内核104的扩展,例如,与在操作系统安装期间加载的代码135相对应的Linux操作系统的可加载内核模块(LKM);并且在安装操作系统之后,进程监测器106成为操作系统内核104的一部分。[0030] 如本文中进一步描述的,根据示例实施方式,进程监测器106提供应用程序编程接口(applicationprogramminginterface,API)109,所述API允许应用程序111注册与应用程序111的实例相对应的用户空间进程,使得在注册时,所述进程成为由进程监测器106监测的经注册的用户空间进程108。[0031] 根据一些实施方式,API109可以提供register()函数,所述函数被调用以注册进程(以成为对应的被监测的进程108)并且在其他参数中接收所述进程的进程标识(ID)。API109还可以提供ping()函数,所述函数可以被调用以选择对来自进程108的心跳的可选的监测。除了其他参数之外,ping()函数可以接收表示心跳超时时间段的参数。API109还可以提供unregister()函数,所述函数用于将进程注销为被监测的进程108。应当注意,根据示例实施方式,对被监测的进程108的心跳的监测可以是可选地,以适应传统进程无法生成心跳的情况。[0032] 图2是根据示例实施方式的由进程监测器106对进程108进行监测的图示200。结合图1参考图2,根据示例实施方式,进程监测器106扫描内核空间117的与被监测的用户空间进程108相关联的一部分以获取对应的内存扫描数据224。更具体地,根据一些实施方式,进程监测器106可以定期扫描一个或多个操作系统内核空间数据结构119(本文中也被称为“内核空间数据结构119”和“数据结构119”),所述操作系统内核空间数据结构描述被监测的进程108的相应用户空间内存区域(例如,虚拟内存区域)。操作系统内核104使用内核空间数据结构119来跟踪和管理被监测的进程108的用户内存空间。例如,操作系统内核104可以使用数据结构119来管理页面回收、写入时复制(copy‑on‑write,COW)、文件的内存映射、按需调页等等。根据示例实施方式,被监测的进程108可以具有多个内核空间数据结构119,其中,每个内核空间数据结构119与进程108的不同的连续虚拟内存空间相对应,并且所述连续虚拟内存空间共享公共属性。[0033] 作为示例,根据一些实施方式,对于Linux操作系统,内核数据结构119可以是虚拟内存区(VMA),所述VMA包含:指向虚拟内存的对应连续区段的起始和结束虚拟地址的指针;表示相应页面是否为只读的标志;表示相应页面是否脏(dirty)的标志;表示相应页面是否可执行的标志;表示后备存储资源的数据;表示反向映射结构的数据;等等。根据示例实施方式,给定的用户空间被监测的进程108可以具有多个VMA,如用于对应程序代码的一个VMA、用于每种类型数据的另一个VMA、用于每一个不同内存映射的VMA等等。[0034] 根据示例实施方式,进程监测器106可以不时地扫描(例如,以周期性间隔扫描、连续扫描和重新扫描、根据预定义的计划不时地扫描等)针对特定被监测的用户空间进程108的(多个)内核空间数据结构119,以基于存储在(多个)数据结构119中的观察到的数据来确定被监测的用户空间进程108是否具有指示或表示进程108的完整性已经受损的某种内存状态。该确定可以涉及确定(如下文结合图3进一步描述的)被监测的用户空间进程108是否具有指示在进程的上下文中加载恶意库的(多次)尝试的任何共享库对象(本文中被称为“可疑库对象”);和/或所述确定可以涉及确定(如下文结合图4进一步描述的)被监测的用户空间进程108是否具有与恶意代码注入一致的任何写入时复制(COW)可执行页面。[0035] 仍结合图1参考图2,在对进程的(多个)内核空间数据结构119进行的扫描揭示了指示或表示进程108的完整性损害的内存状态的情况下,则根据示例实施方式,进程监测器106向计算机平台的硬件控制器(如基板管理控制器170)发送警报240(例如,消息)。通常,警报240标识特定被监测的用户空间进程108;并且表示已经由进程监测器106检测或确定的进程108的特定完整性损害问题。[0036] 根据示例实施方式,向硬件(如基板管理控制器170)发送警报240进一步加强了进程监测和报告,从而防止被恶意软件代理损害。如本文中进一步描述的,根据一些实施方式,基板管理控制器170可以包含用于计算机平台100的硅信任根(siliconrootoftrust,SRoT);并且由此,基板管理控制器170用作高度可信的实体以响应于警报240而向远程管理服务器194发送对应的警报250(例如,消息)。根据示例实施方式,类似于警报240,警报250可以例如包含所讨论的被监测的用户空间进程108的标识符,以及表示关于进程监测器106检测到的完整性损害的性质的细节的其他信息。如本文中进一步描述的,还可以使用给定的警报250向远程管理服务器194传送操作系统内核104已经受到损害。[0037] 基板管理控制器170响应于从进程监测器106接收到警报240,可以取决于特定实施方式来采取附加的和/或不同的纠正或补救动作(除了发送警报250)。例如,根据一些实施方式,基板管理控制器170可以响应于接收到警报240而使计算机平台100掉电,并且在允许计算机平台100重启之前需要密码、密钥或其他凭证(例如,经由远程管理服务器194提供的凭证)。作为另一个示例,根据一些实施方式,基板管理控制器170可以响应于接收到警报240而重启(即,执行上电复位)计算机平台100。根据一些实施方式,基板管理控制器170采取的(多个)特定补救动作可以基于预定义的用户策略。[0038] 同样如图2中描绘的,根据一些实施方式,进程监测器106可以向基板管理控制器170发送心跳230。作为示例,心跳230可以与消息序列(例如,快速外围部件互连(PeripheralComponentInterconnectexpress,PCIe)消息)相对应,其中,每一个消息与心跳230的特定心跳指示或ping相对应。基板管理控制器170监听心跳230,使得如果心跳230中断(例如,基板管理控制器170未能在特定的超时时间段内接收到心跳指示或ping),则根据示例实施方式,基板管理控制器170可以根据预定义的用户策略向远程管理服务器194发送对应的警报250和/或采取附加的或不同的补救动作。[0039] 通过监听心跳230,基板管理控制器170可以检测进程监测器106的完整性以及因此检验操作系统内核104的完整性是否已经受损。这保护了进程监测免受相对强大的对手可能潜在地篡改操作系统内核104并且可能以其他方式(如果不是针对心跳230机制的话)禁用进程监测器106的监测而不知道基板管理控制器170可检测到该禁用。应当注意,根据示例实施方式,计算机平台100可以采用一种或多种附加措施(即,除了监测心跳230之外的措施)以确定或检测操作系统内核104的完整性是否已经受到损害。例如,根据一些实施方式,基板管理控制器170可以包含扫描引擎(例如,由硬件、机器可执行指令或其组合形成的引擎),如美国专利申请公开号2019/0384918中描述的扫描引擎,所述扫描引擎出于确保操作系统内核104及其扩展未被改变的目的,可以扫描内核数据结构、内核代码和可加载内核模块(如进程监测器106)。扫描引擎是示例,因为根据进一步实施方式,计算机平台100可以包含一个或多个不同的和/或附加的机制来监测操作系统内核104的完整性。[0040] 基板管理控制器170可以将除警报250之外的进程监测信息传送到远程管理服务器194。例如,如图2中图示的,根据一些实施方式,进程监测器106可以向基板管理控制器170发送包含关于内存扫描结果的数据的非警报报告消息244;并且基板管理控制器170可以编译所述数据并且将对应的报告消息260发送到远程管理服务器194,从而报告结果。[0041] 例如,根据一些实施方式,进程监测器106可以向基板管理控制器170发送报告消息244,所述报告消息包含表示特定的被监测的用户空间进程108的作为扫描对应内核空间数据结构119的结果而被找到的共享库对象的数据。报告消息244还可以包含共享库对象的对应文件路径。通过向远程管理服务器194报告(经由报告消息260)共享库对象和文件路径,服务器194(或其他实体)上的安全验证工具可以例如将共享库对象的文件路径与在计算机平台100的完整性测量架构(IntegrityMeasurementArchitecture,IMA)日志中记录的文件路径进行比较。在比较中识别的文件路径差异可以例如揭示计算机平台100的某些软件部件的完整性已经受损。[0042] 作为另一个示例,根据一些实施方式,计算机平台100可以是服务器机群中的一个服务器;可以对来自由所述机群中的服务器提供的内存扫描报告的数据进行统计分析(例如,通过远程管理服务器194或其他部件上的工具进行分析);并且可以响应于给定服务器的统计数据是相对于来自所述机群中的其余服务器的对应统计数据的异常值而生成针对所述机群中的给定服务器的警报。[0043] 图2还描绘了进程监测器106监测由相应被监测的用户空间进程108生成的心跳210。根据示例实施方式,应用程序111(图1)可以经由API109为特定被监测的用户空间进程108选择心跳监测、以及针对心跳210的特定超时时间段。如果进程监测器106检测到心跳210的中断(即,在心跳210的超时时间段内没有检测到心跳指示或ping),则进程监测器106可以向基板管理控制器170发送对应的警报240,使得控制器170然后可以采取适当的补救或纠正动作(例如,重启、将警报250传送到远程管理服务器194等等)。应当注意,根据示例实施方式,针对被监测的用户空间进程108的心跳监测是可选的,这允许例如传统用户空间进程108使其内存被进程监测器106扫描,同时放弃对进程108进行心跳监测。[0044] 根据一些实施方式,API109可以是套接字样式的API,如用于Linux操作系统的NetlinkAPI。通常,套接字样式的API可以比例如使用非标准系统调用或针对Linux操作系统的基于输入/输出控制(input/outputcontrol,ioctl)系统调用的机制实施的API更容易使用。根据示例实施方式,用户空间进程108可以绑定到套接字,这允许进程监测器106对进程108进行验证。在进程通过验证之后,进程监测器106然后可以执行对与进程108相关联的内核空间数据结构119的扫描,以及监测来自进程的心跳210(如果选择了该选项的话)。[0045] 根据一些实施方式,计算机平台100不提供任何附加机制来防止心跳210的欺骗,因为如Netlink的套接字消息传递系统提供了足够的上下文信息用于心跳210的认证。在这方面,用户空间进程108发送其相应的进程ID,进程监测器106可以使用所述进程ID来安全地识别心跳210的来源。此外,根据一些示例实施方式,套接字消息传递系统支持双工通信,这允许进程监测器106向用户空间进程108发送消息以请求来自进程108的进一步信息以便验证心跳210的来源。[0046] 根据进一步实施方式,API109可以不是套接字样式的API,并且可以使用系统调用来调用。[0047] 进程监测器106的功能可以使用工作队列228(例如,Linux工作队列)来实施。通常,进程监测器106的调度器可以向工作队列228提供工作单元229,其中,每个工作单元229可以表示由对应的内核线程执行的特定任务或功能。通常,工作队列228的使用允许多线程方法来执行进程监测器106的功能。作为示例,这些功能可以包括注册用户空间进程108用于内存扫描监测;注册用户空间进程108用于心跳210监测;执行与用户空间进程108相对应的数据结构119的内存扫描;监听来自用户空间进程108的心跳210;生成针对心跳230的ping(例如,消息);调节向基板管理控制器170发送警报240;将报告消息244发送到基板管理控制器170;注销用户空间进程108,使其不被监测;等等。[0048] 返回参考图1,根据示例实施方式,除了(多个)处理器110、系统存储器114和基板管理控制器170之外,计算机平台100还可以具有各种其他硬件部件,如输入/输出(I/O)桥或平台控制器集线器(PCH)118;一个或多个大容量存储设备130;存储固件176的非易失性存储器184(例如,闪速存储器);一个或多个网络接口卡(NIC)113;可信平台模块(TPM)188;I/O设备(例如,键盘、鼠标、触控板、显示器等等);PCIe选项卡;等等。[0049] 根据示例实施方式,基板管理控制器170、(多个)NIC113、TPM188和处理器110可以通过PCH118进行通信;并且(多个)存储设备130可以通过PCH118耦接到处理器110。如图1中描绘的,根据一些实施方式,(多个)存储设备130可以存储操作系统镜像132(与操作系统相对应)、操作系统启动加载程序代码134(与操作系统启动加载程序相对应)、进程监测器代码135(与进程监测器106相对应);以及应用程序代码136(与应用程序111相对应)。对于图1的示例实施方式,NIC113将PCH118耦接到网络结构190以允许基板管理控制器170与管理网络(包括所描绘的远程管理服务器194)通信。根据进一步的示例实施方式,基板管理控制器170可以包含与网络结构190通信的网络接口控制器。[0050] 通常,网络结构190可以与一种或多种类型的通信网络相关联,如(作为示例)光纤通道网络、iSCSI网络、以太网上ATA(ATAoverEthernet,AoE)网络、HyperSCSI网络、Gen‑Z结构、专用管理网络、局域网(localareanetwork,LAN)、广域网(wideareanetwork,WAN)、全球网络(例如,因特网)、无线网络或其任何组合。[0051] TPM188是计算机平台100的安全部件的示例,所述TPM具有可以用于存储计算机平台100的安全信息(例如,安全启动变量、用于验证完整性测量结果的散列值、密钥等等)的安全存储器。可以使用的TPM的示例可从如英飞凌科技(InfineonTechnologies)、新唐科技(Nuvoton)和意法半导体(STMicroelectronics)等供应商处商购获得。根据进一步的示例实施方式,计算机平台100可以包含除TPM之外的安全部件。此外,根据进一步实施方式,TPM可以是虚拟TPM(virtualTPM,vTPM)。由此,根据特定实施方式,TPM可以在固件、软件或硬件中实施。根据进一步实施方式,计算机平台100可以不包括TPM。[0052] 根据示例实施方式,基板管理控制器170可以是安装到平台100的母板的嵌入式系统。根据特定实施方式,基板管理控制器170可以包含一个或多个半导体封装(或“芯片”)以及一个或多个半导体管芯。根据进一步实施方式,基板管理控制器170可以是连接到在母板上布置的连接器槽的扩展卡。根据进一步实施方式,基板管理控制器170可以不包含安装到母板或位于扩展卡上的(多个)半导体封装。无论其特定形式或实施方式如何,基板管理控制器170通常可以包括一个或多个通用嵌入式处理核154(例如,CPU处理核),所述通用嵌入式处理核可以执行用于向基板管理控制器170提供警报监测器172的机器可执行指令。通常,如本文中进一步描述的,警报监测器172可以执行与本文中描述的进程监测相关的各种功能,如监听心跳230(图2);认证与心跳230的心跳指示或ping相对应的消息;响应检测到心跳230的中断;响应于未能检测到心跳230而采取纠正或补救动作;从进程监测器106接收警报240;响应于警报240而采取纠正或补救动作;将警报250发送到远程管理服务器194;从进程监测器106接收报告消息244;将报告消息260发送到远程管理服务器194;等等。[0053] 如本文所使用的,“基板管理控制器”是专用服务处理器,所述专用服务处理器使用传感器监测服务器或其他硬件的物理状态,并通过管理网络与管理系统通信。基板管理控制器170可以通过以下各项与在操作系统级别执行的应用程序进行通信:输入/输出控制器(IOCTL)接口驱动程序、代表性状态转移(representationalstatetransfer,REST)应用程序接口(API)、或促进基板管理控制器170与应用程序之间的通信的某种其他系统软件代理。基板管理控制器170可以对位于包括系统存储器的服务器机箱中的硬件设备进行硬件级别访问。基板管理控制器170可以能够直接修改硬件设备。基板管理控制器170可以独立于计算机平台100的操作系统来操作。基板管理控制器170可以位于服务器或要被监测的其他设备的母板或主电路板上。基板管理控制器安装在被管理的服务器/硬件的母板上或以其他方式连接或附接到被管理的服务器/硬件的事实并不妨碍基板管理控制器被认为与服务器/硬件是“分离”的。如本文所使用的,基板管理控制器具有对计算设备的子系统的管理能力,并且与执行计算设备的操作系统的处理资源分离。由此,基板管理控制器170与针对计算机平台100执行高级别操作系统的(多个)处理器110分离。[0054] 根据示例实施方式,基板管理控制器170可以具有管理平面和单独的安全平面。基板管理控制器170可以通过其管理平面为计算机平台100提供各种管理服务。除了本文中描述的与对进程108和操作系统内核104的完整性进行监测有关的动作之外,基板管理控制器170可以提供各种其他管理服务,如监测传感器(例如,温度传感器、冷却风扇速度传感器);监测操作系统状态;监测电力状态;记录计算机平台100的事件;为计算机平台100提供被远程控制的管理功能;等等。根据示例实施方式,基板管理控制器170通过其安全平面为计算机平台100提供安全功能或服务,如密钥管理(例如,与存储和加载密码密钥相关的功能)、固件镜像验证、平台密码身份检索、测量结果散列加载、测量结果散列检索等等。[0055] 如本文中进一步描述的,根据一些实施方式,基板管理控制器170可以存储种子或密钥作为所述基板管理控制器的安全平面的一部分,基板管理控制器170可以使用所述种子或密钥来认证与心跳230的ping相对应的消息(图2)。对心跳消息进行认证是用于防止强大对手欺骗心跳消息的安全措施。同样如本文中进一步描述的,作为计算机平台100的启动或上电的一部分,基板管理控制器170可以将种子或密钥传送到进程监测器106;并且进程监测器106可以使用种子或密钥来生成与心跳230的ping相对应的消息。[0056] 根据示例实施方式,基板管理控制器170的安全平面由控制器170的安全包围区(secureenclave)形成,所述安全包围区可以包括安全处理器173(例如,CPU处理核);非易失性存储器156(例如,用于存储密码密钥、密码身份、种子等的存储器);易失性存储器155(例如,用于存储被加载到易失性存储器155中并由安全处理器173执行的固件的存储器);安全桥(未示出),所述安全桥用于控制到安全包围区中的访问并控制从安全包围区传出的通信;密码相关外围设备(未示出),如密码加速器、随机数生成器、篡改检测电路等等;以及硬件或“硅”信任根(RootofTrust,RoT)引擎,本文中被称为“SRoT引擎174”。根据示例实施方式,在SRoT引擎174将要由安全处理器173执行的固件加载到安全包围区的易失性存储器155中并允许安全处理器173执行所述固件之前,SRoT引擎174会对所述固件进行验证。[0057] 如以上提到的,基板管理控制器170包括通用处理核154。(多个)处理核154执行来自非易失性存储器164的固件指令以针对控制器170提供各种管理服务作为控制器的管理平面的一部分。作为管理服务的一部分,(多个)通用处理核154可以执行用于提供警报监测器172的固件指令。[0058] 根据示例实施方式,基板管理控制器170可以验证固件176,所述固件可以例如与由计算机平台100出于为平台100提供各种不同功能的目的而执行的机器可执行指令和数据相对应。例如,固件176可以包含启动代码镜像,所述启动代码镜像由指定启动处理器110执行以启动计算机平台100;与管理堆栈相对应的机器可执行指令,所述管理堆栈由基板管理控制器170执行以针对计算机平台100提供多种不同管理服务;由安全处理器173执行以针对计算机平台100提供各种安全服务的计算机可执行指令;等等。根据示例实施方式,固件176可以存储在非易失性存储器184中;并且基板管理控制器170可以经由总线183(例如,串行外围接口(serialperipheralinterface,SPI)总线)与非易失性存储器184通信。根据进一步的示例实施方式,基板管理控制器170可以不验证固件176,并且验证可以通过例如在基板管理控制器170与非易失性存储器184之间布置的单独的安全半导体封装来提供。[0059] 对于其中基板管理控制器170验证固件176的示例实施方式,通常,响应于计算机平台100的上电复位,基板管理控制器170将控制器170的(多个)通用处理核154保持在复位。在执行初始信任根安全检查以及其他检查(例如,硬件故障检查)之后,基板管理控制器170使(多个)通用处理核154从复位释放。[0060] 根据示例实施方式,基板管理控制器170存储由SRoT引擎174使用以对机器可执行指令进行验证的不可变指纹。更具体地,根据示例实施方式,响应于上电复位,SRoT引擎174对固件176的初始部分(最初存储在非易失性存储器184中)进行验证并且然后将所述初始部分加载到存储器155中,使得该固件部分现在是可信的。允许安全处理器173启动并执行所加载的固件指令。通过执行固件指令,安全处理器173然后可以验证固件176的与基板管理控制器的管理固件堆栈的一部分相对应的另一部分;并且在该验证之后,安全处理器173然后可以在存储器155被锁定以防止进一步修改之前将固件176的该部分加载到存储器155中。根据示例实施方式,安全处理器173还可以验证固件176的与启动镜像相对应的另一部分;并且在验证之后,启动镜像可以被加载到系统存储器114中,使得启动处理器110可以执行所述镜像的指令来启动计算机平台100。根据特定实施方式,计算机平台100的启动可以是安全启动(例如,统一可扩展固件接口(UnifiedExtensibleFirmwareInterface,UEFI)安全启动)或非安全启动。所述启动以操作系统启动加载程序代码134的加载和计算机平台100的控制转移到操作系统而结束。[0061] 返回参考图2,根据示例实施方式,进程监测器106对内核空间数据结构119的扫描检测运行时共享库对象的代码注入。该共享库对象的代码注入可以是使用动态加载功能以加载恶意共享库对象以及加载时间共享库代码注入的结果,其中,对手使用环境变量(例如,环境变量LD_PRELOAD)和系统文件(例如,“/etc/ld.so.preload”)来加载恶意共享对象。通常,进程监测器106的内存扫描还可以检测手术进程代码注入,其中,对手将代码注入到进程108中而不干扰与发送心跳210有关的进程内存部分。[0062] 根据示例实施方式,进程监测器106遍历与被监测的进程108相对应的内核空间数据结构119以搜索可疑共享库对象。作为示例,共享库对象可以是内存分配的共享库对象;被删除的共享库对象;传统操作系统目录之外的共享库对象;具有内存文件目录的共享对象;等等。在该上下文中,“可疑”共享库对象是指具有关联文件路径的共享库对象,所述共享库对象结合所述共享库对象的类型或类别与附属于恶意软件的对象一致。[0063] 更具体地,结合图2参考图3,根据示例实施方式,进程监测器106可以执行技术300以针对特定被监测的用户空间进程108扫描(多个)内核空间数据结构119以得到可疑共享库对象。根据框304,进程监测器106遍历(多个)数据结构119,从而基于共享库对象的文件路径来识别候选可疑共享库对象。例如,共享库对象可以位于临时目录中、位于用户主目录中等等。根据框308,进程监测器106可以将被识别的可疑候选共享库对象添加到候选列表。[0064] 如图3的框312到框324中描绘的,进程监测器106然后可以开始迭代进程以评估每个候选可疑共享库对象。作为该迭代过程的一部分,进程监测器106根据判定框312确定候选可疑共享库对象是否在参考列表文件中。根据示例实施方式,参考列表文件包含经批准的共享库对象及其对应的完整文件路径。根据特定实施方式,参考列表文件可以填充有由专家提供的信息、由作为进程监测的一部分而收集的信息提供的参考等等。此外,由于关于恶意软件代理及其对应行为的信息随着时间的推移而被学习,可以适当地移除和添加参考列表文件中的条目。根据一些实施方式,一个或多个应用程序111(图1)可以在单独的安全计算机系统上运行;可以在所述单独的安全计算机系统上观察共享库对象和对应的文件路径;并且然后可以用观察到的共享库对象和对应的文件路径来填充参考列表文件,以供在另一个计算机平台(如计算机平台100)上使用。根据判定框316,如果进程监测器106确定参考列表文件中对应的共享库对象与候选可疑共享库对象具有相同的完整文件路径,则根据框320,进程监测器106从候选列表中移除所述候选可疑共享库对象。如果候选列表中有更多候选可疑共享库对象要评估,则根据判定框324,控制返回到判定框312以执行另一次迭代。[0065] 在已经评估了候选可疑共享库对象之后,然后,根据判定框328,进程监测器106确定在候选列表中是否还有任何候选可疑共享库对象。如果是,则根据框332,进程监测器向基板管理控制器170发送警报消息(即,警报240)。根据示例实施方式,警报消息可以例如识别对应的被监测的用户空间进程108、所讨论的共享库对象、这些共享库对象的文件路径、与进行发现的时间相对应的时间戳等等。[0066] 根据示例实施方式,进程监测器106可以出于识别任何COW可执行页面的目的而扫描内核空间数据结构119。通常,共享库对象的可执行页面是不可变的,即,具有只读状态并且由操作系统内核104跨所有进程共享。因此,根据示例实施方式,COW可执行页面用于识别与恶意软件一致的行为,因为未篡改的进程不应当具有包含COW可执行页面(即,具有私有改变的页面)的共享库对象。使用ptrace和其他工具注入代码会触发COW,因为操作系统内核104确保改变对映射相同共享库对象文件的其他进程不可见,并且不会写回到底层文件。由此,进程监测器106使用的方法在不使用测量结果的情况下检测代码注入,并且不依赖于用户空间内存页面的实际内容,所述实际内容可能是例如加密的。[0067] 出于防止恶意软件变得持久的目的,操作系统可以将文件支持的本机二进制文件的所有可执行页面映射为“私有”并且只读的。此处,“私有”意指更新对于映射同一文件的其他进程不可见,并且不会写回到底层文件。这意味着将代码注入到文件支持的二进制文件的可执行页面中会有效地触发COW。因此,根据示例实施方式,进程监测器106进行的内存扫描检测以不同于经由共享库对象的方式注入的代码。[0068] 结合图2参考图4,根据示例实施方式,进程监测器106可以执行技术400以出于识别(多个)COW可执行页面并且响应于所述识别而生成警报的目的,针对关联的用户空间被监测的进程108来扫描(多个)内核数据结构119。更具体地,根据技术400,进程监测器106可以遍历(框404)数据结构119,从而搜索COW可执行页面。例如,对于其中数据结构119是VMA的Linux操作系统,如果被监测的用户空间进程108的VMA具有页面的以下标志,则进程监测器106可以识别COW可执行页面:R标志被设置为等于“1”,表示该页面是只读的;D标志被设置为等于“1”,表示该页面是脏的;以及E标志被设置为等于“1”,表示该页面是可执行的。根据判定框408,如果发现任何COW可执行页面,则进程监测器106根据框412向基板管理控制器170发送警报消息(即,警报240)。根据示例实施方式,该消息可以包含进程108的标识符、被识别的(多个)COW可执行页面的信息、与发现时间相对应的时间戳等等。[0069] 图7描绘了示例技术700,所述技术可以例如出于进程监测器106检查特定被监测的用户进程108的心跳210的超时是否已经发生的目的而周期性地被触发。由此,根据判定框704,进程监测器106确定是否发生心跳超时;并且如果是,则根据框708,进程监测器106向基板管理控制器170发送警报消息。作为示例,警报240可以对应于消息,作为示例,所述消息可以包含标识发生心跳超时的特定被监测的用户空间进程108的信息、表示检测到所述超时的时间的时间戳等等。应当注意,如本文中描述的,对于给定的进程108,技术700可以是可选的。[0070] 如上文提到的,强大的对手可能会欺骗或模仿由进程监测器106提供的心跳230。因此,根据示例实施方式,采用措施以允许基板管理控制器170认证看起来是“心跳消息”的消息,即,与心跳230的心跳指示或ping相对应的消息。根据特定实施方式,可以使用多种类型的认证方案中的一种。[0071] 例如,根据一些实施方式,进程监测器106可以通过生成消息来生成心跳230,所述消息包括表示所述消息是“心跳消息”的消息头并且还包括可以用于将所述消息认证为实际上是心跳消息的计数值。计数值可以由例如按预定增量值递增的单调递增计数器生成。基板管理控制器170还可以包括按相同的预定增量值递增的单调递增的计数器。进程监测器106和基板管理控制器170可以同步由其计数器存储的初始计数值,使得两个计数器以锁定步骤进行操作。以这种方式,为了向基板管理控制器170发送给定的心跳消息,进程监测器106可以例如按预定的增量值递增其计数器以得到计数值,并且然后将所述计数值包括在心跳消息中。心跳消息例如还可以包括表示所述消息是心跳消息的头信息。基板管理控制器170然后可以(经由图1的警报监测器172)接收心跳消息并且按预定义的增量值递增基板管理控制器170的计数器以得到计数值。基板管理控制器170然后可以通过将该计数值与接收到的消息的计数值进行比较来认证所述消息。[0072] 为了更高的安全程度,根据进一步实施方式,进程监测器106和基板管理控制器170可以包括伪随机生成器,所述伪随机生成器基于相同的多项式函数各自生成输出。如本文中进一步描述的,伪随机生成器的初始种子可以在计算机平台100启动时作为输入提供给两个伪随机生成器。有了种子,对于第一心跳消息,两个多项式生成器的对应输出是相同的。因此,基板管理控制器170然后可以(经由图1的警报监测器172)接收第一心跳消息并且将嵌入在所述消息中的数字与其伪随机生成器的输出进行比较以认证所述消息。伪随机生成器的下一个输出可以通过例如应用当前输出作为输入来生成。不管伪随机生成器的输入是如何生成的,通常,两个伪随机生成器都以锁定步骤操作,使得伪随机生成器的输出可以用于发送和认证心跳消息。[0073] 根据进一步实施方式,心跳消息的更高级别的安全程度可以涉及使用消息认证代码(messageauthenticationcode,MAC)。通常,MAC是可以插入到消息中的标签,并且是基于消息的内容和密钥生成的。如本文中进一步描述的,可以在计算机平台100启动时将密钥提供给进程监测器106和基板管理控制器170两者,使得基板管理控制器170可以使用假定的心跳消息的MAC来认证所述消息。[0074] 图5描绘了示例启动技术500,图示了心跳消息的种子或密钥可以如何作为计算机平台100的启动的一部分被分发到进程监测器106。对于该示例,基板管理控制器170已经具有心跳种子或密钥,因为基板管理控制器170在其存储器中存储心跳种子或密钥(例如,将表示种子或密钥的数据存储在基板管理控制器170的非易失性存储器156中)。[0075] 结合图1参考图5,作为该启动技术500的一部分,基板管理控制器170可以在系统管理基本输入/输出操作系统(SMBIOS)表中存储(框508)心跳密钥或心跳种子。通常,在内核104被加载和初始化之后,SMBIOS表可由操作系统内核104读取。技术500包括加载(框512)操作系统启动加载程序代码134;并且因此,操作系统启动加载程序根据框516加载操作系统。如在框520处描绘的,作为操作系统初始化的一部分,进程监测器106从SMBIOS表中读取(框520)心跳密钥或心跳种子并且擦除所述密钥/种子。然后操作系统控制计算机平台100,如在框524处描绘的。[0076] 根据示例实施方式,当心跳密钥用于认证心跳消息时,作为操作系统初始化的一部分,操作系统内核104可以将心跳密钥读入到内核密钥环中。此外,根据进一步实施方式,操作系统启动加载程序可以将心跳密钥间接加载到内核密钥环中。[0077] 根据进一步实施方式,心跳种子或心跳密钥可以在启动时间作为内核参数注入到进程监测器106中。此外,对于这些实施方式,可以使用基板管理控制器170的用于添加种子/密钥的API将心跳种子或心跳密钥提供给基板管理控制器170。[0078] 结合图1参考图6,根据一些实施方式,进程监测器106可以出于发送与心跳210相对应的消息(即,用于发送心跳210的ping)的目的而使用技术600。根据框604,进程监测器106构建与心跳210相对应的消息,包括基于心跳密钥为所述消息生成MAC。然后,根据框608,进程监测器106通过基板管理控制器170发送所述消息。应当注意,根据示例实施方式,技术600可以根据周期性时间表由中断触发。根据一些实施方式,进程监测器106可以通过PCIe链路将消息传送到基板管理控制器170。[0079] 图8总体上描绘了可以由基板管理控制器170的警报监测器172(图1)用于处理具有指示所述消息是心跳消息的头部的消息的技术800。结合图1参考图8,根据技术800,基板管理控制器170根据判定框804确定消息头是否指示候选心跳消息来自进程监测器106,并且如果否,则基板管理控制器170根据框810处理非心跳消息。否则,如果消息头表示所述消息是心跳消息,则基板管理控制器170根据判定框814确定所述消息是否已经被认证,并且如果否,则根据框818报告所述消息。作为示例,基板管理控制器170可以基于在消息中包含的MAC和密码密钥来确定候选心跳消息是否被认证。如果所述消息被认证,则基板管理控制器170记录(框822)心跳230,即,基板管理控制器170记录与认证的心跳消息相对应的心跳ping。[0080] 图9描绘了可以由基板管理控制器170的警报监测器172(图1)用于周期性地检查(或根据另一个时间表检查)是否存在心跳230超时的技术900。结合图1参考图9,根据技术900,基板管理控制器170确定(判定框910)是否存在心跳230超时或来自进程监测器106的警报消息。如果是,则根据框914,基板管理控制器170向远程管理服务器194发送警报并且可能地执行一个或多个附加补救动作,例如发起(框918)计算机平台100的上电复位。根据进一步的示例实施方式,基板管理控制器170可以采取其他和/或不同的补救动作,例如,锁定计算机平台100的后续启动,直到由适当凭证授权等等。[0081] 设想了在所附权利要求的范围内的其他变化。例如,根据进一步实施方式,进程监测器106可以将心跳230(图2)和任何警报240发送到除基板管理控制器之外的硬件控制器,如不为计算机平台100提供管理服务的图形处理单元(GPU)、网络处理器或微控制器。根据进一步实施方式,心跳230的密钥或种子可以存储在除基板管理控制器170的存储器之外的安全存储器中。例如,密钥或种子可以存储在TPM188(图1)的存储器中。根据进一步实施方式,基板管理控制器170可以不包含硬件信任根并且可以不验证固件176。根据进一步实施方式,由进程监测器106进行的内核空间内存扫描可以扫描除了与共享库对象和COW可执行页面有关的信息之外的信息。[0082] 此外,根据进一步实施方式,由进程监测器106进行的内核空间内存扫描可以不涉及对可疑共享库对象的扫描并且可以不涉及对COW可执行页面的扫描;并且根据示例实施方式,可以选择扫描的各方面作为用于扫描的进程的注册的一部分。[0083] 尽管本文中对Linux操作系统进行了示例参考,但是根据进一步实施方式,计算机平台100可以具有除了Linux操作系统之外的操作系统(例如,WindowsNT操作系统),并且对于这些实施方式,计算机平台100可以具有与进程监测器106相对应的适当的操作系统扩展。[0084] 根据示例实施方式,除了与安全相关进程相关的进程之外的用户空间进程可以被监测,并且因此可以是由进程监测器106监测的被监测的用户空间进程108。例如,被监测的用户空间进程108可以包括与容器实例化、容器配置等相关的进程。根据一些实施方式,基板管理控制器170可以获得用于计算机平台100的策略;并且基板管理控制器170的监测接口可以允许远程观察监测的用户空间进程108的身份,由此允许监测的用户空间进程108的列表随时间更新并且允许客户验证特定进程正在被监测。此外,根据一些实施方式,基板管理控制器170可以提供可以使用例如web图形用户界面(GUI)、RedfishAPI、简单网络管理协议(SimpleNetworkManagementProtocol,SNMP)等来检查的监测警报和报告接口。[0085] 参考图10,根据示例实施方式,技术1000包括计算机系统的操作系统代理对进程进行监测(框1004)以检测所述进程的完整性是否已经受到损害。所述监测包括所述操作系统代理扫描数据结构。所述进程在用户空间中执行,并且所述数据结构是操作系统内核空间的一部分。技术1000包括所述计算机系统的硬件控制器监听(框1008)由所述操作系统代理生成的心跳。此外,技术1000包括所述硬件控制器响应于以下各项中的至少一项而采取(框1012)纠正动作:所述硬件控制器检测到所述心跳的中断、或所述操作系统代理向所述硬件控制器传送所述进程的安全警报。[0086] 参考图11,非暂态存储介质1100存储机器可读指令1104,所述机器可读指令在由机器执行时使所述机器扫描与进程相关联的内核内存空间,以检测与所述进程被安全攻击损害相对应的内存状态。指令1104在由机器执行时进一步使所述机器将第一心跳发送到硬件控制器;并且响应于检测到所述内存状态而向所述硬件控制器传送警报以使所述硬件控制器采取纠正动作。[0087] 参考图12,计算机平台1200包括基板管理控制器1204;硬件处理器1208;以及存储指令1216的存储器1212。基板管理控制器1204用于监测由可加载操作系统内核扩展提供的第一心跳;并且响应于检测到所述第一心跳的中断或从所述操作系统内核模块传送安全警报而发起用于解决所述安全警报的动作。指令1216在由硬件处理器1208执行时,使硬件处理器1208监听由进程生成的第二心跳;扫描与所述进程相关联的内核内存空间,以检测与所述进程的完整性被损害相对应的内存状态;以及将所述第一心跳发送到基板管理控制器1204。指令1216在由硬件处理器1208执行时,使硬件处理器1208响应于未能检测到所述第二心跳或者检测到所述内存状态中的至少一项而将所述安全警报传送到基板管理控制器1204。[0088] 根据示例实施方式,应用程序向操作系统代理注册进程,并且所述操作系统代理响应于所述注册而开始监测所述进程。特别的优点是应用程序可以选择要监测的进程。[0089] 根据示例实施方式,注册包括应用程序启用操作系统代理对进程的心跳监测。特别的优点是没有心跳监测的内存扫描可以用于不支持提供心跳的传统应用程序。[0090] 根据示例实施方式,硬件控制器采取纠正动作包括以下各项中的至少一项:硬件控制器发起计算机系统的重启、或硬件控制器向管理服务器传送安全警报。特别的优点是可以响应于检测到的恶意软件活动而实时或接近于实时地采取补救动作。[0091] 根据示例实施方式,硬件控制器通过以下操作来监听心跳:从操作系统代理接收消息以及基于与所述心跳相关联的预定种子或密钥来确定所述消息是否表示所述心跳。特别的优点是可以防止对手欺骗心跳。[0092] 根据示例实施方式,在计算机系统的预操作系统环境中,硬件控制器将预定种子或密钥存储在系统管理基本输入输出系统(SMBIOS)表中;操作系统代理从所述SMBIOS表中读取所述预定种子或密钥;并且从所述SMBIOS表中擦除所述预定种子或密钥。特别的优点是提供了一定程度的安全以将预定密钥或种子传送给操作系统代理。[0093] 根据示例实施方式,响应于计算机系统的操作系统的初始化,将取得的种子或密钥注入到所述操作系统的密钥环中。特别的优点是使用更高的安全程度来保护种子或密钥不被对手访问。[0094] 根据示例实施方式,应用程序可以将预定密钥或种子作为内核参数传送到操作系统代理;并且可以使用应用程序编程接口(API)将预定种子或密钥传送到硬件控制器。特别的优点是启动固件不会被修改以提供种子或密钥。[0095] 根据示例实施方式,响应于具有心跳监测选项的进程的注册,监测由所述进程生成的心跳。为了检测该心跳,向硬件控制器传送警报以使硬件控制器采取纠正动作。特别的优点是心跳提供了另一种方式来监测进程的完整性是否已经受到损害。[0096] 尽管已经关于有限数量的实施方式描述了本公开,但受益于本公开的本领域技术人员将了解本公开的许多修改和变化。所附权利要求旨在覆盖所有这样的修改和变化。

专利地区:美国

专利申请日期:2021-10-26

专利公开日期:2024-07-26

专利公告号:CN114625600B


以上信息来自国家知识产权局,如信息有误请联系我方更正!
电话咨询
读内容
搜本页
回顶部