CN113806745B - 验证检查的方法、计算系统及机器可读存储介质 - Google Patents

验证检查的方法、计算系统及机器可读存储介质 Download PDF

Info

Publication number
CN113806745B
CN113806745B CN202110429922.4A CN202110429922A CN113806745B CN 113806745 B CN113806745 B CN 113806745B CN 202110429922 A CN202110429922 A CN 202110429922A CN 113806745 B CN113806745 B CN 113806745B
Authority
CN
China
Prior art keywords
host processor
page table
notification
computing system
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110429922.4A
Other languages
English (en)
Other versions
CN113806745A (zh
Inventor
G·恩杜
N·爱德华兹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN113806745A publication Critical patent/CN113806745A/zh
Application granted granted Critical
Publication of CN113806745B publication Critical patent/CN113806745B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Storage Device Security (AREA)

Abstract

本公开涉及响应于页表基址寄存器的变化而执行验证检查。本文所公开的示例涉及响应于接收到通知来执行验证检查。一种计算系统包括主机处理器、耦接至主机处理器的存储器以及与主机处理器分离的能够访问存储器的设备。主机处理器具有页表基址寄存器。主机处理器被配置用于在页表基址寄存器发生变化时向设备发送通知。设备响应于接收到通知而执行验证检查。

Description

验证检查的方法、计算系统及机器可读存储介质
技术领域
本公开总体上涉及响应于页表基址寄存器的变化而执行验证检查。
背景技术
计算设备和系统可以利用运行时完整性软件(runtime integrity software)来检测恶意程序。运行时完整性软件可以在与被监测的部件相同的空间中执行,因此可能会使运行时完整性软件暴露于恶意程序所造成的相同风险中。
发明内容
根据本公开的一方面,提供了一种计算系统,包括:至少一个主机处理器;存储器,所述存储器耦接至所述至少一个主机处理器;以及设备,所述设备与所述至少一个主机处理器分离、能够访问所述存储器,其中,所述至少一个主机处理器包括页表基址寄存器,其中,所述至少一个主机处理器用于:执行固件以响应于所述页表基址寄存器的内容发生变化而向所述设备提供所述内容已经发生变化的通知,其中,所述设备用于响应于接收到所述通知而执行验证检查;并且其中所述验证检查包括:在每次进程上下文切换时,对当前进程的页表映射执行验证检查;以及在多次进程上下文切换之后,对所述至少一个主机处理器的上下文执行验证检查。
根据本公开的另一方面,提供了一种验证检查的方法,所述方法包括:由至少一个主机处理器执行固件以配置所述至少一个主机处理器,以响应于页表基址寄存器的内容发生变化而向设备提供所述内容已经发生变化的通知,其中,所述至少一个主机处理器包括所述页表基址寄存器,其中,所述至少一个主机处理器耦接至存储器,其中,所述设备与所述至少一个主机处理器分离并且能够访问所述存储器;由所述设备响应于接收到所述通知而执行验证检查,其中所述验证检查包括:在每次进程上下文切换时,对当前进程的页表映射执行验证检查;以及在多次进程上下文切换之后,对所述至少一个主机处理器的上下文执行验证检查。
根据本公开的另一方面,提供了一种存储有指令的非暂态机器可读存储介质,所述指令在由管理控制器的物理处理元件执行时使得所述管理控制器:响应于接收到来自计算系统的至少一个主机处理器的通知而执行验证检查,其中,所述计算系统包括所述至少一个主机处理器、耦接至所述至少一个主机处理器的存储器、以及所述管理控制器,所述管理控制器同样耦接至所述存储器,其中,所述管理控制器与所述至少一个主机处理器分离,其中,所述至少一个主机处理器包括页表基址寄存器,其中,所述至少一个主机处理器被配置用于在引导时间响应于所述页表基址寄存器的内容的变化而向所述管理控制器提供所述通知;作为所述验证检查的一部分,响应于接收到所述通知而向所述至少一个主机处理器发送管理中断,响应于所述管理中断,接收所述至少一个主机处理器的多个寄存器内容;并且响应于所述寄存器内容之一指示用户空间保护已经被禁用,执行安全措施,其中所述验证检查包括:在每次进程上下文切换时,对当前进程的页表映射执行验证检查;以及在多次进程上下文切换之后,对所述至少一个主机处理器的上下文执行验证检查。
附图说明
以下具体实施方式参考附图,其中:
图1是根据示例的能够响应于页表基址寄存器的内容已经发生变化的通知而执行验证检查的计算系统的框图;
图2是根据示例的能够响应于页表基址寄存器的内容已经发生变化的通知而执行验证检查的计算系统的框图;
图3是根据示例的响应于页表基址寄存器的内容发生变化的通知而执行验证检查的设备的框图;
图4是根据示例的能够执行验证检查的基板管理控制器的框图;
图5是根据示例的用于响应于页表基址寄存器的内容发生变化的通知而执行验证检查的方法的流程图;以及
图6是根据示例的用于执行验证检查的方法的流程图。
在所有附图中,相同的附图标记可以表示相似但不一定相同的元件。附加在一些附图标记上的索引号“N”可以理解为仅指示复数个,并且对于具有这样的索引号“N”的每个附图标记而言可能不一定表示相同的数量。另外,本文中在附图标记在其他地方与索引号一起提及的情况下,这种附图标记在没有索引号的情况下的使用可以集体地或单个地概括指代对应的复数个元件。在另一示例中,可以使用索引号“I”、“M”等来代替索引号N。
在所有附图中,相同的附图标记表示相似但不一定相同的元件。附图不一定成比例,并且可以放大一些部件的尺寸以更清楚地图示所示出的示例。此外,附图提供了与描述一致的示例和/或实施方式;然而,描述不限于附图中提供的示例和/或实施方式。
具体实施方式
在本公开内容中,除非上下文另外明确指示,否则使用术语“一个(a)”、“一种(an)”或“所述(the)”旨在同样包括复数形式。同样地,当在本公开内容中使用时,术语“包括(includes)”、“包括(including)”、“包含(comprises)”、“包含(comprising)”、“具有(have)”或“具有(having)”指明存在所述元件,但不排除存在或添加其他元件。在以下具体实施方式中,对附图进行了参考,该附图形成具体实施方式的一部分,并且在附图中通过说明的方式描绘了可以实践本公开的具体示例。应当理解的是,在不脱离本公开的范围的情况下,可以利用其他示例并且可以作出结构或逻辑变化。
计算设备可以利用运行时完整性软件来检测恶意程序。运行时完整性软件可以在与被监测的部件相同的空间中执行,因此可能会使运行时完整性软件暴露于恶意程序所造成的相同风险中。
广泛的网络安全攻击涉及攻击者植入代码或更改只读数据。可以检测到这些攻击,并采取补救措施,因为一旦内核达到“稳定状态”,生产内核的关键部分就不应发生变化或仅以可预测的方式发生变化。可以使用外部内核监测解决方案来检测这种攻击。
外部内核监测不能监测诸如x86架构中的CR3寄存器和高级RISC机器(ARM)架构中的转换表基址寄存器(TTBR)等页表基址寄存器(PTBR)的变化。如果不能监测这些变化,则可能很难检测到称为地址转换重定向(Address Translation Redirection,ATR)的一类攻击。
ATR攻击通过修改所监测页的虚拟地址的对应物理地址在内核的分页机制中重新定义了内核的虚拟到物理地址映射。因此,攻击者可以将页重新定位到外部监测器视野之外。重新定位攻击基本上将内核的全部或部分移动到另一个位置,以置于所监测的范围之外。如果外部监测器无法查看主机处理器的页表基址寄存器,这些监测器就不能检测到此攻击。由于每个进程都具有其自身的PTBR值,所以很难在不知道PTBR中的值的情况下可靠地跟踪到活跃的分页映射。
因此,本文所公开的各种示例使用实时系统跟踪在外部监测PTBR的变化。实时跟踪取决于处理器的类型而使用不同名称,例如INTEL处理器跟踪(INTEL PT)、ARM CoreSight等。实时跟踪可以被配置用于通过如PCIe等总线提供信息,并且可以支持如MIPI系统跟踪协议(STP)等行业标准协议。
进一步地,在各种示例中,设备还可以连续地监测关键内核代码区域和数据结构。设备可以在检测到篡改时采取补救措施,诸如关闭计算系统、记录问题、发出警报消息等。
图1是根据示例的能够响应于页表基址寄存器的内容已经发生变化的通知而执行验证检查的计算系统的框图。计算系统100可以包括主机处理器(120),主机处理器包括系统管理模式指令122、跟踪集线器(trace hub)124以及一个或多个跟踪集线器配置寄存器126。进一步地,计算系统100可以包括设备160,诸如BMC或其他ASIC、或能够执行所描述的特征的引擎。设备160可以包括跟踪解压缩引擎162、跟踪监测器164、页表监测器166和SMM监测器168。
尽管在计算系统100中示出了单个主机处理器120,但是可以设想系统可以保护多个主机处理器120。进一步地,可以设想主机处理器120可以包括单个核,可以包括多个核等。此外,可以设想可以对处理元件的多个核执行相同的方法。当本文提及主机处理器时,主机处理器可以包括处理元件的一个或多个核以及处理元件的多个核之间的共享功能(例如,跟踪集线器124)。
在本文所描述的示例中,处理器和/或芯片组具有集线器(诸如跟踪集线器124),集线器收集、预处理跟踪结果(traces)并且经由总线或互连结构(例如,PCIe)将其发送给第三方设备160(例如,基板管理控制器(BMC)、验证引擎等)。跟踪集线器配置寄存器126可以用于配置跟踪集线器124。这可以包括例如关于何时(例如,当发生上下文变化时)发送通知、将通知发往何处(例如,设备160在互连上的位置)等的信息。
使用与INTEL处理器和/或芯片组相关联的术语来描述一些示例以简化对本公开的理解,然而,可以设想与其他技术(例如,ARM和其他处理器架构)一起使用的类似特征和技术。因此,解决方案可以同等地应用于其他现代处理器。
在本文所描述的示例中,主机处理器120上的跟踪集线器124被配置用于在页表基址寄存器(x86中的CR3、ARM中的TTBR等)的内容每次发生变化时捕获内容并将其发送给设备160(例如,BMC、专用集成电路(ASIC)等)以进行验证。设备160用于响应于接收到内容而执行验证检查。如本文进一步描述的,验证检查可以包括,例如,检查是否存在用户空间保护已经被禁用的指示、内核空间映射是否包括既可写入又可执行的内存页、进程的内核页表与根内核主页表之间是否存在可执行页的数量的不匹配等。
主机处理器120上的跟踪集线器124可以被配置用于在页表基址寄存器(x86中的CR3、ARM中的TTBR等)的内容每次发生变化时捕获内容并将其发送给设备160。跟踪结果经常被压缩以减少带宽。因此,可以使用跟踪解压缩引擎162来解压缩来自主机处理器120的跟踪结果。一旦解压缩了跟踪结果,就将该跟踪结果传递到跟踪监测器164。跟踪监测器164负责激活页表监测器166和SMM监测器168。SMM代表系统管理模式。页表监测器166可以对当前进程的页表映射执行验证检查。进一步地,SMM监测器168可以对主机处理器的上下文执行验证检查。这可以基于在引导时间由系统固件配置的指令。
使用这些方法,每当存在进程上下文切换时可以通知设备160上的跟踪监测器164。然后,进程上下文切换将触发使用SMM监测器168和页表监测器166来触发验证检查。跟踪监测器164可以采用多个策略来激活监测器以执行验证检查。
一个示例策略可以包括每当存在进程上下文切换时触发检查。另一个示例策略可以包括在创建“新”进程时触发检查。这减少了验证开销。另一个示例策略可以包括在每次进程上下文切换时都触发破坏性较小的页表监测器166以及周期性地(例如,每隔n次切换)触发SMM监测器168。在该示例中,“n”可以是固定的或随机的。进一步地,可以使用另一个机制来确定触发SMM监测器168的频率。
在典型的内核上,无论进程如何,内核的关键部分都必须指向相同的物理存储器。在一个示例中,页表监测器166检查每个进程的页映射,以确保检测到违反该安全不变式和发出警报。
在另一示例中,页表监测器166将内核的关键部分(诸如内核文本(代码)、内核只读存储器、可加载的内核模块(LKM)文本、LKM只读存储器等)的映射与黄金引用(goldenreference)进行比较。黄金引用可以通过在OS引导过程中的早期在主OS中运行驱动器来获得。
进一步地,在其他示例中,页表监测器166可以执行其他简单验证。在一个示例中,验证可以包括检查内核空间映射没有违反WxorX(操作系统通常不允许既可写入又可执行的内存页)。在另一示例中,验证可以包括寻找恶意页表权限,例如,在窗口中被标记为用户空间的系统区域(第4级页映射)PML4表项。在另一示例中,验证可以包括验证内核进程没有用户空间映射。另一示例可以包括确认进程的内核页表与根内核主页表之间没有不匹配,例如,没有可执行页的数量的不同。
在一个示例中,系统固件可以用于部署SMM(系统管理模式)代码模块。代码模块可以用于配置主机处理器120以响应于来自设备的请求而提供寄存器内容。在一个示例中,代码模块可以用于在触发系统管理中断(SMI)时复制主机处理器的上下文(例如,处理器的当前状态)并将其发送给设备160。使用该方法,设备160可以检查安全关键寄存器,诸如:控制寄存器(CR2、CR3、CR4和CR8)、存储器管理寄存器(CS、DS、ES、FS、GS和SS)以及模型特定寄存器(SYSENTER_CS_MSRSYSENTER_EIP_MSR和SYSENTER-ESP_MSR)。
如本文所使用的,验证检查验证计算系统的状态是否符合策略或某些标准。设备160可以对处理器的上下文执行检查并且如果寄存器的值不在预期的区域内(例如,在预期或期望的参数或值之外),则发出警报。例如,如果CR4.SMEP和CR4.SMAP被禁用,则设备验证器可以触发警报。SMEP和SMAP的启用使得恶意程序更难以“诱使”内核使用来自用户空间的指令或数据。因此,禁用SMEP或SMAP表示存在危害。
另一个检查是确保快速系统调用指令所使用的MSR(SYSENTER_CS_MSR、SYSENTER_EIP_MSR和SYSENTER_ESP_MSR)是一致的。即,可以检查MSR以确保它们在每个进程中都是相同的。在该示例中,任何差异都表示存在潜在的危害。
SMM代码模块与设备160之间的通信可以通过总线或如PCIe等标准互连来执行。进一步地,通信可以用消息认证码(MAC)和仅对所述模块和设备160所知的秘密密钥来保护其完整性。
在一些示例中,可以使用缓冲区来执行更深层次的内省(introspection)。系统可以在处理器侧缓冲在SMM期间收集到的处理器上下文信息。然后,设备160可以异步地执行更广泛且耗时的检查。在这种场景下,监测器164、166、168不再需要跟SMI速率或上下文切换速率保持一致。例如,SMM可以用于收集包含指向可执行代码的指针的跳转表,并将其缓冲在系统存储器上。设备160上的验证器可以异步地拉取信息并检查这些指针(作为内核不变式)是否对于每一个进程都是相同的。因此,可以异步地执行(可能耗时的)附加的检查,比如跟随跳转表的代码指针并确保这些指针实际上指向相同的代码。缓冲允许系统继续近乎实时地同步执行较简单的检查,同时可以(例如尽力而为地)异步执行较复杂的检查。
缓冲的上下文信息可以用诸如可信平台模块(TPM)等安全协处理器来保护以免被篡改,或者可以存储在仅可从处理器的SMM模式和设备160访问的特殊存储器包围区(enclave)中。在一些示例中,系统可以将信息缓冲在系统存储器中的预留区域中,通过使用消息认证码(MAC)保护该信息不被OS篡改。在该示例中,用于生成MAC的密钥仅对SMM代码模块和设备160所知。
监测器和引擎162、164、166、168包括硬件和/或硬件与编程的组合以执行本文所提供的功能。此外,这些模块(未示出)可以包括编程功能和/或要由本文所提供的硬件执行的编程功能的组合。在讨论引擎和模块时,应注意,归属于引擎的功能也可以归属于对应的模块,反之亦然。此外,归属于特定模块和/或引擎的功能也可以使用另一模块和/或引擎来实施。如上所述,设备160可以使用ASIC来实施。在一些示例中,设备160可以被实施为BMC。
图2是根据示例的能够响应于页表基址寄存器的内容已经发生变化的通知而执行验证检查的计算系统的框图。计算系统200可以包括内核202,内核202包括测量驱动程序210、内核代码212、内核数据216和模块代码218。进一步地,计算系统200可以包括处理元件229,处理元件229包括具有页表基址寄存器232的主机处理器230。尽管未示出,处理元件可以包括SMM指令、跟踪集线器和跟踪集线器配置寄存器。进一步地,这些能力中的一些能力可以在多个主机处理核之间共享。与主机处理器230分离的设备220可以包括扫描引擎222和策略引擎224。进一步地,固件引擎260可以被实施以配置包括主机处理器230的计算系统200。缓冲区270可以使用存储器来实施以实现异步验证检查。
如本文所使用的,“计算系统”可以是存储阵列、存储设备、存储机箱、服务器、台式计算机或膝上型计算机、计算机集群、节点、分区、或任何其他设备或装备,任何其他设备或装备包括控制器、处理资源、或可以包括与主机处理器230分离的设备220的可以用于如本文所描述的测量存储器234的类似物。在本文所描述的示例中,“处理资源”可以包括例如包括在单个计算设备中或跨多个计算设备分布的一个处理器或多个处理器。如本文所使用的,“处理器”可以是中央处理单元(CPU)、基于半导体的微处理器、图形处理单元(GPU)、用于取得和执行指令的现场可编程门阵列(FPGA)、适用于取得和执行存储于机器可读存储介质上的指令的其他电子电路、或其组合中的至少一者。如本文所使用的,加载并且旨在执行操作系统(例如,内核)的处理器或一组主机处理器230与设备220分离。如上所述,主机处理器230可以被实施为具有多个处理器的芯片的核。这些核中的每一个都具有单独的页表基址寄存器。
如本文所使用的,“机器可读存储介质”可以是用于包含或存储如可执行指令、数据等信息的任何电子、磁性、光学或其他物理存储装置。例如,本文所描述的任何机器可读存储介质可以是随机存取存储器(RAM)、易失性存储器、非易失性存储器、闪速存储器、存储驱动器(例如,硬盘驱动器)、固态驱动器、任何类型的存储盘(例如,压缩盘、DVD等)等中的任何一者或其组合。本文所描述的任何机器可读存储介质可以是非暂态的。在一些示例中,存储器234或存储器234的一部分可以包括RAM,并且可由主机处理器230和设备220两者经由总线或互连进行访问。
如本文所使用的,“设备”220可以是任何微控制器、BMC、电路、CPU、微处理器、GPU、FPGA、机架管理器、机柜级别管理器、服务器、TPM、其他适用于测量存储器中的数据结构的电子电路或其组合。例如,设备220可以是服务器的BMC。在另一示例中,设备220可以架顶式交换机或管理模块。在这些示例中,设备220可以独立于机柜OS内的每个系统进行操作。在这些示例中,设备220可以对每个系统存储器中的每个系统内核空间进行测量。
如本文所使用的,“基板管理控制器”或“BMC”是专用服务处理器,其使用传感器来监测服务器或其他硬件的物理状态,并通过独立的“带外”连接与管理系统进行通信。BMC还可以通过以下各项与在OS级别执行的应用程序进行通信:输入/输出控制器(IOCTL)接口驱动程序、代表性状态转移(REST)应用程序接口(API)、或促进BMC与应用程序之间的通信的某种其他系统软件代理。BMC可以对位于包括系统存储器的服务器机架中的硬件设备进行硬件级别访问。BMC可以能够直接修改硬件设备。BMC可以独立于BMC所在的系统的OS进行操作。BMC可以位于服务器或要监测的其他设备的母板或主电路板上。BMC安装在受管服务器的母板上或以其他方式连接或附接到受管服务器的事实并不妨碍BMC被认为是与之“分离”的。如本文所使用的,BMC具有对计算设备的子系统的管理能力,并且与执行计算设备的OS的处理资源是分离的。BMC与在系统上执行高级OS或管理程序的处理器(诸如中央处理单元)是分离的。
如本文所使用的,“操作系统”或“OS”是可以存储在机器可读存储介质中并由处理资源执行的机器可读指令。OS可以包括管理计算机硬件和软件资源、以及为计算机程序提供公共服务的系统软件。OS可以促进计算设备硬件与应用程序之间的通信。OS可以包括允许用户与计算设备进行交互的用户界面。OS可以包括诸如应用层和内核层等层。高级应用程序(例如,用户可以与之交互的应用程序)可以在OS的应用层执行,而内核层可以包括控制计算设备硬件的机器可读指令。在设置或初始化计算设备期间,可以安装OS。在计算设备引导或启动进程期间,OS被加载到机器可读存储介质中。如上所述,计算设备的处理器或处理资源可以从机器可读存储介质执行OS。
如本文所使用的,“内核”可以是OS的一部分。内核可以是OS的对所有计算机硬件设备提供了最基本级别控制的一部分。内核可以管理存储器访问,分配硬件资源,管理处理资源操作状态以及管理数据。在一个示例中,OS可以包括静态的内核。在其他示例中,OS可以是动态的,但是可以测量已知的静态部分。
内核空间可以是虚拟存储器系统的包括页表和计算设备的地址转换系统的一部分。页表可以将程序的虚拟地址映射到计算设备的计算机存储器(诸如机器可读存储介质或其他存储器设备)中的物理地址。计算设备的处理器可以将计算设备的虚拟存储器分为内核空间和用户空间。例如,可以预留内核空间用于运行内核、内核扩展和设备驱动程序。相比之下,用户空间可以是执行应用程序和服务的存储器区域。
如本文所使用的,“进程”是要由一个或多个线程执行的计算机程序的实例。进程包括程序代码及其活动。进程的一部分可以在内核空间中运行,而进程的另一部分可以在用户空间中运行。如本文所使用的,“用户空间”是正常用户进程在其中运行的一组位置(例如,内核之外的所有空间)。内核的作用是管理在此空间中运行的应用程序,以防止应用程序彼此之间以及与机器不恰当地交互。
如本文所使用的,“密码散列函数”可以是包括机器可读指令的函数。密码散列函数可以包括在由处理器执行时可以接收输入的机器可读指令。然后,密码散列函数可以生成十六进制字符串以匹配输入。例如,输入可以包括数据串(例如,由起始存储器地址和结束存储器地址表示的存储器中的数据结构)。在这样的示例中,密码散列函数基于数据串输出十六进制字符串。进一步地,输入的任何微小变化都可能改变输出的十六进制字符串。在另一示例中,密码散列函数可以是安全散列函数(SHA)、任何联邦信息处理标准(FIPS)批准的散列函数、任何国家标准与技术研究院(NIST)批准的散列函数、或任何其他密码散列函数。在一些示例中,代替十六进制格式,字符串可以使用另一种格式。
如本文所使用的,“可信平台模块”或“TPM”可以是内置于计算系统的母板的集成电路。TPM可以是抗篡改的或防篡改的。TPM可以用于计算系统上的服务。服务可以包括设备识别、认证、加密、测量、确定设备完整性、密码密钥的安全生成、远程证明(attestation)以及封闭式存储。TPM可以包括平台配置寄存器(PCR)。PCR可以存储安全相关指标。机器可读指令(诸如内核)或设备可以用数据来扩展PCR。为了用测量结果来扩展PCR,扩展PCR的机器可读指令或设备可以向TPM发送新值。TPM可以在PCR中取新值和当前值的散列值。TPM可以将结果存储在PCR中。
如本文所使用的,“信任根设备”或RoT设备可以是以预期方式表现的设备,因为可能无法检测到RoT设备的不良行为。换句话说,RoT设备可以是本质上可信的软件、硬件或其某种组合。RoT设备可以包括计算引擎。计算引擎可以是使用RoT设备中的硬件进行操作的软件、RoT设备的硬件、或其某种组合。例如,RoT设备可以包括存储信任根(RTS)。RTS可以是能够维护值的准确汇总的计算引擎。例如,RoT可以是TPM。在这种示例中,TPM可以包括PCR(或多个PCR)。进一步地,RTS可以是PCR(或多个PCR)。在另一示例中,RoT可以包括报告信任根(RTR)。RTR可以是能够向请求设备发送所请求信息的计算引擎。信息可以包括RoT的寄存器中的内容(或RTS的内容)和由请求者指定的信息。RoT可以包括这里未描述的其他计算引擎,如用于测量指定值的计算引擎或用于认证的计算引擎。
如本文所使用的,“缓冲区”可以是当数据从一个位置移动到另一个位置时用于暂时存储数据的存储器区域。缓冲区可以是固定大小或可变大小。缓冲区可以位于系统的机器可读存储介质中。进一步地,缓冲区可以位于系统的存储器中。
如本文所使用的,“代理”可以是应用程序,换句话说,是机器可读指令。代理可以安装在系统或系统的设备上。代理可以在机器可读存储介质中操作。例如,代理可以驻留在BMC的或系统的机器可读存储介质中。代理可以通过代表性状态转移(REST)应用程序接口(API)、IOCTL接口或某种其他的通信方法与其他设备或软件进行通信。例如,代理可以驻留在BMC的机器可读存储介质中并通过IOCTL接口与OS进行通信。
固件引擎260可以使用可由处理器和/或逻辑执行的指令来实施。在一些示例中,固件引擎260可以被实施为平台固件。平台固件可以包括诸如基本输入/输出系统(BIOS)或统一可扩展固件接口(UEFI)等接口,以允许平台固件被接口连接。平台固件可以位于计算系统的处理元件(例如,CPU)在其中进行引导的地址空间处。在一些示例中,平台固件可以负责计算系统200的通电自检。在其他示例中,平台固件可以负责引导过程并且负责将哪种操作系统(如果有的话)加载到计算系统200上。进一步地,平台固件能够初始化计算系统200的各种部件,诸如外围设备、存储器设备、存储器控制器设置、存储控制器设置、总线速率、视频卡信息等。在一些示例中,平台固件还能够在计算系统200执行时执行各种低级别的功能。此外,在一些示例中,平台固件能够例如经由高级配置和电源接口(ACPI)与在CPU上执行的更高级别的操作系统通信。
如上所述,主机处理器可以包括页表基址寄存器232。如本文所使用的,“页表基址寄存器”是主机处理器230或CPU中的寄存器,该寄存器包括关于在主机处理器230或CPU上执行的当前进程的页表的基址的信息。如本文所述,处理元件可以包括多个核/CPU/主机处理器,并且因此包括多个PTBR。PTBR 232可以包括转换表的基址和关于该基址所占用的存储器的信息。在INTEL x86架构中,该寄存器的示例是CR3寄存器。在ARM架构中,该寄存器的示例是转换表基址寄存器。
在引导过程期间,固件引擎260可以由处理元件229来执行。这可以用于执行计算系统200的配置。可以在将计算系统的操作移交给操作系统之前的引导时间执行固件引擎260。作为配置的一部分,固件引擎260可以配置包括主机处理器230的处理元件229以在PTBR 232的内容发生变化时向设备220提供该内容已经发生变化的通知。这可以通过配置处理元件229的实时系统跟踪功能来实施。实时系统跟踪功能的示例包括INTEL处理器跟踪、ARM Core Sight等。在一些示例中,通知包括寄存器的内容。通常,在执行新进程时,PTBR 232的内容会发生变化。
在引导时间期间,固件引擎260可以锁定通知的配置,以使得操作系统不能修改已锁定的配置。在现代处理器中,固件可以要求资源,锁定可以包括要求特定资源(例如,实时跟踪特征),使得用于配置的固件能够锁定这些资源。在某些示例中,要求资源可以包括要求与本文所描述的支持监测相关联的寄存器(例如,与通知的配置有关的寄存器)。配置可以专门设置跟踪特征以经由互连(例如,PCIe)将特定信息(例如,通知、SMM信息等)发送给设备。在一些示例中,设备220可以另外与处理元件229进行通信,以使用共享秘密(例如,密钥)来对设备220与处理元件229用于实施跟踪特征的部分之间的通信进行签名或加密。例如,可以在通信中使用消息认证码和共享秘密。进一步地,固件可以用于配置处理元件229以响应于设备220发送的管理中断来发送特定寄存器的内容。这可以使用策略进行配置。
一旦引导过程结束,OS就可以接管。如上所述,处理元件229(其可以包括至少一个主机处理器230)可以被配置为提供PTBR 232的内容已经发生变化的通知。
在一个示例中,PTBR 232发生了变化。处理元件229向设备220发送通知。设备220的策略引擎224可以接收该通知。在一些示例中,通知可以包括PTBR 232的内容。进一步地,在其他示例中,设备220可以访问PTBR 232的先前内容,并且因此可以对差异进行分析。在其他示例中,通知还可以包括与主机处理器230相关联的其他寄存器的内容。
响应于接收到通知,策略引擎224可以确定执行验证检查。要执行的特定验证检查可以是基于策略的(例如,基于规则的策略)。
在一个示例中,在存在进程切换时触发验证检查。在另一示例中,在创建新进程时触发验证检查。这将减少验证检查的开销。在另一示例中,对上下文切换执行简单的或轻量级的验证检查,并且为附加验证检查设置另一个策略。例如,可以周期性地(例如基于上下文切换的计数、基于定时器等)执行包括使用SMM请求来获取附加信息的验证检查。
在验证检查的一个示例中,扫描引擎222可以通过向处理元件229发送管理中断来向处理元件229请求附加寄存器内容。寄存器内容可以被认为是可以与特定安全验证有关的关键安全内容。可以将配置设置为响应于管理中断来提供特定寄存器的内容。超过一个配置是可能的,并且在一些示例中,中断可以被配置用于选择要发送哪些内容。如上所述,特定控制寄存器(例如,CR2、CR3、CR4、CR8)、存储器管理寄存器(CS、DS、ES、FS、GS、SS等)以及模型特定寄存器(例如,SYSENTERCSMSR SYSENTEREIPMSRSYSENTERESPMSR等)可以被配置用于响应于管理中断而被发送。因此,处理元件响应于管理中断而提供多个寄存器内容。
在一个示例中,验证检查包括基于寄存器内容之一来确定是否有用户空间保护已经被禁用的指示。例如,如果CR4·SMEP和/或CR4.SMAP被禁用,则策略引擎224可以触发安全措施。SMEP和SMAP使得恶意程序更难以诱使内核使用来自用户空间的指令或数据。另一个示例可以是检查系统区域第4级页映射(PML4)以确保这些表项未被标记为用户。
在另一示例中,策略引擎224可以确定内核空间映射在被检查时是否违反了wXOrXo操作系统通常不允许内存页是既可写入又可执行的。如果已违反,则存储页是潜在的威胁,因此它可能违反设备220设置的策略,并且触发安全措施。
在进一步的示例中,设备220可以检查寄存器内容,以确定进程的内核页表与根内核主页表之间是否存在可执行页的数量的不匹配。不匹配可以指示进程的内核页表发生了一些恶意事件。
在另一示例中,设备220可以将寄存器内容之一所引用的代码与用于所引用代码的黄金引用进行比较。在一些示例中,黄金引用可以在计算系统200的引导部分或使用其他技术来捕获。
安全措施可以包括提供验证检查的通知。这可以包括记录事件、发送邮件、向控制面板(dashboard)发送通知等。还可以执行其他安全措施,例如,通过关闭通信端口来隔离计算系统200等。在其他示例中,在隔离之前可以将计算系统的数据转移出去。
如上所述,验证检查或更深层次的第二验证检查可以响应于第二触发条件而发生。触发条件可以是定时器、上下文变化的计数等。在一些示例中,第二验证检查可以包括验证多个缓冲的上下文信息。在一些示例中,验证可以包括对内核代码212、内核数据216、模块代码218等的更完整的验证。例如,计算系统200可以使用缓冲区270(例如,系统存储器中的缓冲区)来收集包含指向可执行代码的指针的跳转表。这些可以基于触发异步地进行处理。
在一个示例中,使用这些方法对计算系统的状态信息进行信任验证。在该示例中,状态信息至少包括内核代码212和模块代码218,例如,在计算系统200的基本操作中使用的模块代码和/或驱动程序。在一个示例中,可以使用链来进行初始信任验证。例如,当计算系统200被初始化时,固件引擎260可以例如通过使用密钥来验证引导加载程序。在使用第二可信密钥验证了内核代码已签名之后,引导加载程序可以引导内核代码212。然后,内核使用第三可信密钥来验证模块代码218以进行加载。模块代码218可以包括例如切入或切出PTBR 232的进程的代码。可信密钥可以是相同密钥或不同密钥,并且存储在可信位置处(例如,在BMC处、设备220处、TPM处等)。这可以使用安全引导来实施。在其他示例中,可以使用测量的引导方法来启用验证。
处理元件可以将内核代码212和模块代码218加载到存储器234中。存储器234可以由与处理元件229分离的设备220访问。测量驱动程序210可以被验证并被加载到存储器234中。
状态信息可以对应于多个符号。这些符号可以各自与存储器的区段相关联。这些符号可以用于标识存储器的各区段,例如,与代码、表相关联的特定功能等。可以针对特定内核代码、模块代码、以及被加载用于了解追踪什么符号的其他状态信息来配置测量驱动程序210。测量驱动程序210可以进一步被配置用于使用内核代码来确定关于符号的各种信息,例如,符号的大小、符号的开始、符号的结束、下一个预期符号的开始等。不同的内核代码可以具有不同的功能,以使得能够收集信息。信息可以用于确定每个符号的开始地址和符号的大小。
测量驱动程序210可以在加载一组其他模块之前测量状态信息。与每个符号相对应的状态信息可以用于生成一组初始测量结果。在一个示例中,测量驱动程序可以测量每个符号的对应状态信息。然后,测量驱动程序210或其他代理可以将与相应符号相关联的这组初始测量结果提供给设备220,以进行完整性监测。信息的提供可以经由如上所述的缓冲区和/或互连或设备220和初始化内核可访问的某种其他通信方法来进行。此时测量的符号的状态信息可以处于稳定状态,在稳定状态下,预期信息不会发生变化。
如本文所使用的,“状态信息”是与预期在测量之后状态不发生变化的相应符号相对应的一组数据。如果信息发生变化,则可以将其视为违反完整性,这可以指示恶意意图。
初始测量结果可以包括与对应的符号相关联的相应状态信息的散列。在一些示例中,在测量驱动程序210与设备之间传送的消息可以包括分组报头、符号名称、地址、符号的大小以及根据密码散列算法用从地址存储的大小信息生成的散列摘要。在一些示例中,可以将填充添加到消息中以促进简单的通信。因此,在一些示例中,初始测量结果可以包括被追踪的每个相应符号在存储器中的位置以及与特定符号相关联的相应状态信息的大小。
在一些示例中,一旦加载了测量驱动程序210,测量驱动程序210就将在内核代码中嵌入负责加载其他模块218的一个功能(或多个功能)。这可以在进行基线测量之前发生。在加载其他模块218时,可以使用如上所述的类似的方法来测量与其他模块218相关联的符号。因此,可以测量与其他状态信息相关联的相应的基线测量结果,这些其他状态信息与其他符号相关联。可以将其他符号的基线测量结果发送给设备220。
设备220可以监测存储器234中与进行了初始或基线测量的每个符号相关联的相应状态信息。可以由设备220通过测量与每个符号相对应的状态信息,以确定相应符号的第二组测量结果来执行监测。设备220可以将第二组测量结果与初始或基线测量结果进行比较。比较可以一次进行一个(例如,将一个符号的当前测量结果与该符号的基线或初始测量结果进行比较)。在一些示例中,设备基于比较确定存在违反情况。如果符号的两个测量结果的比较不匹配,则可能发生这种情况。可以响应于确定违反情况来执行安全措施。如上所述,安全措施可以包括记录违反情况、发送违反警报、关闭计算系统200、重新初始化计算系统或用于在检测到违反情况时进行补救的其他预定动作中的一个或多个。
图3是根据示例的响应于页表基址寄存器的内容发生变化的通知而执行验证检查的设备的框图。设备300包括处理元件310和机器可读存储介质320,机器可读存储介质包括用于执行验证检查的指令322、324、326。设备300可以是例如ASIC、诸如BMC 400的BMC、另一个控制器等。
处理元件310可以是一个或多个中央处理单元(CPU)、一个或多个基于半导体的微处理器、一个或多个图形处理单元(GPU)、适合于取得和执行存储在机器可读存储介质320中的指令的其他硬件设备或其组合。处理元件310可以是物理设备。此外,在一个示例中,处理元件310可以包括一个芯片上的多个核,包括多个芯片上的多个核、多个设备上的多个核或其组合。处理元件310可以取得、解码和执行指令322、324、326,以响应于接收到通知而实施执行验证检查。作为取得和执行指令的替代或补充方案,处理元件310可以包括至少一个集成电路(IC)、其他控制逻辑、其他电子电路或其包括用于执行指令322、324、326的功能的多个电子部件的组合。
机器可读存储介质320可以是包含或存储可执行指令的任何电子、磁性、光学或其他物理存储设备。因此,机器可读存储介质可以是例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动器、光盘只读存储器(CD-ROM)等。这样,机器可读存储介质可以是非暂态的。如本文所详细描述的,机器可读存储介质320可以用一系列可执行指令进行编码,从而执行验证检查(例如,执行方法600)。
设备300可以从主机处理器接收PTBR的内容已经发生变化的通知。可以根据如上所述的策略来执行验证指令322。在一些示例中,可以执行中断指令324以从主机处理器请求并接收附加信息。一旦执行了验证检查,就可以根据本文所描述的特征、通过执行安全措施指令326来采取安全措施。
图4是根据示例的能够执行验证检查的基板管理控制器的框图。BMC 400可以包括机器可读存储介质420,机器可读存储介质包括与设备300的指令相对应的验证指令422、中断指令424和安全措施指令426。BMC 400还可以包括用于执行指令的处理元件410。在一些示例中,BMC 400可以提供如上所述的附加功能。
图5是根据示例的用于响应于页表基址寄存器的内容发生变化的通知而执行验证检查的方法的流程图。尽管下面参考系统200描述了方法500的执行,但是也可以利用其他适合于执行方法500的部件。方法500可以以存储在如存储介质等机器可读存储介质上的可执行指令的形式和/或以电子电路的形式来实施。
在502处,可以执行固件以配置主机处理器,以响应于PTBR的内容发生变化来提供所述内容已经发生变化的通知。进一步地,可以执行固件以响应于如上所述的管理中断而向设备发送多个寄存器内容。如上所述,配置可以在引导过程期间发生,并在将计算系统的执行转到OS之前锁定。在上下文发生变化时,主机处理器向设备220发送通知。
在504处,设备220响应于接收到通知而执行验证检查。验证检查可以是轻量级的,也可以是全面的。在一个示例中,实时执行轻量级的检查并且以异步的节奏执行全面的检查。
图6是根据示例的用于执行验证检查的方法的流程图。尽管下面参考设备300描述了方法600的执行,但是也可以利用其他适合于执行方法600的部件(例如,BMC 400)。方法600可以以存储在如存储介质320等机器可读存储介质上的可执行指令的形式和/或以电子电路的形式来实施。
设备300可以从主机处理器接收PTBR的内容已经发生变化的通知。在602处,响应于接收到通知,处理元件310可以执行验证指令322以执行验证检查。
作为验证检查的一部分,在604处,可以由处理元件310执行中断指令324以向主机处理器发送管理中断。主机处理器可以响应于管理中断而发送与主机处理器相关联的多个寄存器内容(例如,控制寄存器、存储器管理寄存器、模型特定寄存器等)。设备300可以接收内容(606)。内容可以用于执行如上详述的验证检查。
可以响应于对指示用户空间问题的寄存器内容之一的检查来执行安全措施。例如,可以响应于用户空间保护已经被禁用的指示来执行安全措施(608)。如上所述,安全措施可以包括记录违反情况、发送违反警报、关闭计算系统、重新初始化计算系统或用于在检测到违反情况时进行补救的其他预定动作中的一个或多个。
如所指出的,与中断有关的寄存器内容可以被认为是可以与特定安全验证有关的关键安全内容。可以将配置设置为响应于管理中断来提供特定寄存器的内容。超过一个配置是可能的,并且在一些示例中,中断可以被配置用于选择要发送哪些内容。如上所述,特定控制寄存器(例如,CR2、CR3、CR4、CR8)、存储器管理寄存器(CS、DS、ES、FS、GS、SS等)以及模型特定寄存器(例如,SYSENTER_CS_MSR、SYSENTER_EIP_MSRSYSENTER_ESP_MSR等)可以被配置用于响应于管理中断而被发送。
在一个示例中,验证检查包括基于寄存器内容之一来确定是否有用户空间保护已经被禁用的指示。例如,如果CR4·SMEP和/或CR4.SMAP被禁用,则可以触发安全措施。SMEP和SMAP使得恶意程序更难以诱使内核使用来自用户空间的指令或数据。另一个示例可以是检查系统区域第4级页映射(PML4)以确保这些表项未被标记为用户。
在另一示例中,如果内核空间映射在被检查时违反了WxorX则可以采取安全措施。操作系统通常不允许内存页是既可写入又可执行的。
在进一步的示例中,设备300可以检查寄存器内容,以确定进程的内核页表与根内核主页表之间是否存在可执行页的数量的不匹配。不匹配可以指示进程的内核页表发生了一些恶意事件,并且可以采取安全措施。
在另一示例中,设备300可以将寄存器内容之一所引用的代码与用于所引用代码的黄金引用进行比较。在一些示例中,黄金引用可以在计算系统的引导部分或使用如上所述的其他技术来捕获。
虽然上面已经示出并描述了特定的实施方式,但是可以做出形式和细节上的各种改变。例如,已经关于一种实施方式和/或过程描述的一些特征可以与其他实施方式关联。换句话说,关于一种实施方式描述的过程、特征、部件和/或特性可用于其他实施方式。此外,应当理解,本文描述的系统和方法可以包括所描述的不同实施方式的部件和/或特征的各种组合和/或子组合。因此,参考一种或多种实施方式描述的特征可以与本文描述的其他实施方式组合。

Claims (20)

1.一种计算系统,包括:
至少一个主机处理器;
存储器,所述存储器耦接至所述至少一个主机处理器;以及
设备,所述设备与所述至少一个主机处理器分离、能够访问所述存储器,
其中,所述至少一个主机处理器包括页表基址寄存器,其中,所述至少一个主机处理器用于:
执行固件以响应于所述页表基址寄存器的内容发生变化而向所述设备提供所述页表基址寄存器的所述内容已经发生变化的通知,
其中,所述设备用于响应于接收到所述通知而执行验证检查;并且
其中所述验证检查包括:
在每次进程上下文切换时,对当前进程的页表映射执行验证检查;以及
在多次进程上下文切换之后,对所述至少一个主机处理器的上下文执行验证检查。
2.如权利要求1所述的计算系统,
其中,所述固件由所述至少一个主机处理器执行以配置所述至少一个主机处理器,以响应于管理中断而向所述设备发送多个寄存器内容。
3.如权利要求2所述的计算系统,
其中,所述设备进一步用于,作为所述验证检查的一部分,响应于接收到所述通知而向所述至少一个主机处理器发送所述管理中断。
4.如权利要求3所述的计算系统,其中,所述通知包括所述页表基址寄存器的所述内容。
5.如权利要求2所述的计算系统,其中,在将计算系统的操作移交至操作系统之前的引导时间,执行所述固件以通过使得所述操作系统不能修改所要求的资源来锁定所述通知的配置。
6.如权利要求2所述的计算系统,其中,所述验证检查包括:基于所述寄存器内容之一来确定用户空间保护已经被禁用的指示。
7.如权利要求2所述的计算系统,其中,所述验证检查包括:确定内核空间映射是否包括既可写入又可执行的内存页。
8.如权利要求2所述的计算系统,其中,所述验证检查包括:检查所述寄存器内容,以确定在进程的内核页表与根内核主页表之间是否存在可执行页的数量的不匹配。
9.如权利要求2所述的计算系统,其中,所述验证检查包括:将所述寄存器内容中的至少一个寄存器内容所引用的代码与用于所引用代码的黄金引用进行比较。
10.如权利要求1所述的计算系统,其中,所述验证检查除了基于所述通知之外,进一步基于第二触发条件,并且其中,所述验证检查包括验证多个缓冲的上下文信息,并且其中所述第二触发条件包括定时器和上下文变化的计数中的至少一个。
11.一种验证检查的方法,所述方法包括:
由至少一个主机处理器执行固件以配置所述至少一个主机处理器,以响应于页表基址寄存器的内容发生变化而向设备提供所述页表基址寄存器的所述内容已经发生变化的通知,
其中,所述至少一个主机处理器包括所述页表基址寄存器,
其中,所述至少一个主机处理器耦接至存储器,
其中,所述设备与所述至少一个主机处理器分离并且能够访问所述存储器;
由所述设备响应于接收到所述通知而执行验证检查,
其中所述验证检查包括:
在每次进程上下文切换时,对当前进程的页表映射执行验证检查;以及
在多次进程上下文切换之后,对所述至少一个主机处理器的上下文执行验证检查。
12.如权利要求11所述的方法,进一步包括:
由所述至少一个主机处理器执行所述固件以配置所述至少一个主机处理器,以响应于管理中断而向所述设备发送多个寄存器内容。
13.如权利要求12所述的方法,进一步包括:
作为所述验证检查的一部分,由所述设备响应于接收到所述通知而向所述至少一个主机处理器发送所述管理中断,其中,所述通知包括所述页表基址寄存器的所述内容。
14.如权利要求12所述的方法,进一步包括:
在将计算设备的操作移交至操作系统之前的引导时间,执行所述固件以通过使得所述操作系统不能修改所要求的资源来锁定所述通知的配置。
15.如权利要求12所述的方法,进一步包括:
作为所述验证检查的一部分,确定所述寄存器内容之一是否指示用户空间保护已经被禁用。
16.如权利要求12所述的方法,进一步包括:作为所述验证检查的一部分,确定内核空间映射是否包括既可写入又可执行的内存页。
17.如权利要求12所述的方法,进一步包括:作为所述验证检查的一部分,检查所述寄存器内容,以确定在进程的内核页表与根内核主页表之间是否存在可执行页的数量的不匹配。
18.如权利要求12所述的方法,进一步包括:作为所述验证检查的一部分,将所述寄存器内容中的至少一个寄存器内容所引用的代码与用于所引用代码的黄金引用进行比较。
19.如权利要求12所述的方法,其中,所述验证检查除了基于所述通知之外,进一步基于第二触发条件,并且其中所述验证检查包括验证多个缓冲的上下文信息,并且其中所述第二触发条件包括定时器和上下文变化的计数中的至少一个。
20.一种存储有指令的非暂态机器可读存储介质,所述指令在由管理控制器的物理处理元件执行时使得所述管理控制器:
响应于接收到来自计算系统的至少一个主机处理器的通知而执行验证检查,
其中,所述计算系统包括所述至少一个主机处理器、耦接至所述至少一个主机处理器的存储器、以及所述管理控制器,所述管理控制器同样耦接至所述存储器,其中,所述管理控制器与所述至少一个主机处理器分离,
其中,所述至少一个主机处理器包括页表基址寄存器,
其中,所述至少一个主机处理器被配置用于在引导时间响应于所述页表基址寄存器的内容的变化而向所述管理控制器提供所述通知;
作为所述验证检查的一部分,响应于接收到所述通知而向所述至少一个主机处理器发送管理中断,
响应于所述管理中断,接收所述至少一个主机处理器的多个寄存器内容;并且
响应于所述寄存器内容之一指示用户空间保护已经被禁用,执行安全措施,
其中所述验证检查包括:
在每次进程上下文切换时,对当前进程的页表映射执行验证检查;以及
在多次进程上下文切换之后,对所述至少一个主机处理器的上下文执行验证检查。
CN202110429922.4A 2020-06-17 2021-04-21 验证检查的方法、计算系统及机器可读存储介质 Active CN113806745B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/903,946 US11455395B2 (en) 2020-06-17 2020-06-17 Perform verification check in response to change in page table base register
US16/903,946 2020-06-17

Publications (2)

Publication Number Publication Date
CN113806745A CN113806745A (zh) 2021-12-17
CN113806745B true CN113806745B (zh) 2023-08-04

Family

ID=78823209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110429922.4A Active CN113806745B (zh) 2020-06-17 2021-04-21 验证检查的方法、计算系统及机器可读存储介质

Country Status (3)

Country Link
US (2) US11455395B2 (zh)
CN (1) CN113806745B (zh)
DE (1) DE102021109189B4 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11455395B2 (en) * 2020-06-17 2022-09-27 Hewlett Packard Enterprise Development Lp Perform verification check in response to change in page table base register
US11893551B2 (en) * 2021-04-15 2024-02-06 Bank Of America Corporation Information security system and method for augmented reality check generation
CN118133737A (zh) * 2024-05-07 2024-06-04 摩尔线程智能科技(北京)有限责任公司 一种上下文切换的验证方法、装置及电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446034B1 (en) * 1998-12-16 2002-09-03 Bull Hn Information Systems Inc. Processor emulation virtual memory address translation
US8806224B2 (en) * 2005-06-28 2014-08-12 Intel Corporation Low cost trusted platform
US8090919B2 (en) * 2007-12-31 2012-01-03 Intel Corporation System and method for high performance secure access to a trusted platform module on a hardware virtualization platform
US7917724B2 (en) * 2007-12-28 2011-03-29 Intel Corporation Protection of user-level applications based on page table information
US8060722B2 (en) 2009-03-27 2011-11-15 Vmware, Inc. Hardware assistance for shadow page table coherence with guest page mappings
US8510569B2 (en) * 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
US9483635B2 (en) * 2012-08-03 2016-11-01 North Carolina State University Methods, systems, and computer readable medium for active monitoring, memory protection and integrity verification of target devices
US10007784B2 (en) * 2015-03-27 2018-06-26 Intel Corporation Technologies for control flow exploit mitigation using processor trace
US10664181B2 (en) * 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US11714910B2 (en) * 2018-06-13 2023-08-01 Hewlett Packard Enterprise Development Lp Measuring integrity of computing system
US11016773B2 (en) * 2019-09-27 2021-05-25 Intel Corporation Processor trace extensions to facilitate real-time security monitoring
US11455395B2 (en) * 2020-06-17 2022-09-27 Hewlett Packard Enterprise Development Lp Perform verification check in response to change in page table base register

Also Published As

Publication number Publication date
CN113806745A (zh) 2021-12-17
US11775649B2 (en) 2023-10-03
US11455395B2 (en) 2022-09-27
US20210397713A1 (en) 2021-12-23
US20220405393A1 (en) 2022-12-22
DE102021109189A1 (de) 2021-12-23
DE102021109189B4 (de) 2023-12-14

Similar Documents

Publication Publication Date Title
US11714910B2 (en) Measuring integrity of computing system
US10516533B2 (en) Password triggered trusted encryption key deletion
CN113806745B (zh) 验证检查的方法、计算系统及机器可读存储介质
JP5487479B2 (ja) オペレーティングシステム(os)に依存しないウイルス対策(av)スキャナに対して強制的なセキュリティポリシーを実施する方法および装置
CN106415575B (zh) 硬件配置报告系统
US20070005935A1 (en) Method and apparatus for securing and validating paged memory system
US10445255B2 (en) System and method for providing kernel intrusion prevention and notification
US20210342162A1 (en) Kernel space measurement
US8843742B2 (en) Hypervisor security using SMM
US9367327B2 (en) Method to ensure platform silicon configuration integrity
US11636214B2 (en) Memory scan-based process monitoring
Zhang IOCheck: A framework to enhance the security of I/O devices at runtime
CN113448682B (zh) 一种虚拟机监控器加载方法、装置及电子设备
US20210232688A1 (en) Determine whether to perform action on computing device based on analysis of endorsement information of a security co-processor
US11797679B2 (en) Trust verification system and method for a baseboard management controller (BMC)
Atamli et al. IO-Trust: an out-of-band trusted memory acquisition for intrusion detection and forensics investigations in cloud IOMMU based systems
US11556645B2 (en) Monitoring control-flow integrity
EP4273722A1 (en) Terminal chip and measurement method therefor
CN115686632A (zh) 一种芯片、计算设备、动态度量方法及可读存储介质
Zhenliu et al. An Efficient Trustworthy Protected-Ring Model for UEFI Firmware
Zhou et al. An Efficient Trustworthy Protected-Ring Model for UEFI Firmware
Fang et al. TRIOB: A Trusted Virtual Computing Environment Based on Remote I/O Binding Mechanism

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant