首页> 中国专利> 使用处理器事务性内存支持的内存访问保护

使用处理器事务性内存支持的内存访问保护

摘要

用于检测未授权内存访问的技术包括具有处理器的计算装置,处理器具有事务性内存支持。该计算装置执行安全协助线程,该安全协助线程使用事务性内存支持启动事务。在所述事务内,安全协助线程将任意数据写入一个或更多个被监视内存位置。安全协助线程等待而不提交事务。安全协助线程可能无休止地循环。计算装置的事务性内存支持检测由被监视内存位置的外部读取引起的事务性中止。计算装置分析事务性中止,并且确定是否发生安全事件。如果发生了安全事件,则计算装置执行安全响应。被监视内存位置可以包括内存映射操作系统库、内核数据结构、可执行映像、或者可能被恶意软件扫描的其它内存结构。还描述并且要求其它实施方式。

著录项

  • 公开/公告号CN107408016A

    专利类型发明专利

  • 公开/公告日2017-11-28

    原文格式PDF

  • 申请/专利权人 迈克菲公司;

    申请/专利号CN201580071977.5

  • 申请日2015-11-30

  • 分类号

  • 代理机构北京三友知识产权代理有限公司;

  • 代理人吕俊刚

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 03:54:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-12

    授权

    授权

  • 2019-09-20

    著录事项变更 IPC(主分类):G06F3/06 变更前: 变更后: 申请日:20151130

    著录事项变更

  • 2017-12-22

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20151130

    实质审查的生效

  • 2017-11-28

    公开

    公开

说明书

相关申请的交叉引用

本申请要求2015年3月27日提交的名为“MEMORY ACCESS PROTECTION USINGPROCESSOR TRANSACTIONAL MEMORY SUPPORT”的美国实用专利申请序列号No.14/670982的优先权,并且其在35U.S.C.§119(e)下要求2014年12月31日提交的名为“MEMORY ACCESSPROTECTION USING PROCESSOR TRANSACTIONAL MEMORY SUPPORT”的美国临时专利申请序列号No.62/098641的优先权。

背景技术

计算机安全的一个方面涉及保护计算机系统免受怀有恶意的软件(也称为“恶意软件(Malware)”)的侵害。恶意软件有很多形式;然而,许多常见恶意软件可以对计算机内存中的未授权位置进行读取或其它访问。例如,某些恶意软件扫描计算机内存以定位有用的库或其它代码来访问系统API。因此,一系列不常见内存读取可能是恶意活动的有用指标。可以使用基于页面的异常(即,页面错误)来检测未授权的读取。使用基于页面的异常检测未授权的读取通常要求操作系统和/或管理程序支持,并且可能仅以相对粗略的分辨率(例如,每4k内存页面)来检测读取。

一些计算机处理器为硬件事务性内存提供支持。事务性内存允许程序员指定被称作“事务”的一段代码,以独立地和在原子级执行。即,直到交易被成功提交为止,在事务内发生的内存操作对于计算系统上执行的其它事务或线程是不可见的。成功提交之后,在事务期间进行的所有内存改变都可以立即用于系统上的其它线程。事务性内存可以通过以下实现:推测性地执行事务,检测在执行事务期间发生的任何内存冲突,然后响应于内存冲突中止并且回滚事务。内存冲突例如包括尝试写入到已被另一个事务读取或写入的内存位置的事务。事务性内存可以简化用于并行计算的编程模型。硬件事务性内存支持的一个商业可用例子是在公司制造的某些处理器上可用的事务性同步扩展( TSX)。2013年12月17日提交的未决申请PCT/US2013/075805和2014年3月28日提交的美国申请序列号No.14/228842描述了使用硬件事务性内存支持来检测未授权的内存写入(内存修改)的两种技术。

附图说明

本文所描述的概念通过举例的方式而非限制的方式在附图中进行了例示。为了简单和清楚说明起见,图中所示的元件不必按比例绘制。在认为合适的情况下,参考标号在附图中进行了重复,以指示对应或类似的元件。

图1是用于检测未授权内存访问的计算装置的至少一个实施方式的简化框图;

图2是图1的计算装置的环境的至少一个实施方式的简化框图;以及

图3是用于检测可以通过图1和图2的计算装置执行的未授权内存访问的方法的至少一个实施方式的简化流程图。

具体实施方式

虽然本公开的概念容许各种修改和另选形式,但其具体实施方式在附图中通过举例示出,并且在此进行了详细描述。然而,应当明白,不旨在将本公开的概念限制到所公开的特定形式,而是相反,旨在覆盖与本公开和所附权利要求一致的所有修改例、等同物、以及另选例。

本说明书中对“一个实施方式”、“一实施方式”,“一例示性实施方式”等的引用指示所描述的实施方式可以包括特定特征、结构、或特性,但每一个实施方式可以包括或者不必须包括该特定特征、结构、或特性。此外,这样的短语不必须是指同一实施方式。而且,当一特定特征、结构、或特性结合一实施方式描述时,主张其在本领域技术人员的知识内,以结合其它实施方式来实现这种特征、结构、或特性,而无论是否明确描述。另外,应当想到,以“至少一个A、B、以及C”的形式包括在列表中的项目可以是指:(A);(B);(C);(A和B);(A和C);(B和C);或(A、B、以及C)。类似地,以“A、B,或C中的至少一个”的形式列出的项目可以是指:(A);(B);(C);(A和B);(A和C);(B和C);或(A、B、以及C)。

在一些情况下,所公开的实施方式例可以按硬件、固件、软件、或其任何组合来实现。所公开的实施方式还可以被实现为由一个或更多个暂时性或非暂时性机器可读(例如,计算机可读)存储介质承载或存储于其上的指令,所述指令可以通过一个或更多个处理器读取和执行。机器可读存储介质可以被具体实施为用于以机器可读的形式存储或传输信息的任何存储装置、机构、或其它物理结构(例如,易失性或非易失性存储器、媒体盘、或其它媒体装置)。

在图中,一些结构性特征或方法特征可以以特定布置和/或排序来显示。然而,应当清楚,可能不要求这种具体布置和/或排序。而是,在一些实施方式中,这样的特征可以按与所示的图中示出的不同方式和/或次序布置。另外,在特定图中包括结构性特征或方法特征并不意味着在所有实施方式中都要求这样的特征,而是在一些实施方式中,这样的特征可以不被包括或者可以与其它特征组合。

现在参照图1,例示性计算装置100可以被用于检测对一个或更多个被监视内存区域的未授权读取访问。计算装置100执行使用该计算装置100的处理器的硬件事务性内存支持来启动事务的安全线程。在该事务内,计算装置100在不提交事务的情况下对一个或更多个被监视内存区域进行写入;即,计算装置100对被监视内存区域执行一个或更多个“未提交盖写”。对被监视内存区域的改变对于由计算装置100执行的其它线程来说不可见。源自另一线程的对与被监视内存区域相关联的高速缓存行的任何读取访问立即导致安全线程的中止。响应于该中止,计算装置100执行安全分析并且可以生成恰当安全响应。由此,计算装置100可以使用硬件支持来监视未授权内存读取。另外,计算装置100在高速缓存行级别(例如,64字节)而不是更粗糙的内存页面级别来监视内存。对未授权读取的即时反应可以减少用于利用的时间窗口。而且,计算装置100可以通过允许在软件中创建灵活的硬件级内存监视器来改进易用性。

计算装置100可以被具体实施为用于执行本文所述功能的任何类型的装置。例如,计算装置100可以被具体实施为而不限于台式计算机、服务器计算机、工作站、膝上型计算机、笔记本计算机、移动计算装置、智能电话、平板计算机、蜂窝电话、手机、消息传递装置、可佩戴计算装置、车辆远程信息处理装置、分布式计算系统、多处理器系统、消费者电子装置、和/或被设置成执行本文所述功能的任何其它计算装置。如图1所示,例示性计算装置100包括:处理器120、输入/输出子系统126、存储器128、以及数据存储装置134。当然,在其它实施方式中,计算装置100可以包括其它或附加组件,诸如台式计算机中常见的那些(例如,各种输入/输出装置)。另外,在一些实施方式中,一个或更多个例示性组件可以被结合到或以其它方式形成另一组件的一部分。例如,在一些实施方式中,存储器128或其部分可以结合在处理器120中。

处理器120可以被具体实施为能够执行本文所述功能的任何类型的处理器。例示性处理器120是多核处理器;然而,在其它实施方式中,处理器120可以被具体实施为单核或多核处理器、数字信号处理器、微控制器、或者其它处理器或处理/控制电路。例示性处理器120包括四个处理器内核122,其中,每个都是能够执行编程指令的独立处理单元。尽管例示性处理器120包括四个处理器内核122,但在其它实施方式中,处理器120可以包括更少或更多数量的处理器内核122。另外,尽管例示性计算装置100包括单个处理器120,但在一些实施方式中,计算装置100可以包括多于一个处理器120。例如,计算装置100可以被具体实施为具有共享内存互连的对称多处理系统。

该例示性处理器120还包括硬件事务性内存支持124,其允许处理器120推测地执行已知为事务的代码段。事务是原子的,意指在将事务挂起时由该事务执行的内存操作对于其它事务、内核122、逻辑处理器、和/或处理器120的线程来说不可见。当事务完成时(还已知为提交),该事务的所有内存操作立刻变得可用于计算装置100的其余部分。当事务内的内存访问与另一个事务或线程冲突时,例如,当线程从已经由未提交事务写入的内存位置读取时(或当两个事务和/或线程写入同一内存位置时),处理器120可以中止冲突事务,丢弃任何相关联的正在进行的事务性内存改变。特别地,处理器120可以在检测到内存冲突时“急切地”中止冲突事务,而不等待该事务尝试提交。处理器120可以使用高速缓存一致性机制来实现急切冲突检测。处理器120可以以任何粒度级别检测冲突内存位置,例如,每缓存行、每字、或者每内存单元。在中止时,处理器120可以调用中止处理程序,重启该事务(一次或多次),或者响应于中止的事务调用非事务性回退代码。在一些实施方式中,事务性内存支持124可以具体实施为在由公司制造的某些处理器120上可用的事务性同步扩展( TSX)。

内存128可以被具体实施为能够执行本文所述功能的任何类型的易失性或非易失性存储器或数据储存器。在操作中,内存128可以存储在计算装置100的操作期间使用的各种数据和软件,诸如操作系统、应用程序、程序、库、以及驱动程序。例示性内存128包括一个或更多个被监视内存区域130和中止处理程序132。如下面进一步描述的,被监视内存区域130是针对所尝试的未授权内存访问监视的内存的特定区域。这种被监视内存区域130可以包括加载的或内存映射的库、可执行映像、内核数据结构、或其它重要内存区域。中止处理程序132可以包括在事务性中止事件中被调用以处理潜在安全违规的一个例程或多个例程,如下进一步描述的。

内存128经由I/O子系统126可通信地耦接至处理器120,该子系统可以被具体实施为便于与处理器120、内存128、以及计算装置100的其它组件的输入/输出操作的电路和/或组件。例如,I/O子系统126可以被具体实施为或另外包括内存控制器集线器、输入/输出控制集线器、固件装置、通信链路(即,点到点链路、总线链路、电线、线缆、导光板、印刷电路板迹线等)、和/或其它组件和子系统,以便于输入/输出操作。在一些实施方式中,I/O子系统126可以形成芯片上系统(SoC)的一部分并且与处理器120、内存128、以及计算装置100的其它组件一起结合在单个集成电路芯片上。

数据存储装置134可以被具体实施为被配置用于数据的短期或长期存储的任何类型的一个装置或多个装置,例如,如内存装置和电路、存储卡、硬盘驱动器、固态驱动器、或其它数据存储装置。数据存储装置134可以被用于存储包括操作系统软件和应用软件的、用于执行的软件或其它数据。这样的软件可能最初是不受信任的并且可能是恶意的,例如,从第三方供应商下载的软件。

计算装置100还包括能够实现计算装置100与远程计算装置之间的通信的通信子系统136,其可以被实现为任何通信电路、装置、或其集合。通信子系统136可以被配置成使用任一种或更多种通信技术(例如,无线或有线通信)和关联协议(例如,以太网、WiMAX、HSPA+、LTE等)来实现这种通信。通信子系统136可以被具体实施为包括无线网络适配器的网络适配器。

在例示性实施方式中,计算装置100还包括显示器138。计算装置100的显示器138可以被具体实施为能够显示数字信息的任何类型的显示器,诸如液晶显示器(LCD)、发光二极管(LED)、等离子显示器、阴极射线管(CRT)、或其它类型的显示装置。显示器138例如可以被用于将安全分析的结果传达给用户。

现在参照图2,在该例示性实施方式中,计算装置100在操作期间建立环境200。该例示性环境200包括:安全模块202、安全协助线程模块204、以及安全响应模块208。环境200的各个模块可以被具体实施为硬件、固件、软件、或其组合。例如,环境200的各种模块、逻辑、以及其它组件200可以形成计算装置100的处理器120或其它硬件组件的一部分,或另外由其构建。这样,在一些实施方式中,环境200的任何一个或更多个模块可以被具体实施为电气装置的电路或集合(例如,安全电路、安全协助线程电路等)。

安全模块202被配置成启动一个或更多个安全协助线程206,以监视该被监视内存区域130。安全模块202可以被具体实施为可以使用该被监视内存区域130的任何安全软件,并且可以被具体实施为一个或更多个操作系统、管理程序、操作系统模块、驱动程序、可信代码、或其它安全软件。安全协助线程206均可以被具体实施为可在计算装置100的内核122或逻辑处理器上运行的任何独立执行线程,诸如操作系统线程、轻量级进程、操作系统进程、操作系统内核线程、或用户软件线程。在创建时,可以向每个安全协助线程206提供被监视内存区域130的地址或被监视内存区域130的一部分。在一些实施方式中,安全协助线程206不被新近创建,而是可以从线程池中被选择或另外被预先生成。

安全协助线程模块204被配置成通过安全协助线程206使用处理器120的事务性内存支持124启动事务。安全协助线程模块204还被设置成通过安全协助线程206在该事务内向相关联的被监视内存区域130写入任意数据。安全协助线程模块204被配置成检测由被监视内存区域130的外部读取引起的该事务的事务性中止;即,源自事务之外的代码执行的对被监视内存区域130的读取。安全协助线程模块204可以被配置成响应于检测到事务性中止来执行事务性中止处理程序132。

安全响应模块208被配置成响应于检测到事务性中止来确定是否发生了安全事件,并且如果发生了安全事件,则执行一个或更多个安全操作。这些功能可以由中止处理程序132执行或作为中止处理程序132的一部分执行。安全响应模块208可以被配置成响应于确定发生了安全事件而报告该安全事件或暂停(halt)计算装置100。

现在参照图3,在使用时,计算装置100可以执行用于检测未授权内存访问的方法300。该方法300开始于框302,其中,计算装置100识别内存128的要监视的一个或更多个区域130。那些被监视内存区域130可以被具体实施为任何内存内映像、可执行文件、或通常被恶意软件扫描的其它数据结构。在一些实施方式中,被监视内存区域130可以包括加载(内存映射)系统库的部分或全部。例如,常见策略是恶意代码在内存128中扫描所加载的操作系统库(诸如WindowsTM操作系统的KERNEL32.DLL库)。恶意代码可以通过读取和解释所加载映像的数据结构(诸如PE报头、节表、和/或PE目录)来验证加载的便携式可执行(PE)映像是否为KERNEL32.DLL。例如,恶意代码可以确定所加载映像的文件类型(例如,PE或DLL),定位输出表,并循环输出表以查找到用于额外系统渗透的函数的指针。恶意代码通常可以使用针对函数LoadModule和GetProcAddress的输出,因为那些函数允许由来自标准DLL的期望API的名称进行调用。普通非恶意软件可能非常罕见地访问被监视内存区域130。

在框304中,计算装置100创建一个或更多个安全协助线程206。如上所述,该安全协助线程206均可以被具体实施为可在计算装置100的内核122或逻辑处理器上运行的任何独立执行线程,诸如操作系统线程、轻量级进程、操作系统进程、操作系统内核线程、或用户软件线程。每个安全协助线程206可以被指配给被监视内存区域130的部分或全部。在一些实施方式中,计算装置100可以创建额外的备份安全协助线程206,以允许连续监视和在覆盖范围内没有间隙。

在框306中,计算装置100执行与被监视内存区域130相关联的每个安全协助线程206。框306(例如,框308、310、312)的处理可以同时、平行、或另外由安全协助线程206同时期执行。在框308中,安全协助线程206启动事务并识别相关联的中止处理程序132。在一些实施方式中,该事务可以通过执行特定指令(例如,XBEGIN指令)来启动。可以将中止处理程序132的地址作为自变量传递给事务开始指令。另外地或另选地,可以存在用于指定中止处理程序132的地址的单独指令。如上所述,如果在执行该事务期间发生事务性中止,则计算装置100的处理器120自动地将执行转移至中止处理程序132。

在框310中,仍然在该事务内执行的安全协助线程206盖写被监视内存区域130。安全协助线程206可以用任意值盖写被监视内存区域130。写入操作可以将与被监视内存区域130相关联的内存高速缓存行添加至该事务的写入集合中。因为事务被隔离并且是原子(atomic)的,所以对被监视内存区域130的改变对于由计算装置100执行的其它线程和/或进程来说不可见。

在框312中,安全协助线程206进入无限等待循环而不提交该事务。安全协助线程206可以使用任何技术来等待而不提交事务,诸如执行循环、休眠、或另外产生安全协助线程206的执行。在等待时,被监视内存区域130的任何外部读取(例如,从另一线程和/或事务读取)导致读/写冲突。处理器120检测读/写冲突并中止该事务。内存冲突的检测和事务性中止的后续生成可以由处理器120的硬件、处理器120的微代码、固件、软件、或那些技术的任何组合来执行。内存冲突和其它事务性中止的检测对于在处理器120上执行的软件来说可以是透明的,其可以仅在由处理器120调用中止处理程序132之后才意识到事务性中止。如果没有发生读/写冲突,则方法300在框312中继续执行。如果发生读/写冲突,则该事务被中止,并且方法300转换至在框314开始的中止处理程序132。

在一些实施方式中,在框314中,从中止处理程序132执行的计算装置100启动一个或更多个备份安全协助线程206。如上所述,计算装置100可以创建或另外初始化被用于提供对被监视内存区域130的连续监视的备份安全协助线程206。备份安全协助线程206可以启动新事务并且对被监视内存区域130进行写入,如以上结合框306描述的。因此,备份安全协助线程206可以允许计算装置100在执行中止处理程序132的同时继续监视被监视内存区域130。

在框316中,从中止处理程序132执行的计算装置100响应于事务性中止执行安全分析,以确定是否发生了安全事件。安全事件包括对一个或更多个被监视内存区域130的任何未授权访问,诸如从被监视内存区域130的未授权读取。这种未授权内存读取可以由恶意软件执行,诸如rootkit在尝试调用任意API之前尝试识别和映射操作系统库,钩住所选API,或另外破坏计算装置100的控制。计算装置100可以分析描述事务性中止原因的数据,以确定是否发生了安全事件,例如,通过读取处理器120的中止状态寄存器或性能监视单元来确定中止的原因、中止指令的地址、冲突数据的地址或、其它信息。

在框318中,计算装置100确定是否发生了安全事件。如上所述,当来自安全协助线程206外部的恶意代码从被监视内存区域130读取时,可能发生安全事件。如果没有发生安全事件,则方法300循环回到框306以执行安全协助线程206,重启该事务,并继续监视被监视内存区域130。如果发生了安全事件,则该方法300前进至框320。

在框320中,计算装置100执行安全响应。计算装置100可以执行任何恰当的安全响应,诸如报告安全事件,终止导致事务性中止的软件,或者暂停计算装置100以防止被包括代码的潜在执行。可以使用任何可用技术来报告安全事件,包括显示交互式警报,生成人可读报告,或执行另一安全操作。在执行安全响应之后,方法300循环回到框306,以执行安全协助线程206,重启该事务,并继续监视被监视内存区域130。

示例

下面提供本文所公开技术的例示性示例。所述技术的实施方式可以包括下述示例中的任一个或更多个、以及任何组合。

示例1包括一种用于检测未授权内存访问的计算装置,该计算装置包括:处理器,该处理器包括事务性内存支持;安全协助线程模块,该安全协助线程模块通过所述计算装置的安全协助线程使用所述处理器的所述事务性内存支持启动事务;响应于所述事务的启动,通过所述安全协助线程对被监视内存位置进行写入;以及响应于对所述被监视内存位置的写入来检测所述事务的事务性中止,其中,所述事务性中止由读取所述被监视内存位置引起,并且其中,所述读取从所述事务外部产生;以及安全响应模块,该安全响应模块用于(i)响应于检测到所述事务性中止来确定是否发生了安全事件,和(ii)响应于确定已经发生安全事件来执行安全操作。

示例2包括示例1的主题,并且还包括安全模块,该安全模块用于启动所述安全协助线程;其中,启动所述事务包括:响应于所述安全协助线程的启动而启动所述事务。

示例3包括示例1和2中的任一个的主题,并且其中,所述被监视内存位置包括内存映射操作系统库的一部分。

示例4包括示例1-3中的任一个的主题,并且其中,所述被监视内存位置包括可执行映像的一部分。

示例5包括示例1-4中的任一个的主题,并且其中,所述被监视内存位置包括操作系统内核数据结构的一部分。

示例6包括示例1-5中的任一个的主题,并且其中,检测所述事务性中止包括:通过所述安全协助线程等待,而不响应于对所述被监视内存位置的写入而提交所述事务。

示例7包括示例1-6中的任一个的主题,并且其中,所述安全协助线程模块还用于响应于检测到所述事务性中止来执行事务性中止处理程序,其中,执行所述事务性中止处理程序包括:确定是否发生了安全事件。

示例8包括示例1-7中的任一个的主题,并且其中,确定是否发生了所述安全事件包括:比较从所述计算装置的性能监视单元检索的冲突数据位置的第一内存地址与所述被监视内存位置的第二内存地址。

示例9包括示例1-8中的任一个的主题,并且其中,确定是否发生了所述安全事件包括:基于所述计算装置的中止状态寄存器来确定所述事务性中止的原因。

示例10包括示例1-9中的任一个的主题,并且其中,执行所述安全操作包括:报告所述安全事件。

示例11包括示例1-10中的任一个的主题,并且其中,执行所述安全操作包括:暂停所述计算装置。

示例12包括示例1-11中的任一个的主题,并且其中,所述安全协助模块还用于响应于确定未发生安全事件而通过所述安全协助线程重启所述事务。

示例13包括示例1-12中的任一个的主题,并且其中,所述安全模块还用于响应于检测到所述事务性中止而启动第二安全协助线程;并且所述安全协助线程模块还用于:通过所述计算装置的所述第二安全协助线程使用所述计算装置的所述处理器的事务性内存支持启动第二事务;并且响应于所述第二事务的启动,通过所述第二安全协助线程对所述被监视内存位置进行写入。

示例14包括一种用于检测未授权内存访问的方法,该方法包括以下步骤:通过所述计算装置的安全协助线程使用所述计算装置的处理器的事务性内存支持启动事务;响应于启动所述事务,通过所述安全协助线程对被监视内存位置进行写入;响应于对所述被监视内存位置的写入,通过所述计算装置检测所述事务的事务性中止,其中,所述事务性中止由所述被监视内存位置的读取引起,并且其中,所述读取从所述事务外部产生;响应于检测到所述事务性中止,通过所述计算装置确定是否发生了安全事件;以及响应于确定发生了安全事件,通过所述计算装置执行安全操作。

示例15包括示例14的主题,并且还包括通过所述计算装置启动所述安全协助线程;其中,启动所述事务的步骤包括:响应于启动所述安全协助线程而启动所述事务。

示例16包括示例14和15中的任一个的主题,并且其中,所述被监视内存位置包括内存映射操作系统库的一部分。

示例17包括示例14-16中的任一个的主题,并且其中,所述被监视内存位置包括可执行映像的一部分。

示例18包括示例14-17中的任一个的主题,并且其中,所述被监视内存位置包括操作系统内核数据结构的一部分。

示例19包括示例14-18中的任一个的主题,并且其中,检测所述事务性中止的步骤包括:通过所述安全协助线程等待,而不响应于对所述被监视内存位置的写入提交所述事务。

示例20包括示例14-19中的任一个的主题,并且还包括:响应于检测到所述事务性中止,通过所述计算装置执行事务性中止处理程序,其中,执行所述事务性中止处理程序的步骤包括:确定是否发生了所述安全事件。

示例21包括示例14-20中的任一个的主题,并且其中,确定是否发生了所述安全事件的步骤包括:比较从所述计算装置的性能监视单元检索的冲突数据位置的第一内存地址与所述被监视内存位置的第二内存地址。

示例22包括示例14-21中的任一个的主题,并且其中,确定是否发生了所述安全事件的步骤包括:基于所述计算装置的中止状态寄存器来确定所述事务性中止的原因。

示例23包括示例14-22中的任一个的主题,并且其中,执行所述安全操作的步骤包括:报告所述安全事件。

示例24包括示例14-23中的任一个的主题,并且其中,执行所述安全操作的步骤包括:暂停所述计算装置。

示例25包括示例14-24中的任一个的主题,并且还包括:响应于确定未发生安全事件而通过所述安全协助线程重启所述事务。

示例26包括示例14-25中的任一个的主题,并且还包括:响应于检测到所述事务性中止,通过所述计算装置启动第二安全协助线程;通过所述计算装置的所述第二安全协助线程使用所述计算装置的所述处理器的事务性内存支持启动第二事务;并且响应于启动所述第二事务,通过所述第二安全协助线程对所述被监视内存位置进行写入。

示例27包括一种计算装置,该计算装置包括:处理器;和内存,该内存中存储有多个指令,该指令在通过所述处理器执行时,使所述计算装置执行示例14-26中的任一个所述的方法。

示例28包括一种或更多种机器可读存储介质,该机器可读存储介质中存储有多个指令,该指令响应于被执行而导致计算装置执行示例14-26中的任一个所述的方法。

示例29包括一种计算装置,该计算装置包括用于执行示例14-26中的任一个所述的方法的装置。

示例30包括一种用于检测未授权内存访问的计算装置,该计算装置包括:用于通过所述计算装置的安全协助线程使用所述计算装置的处理器的事务性内存支持启动事务的装置;用于响应于启动所述事务,通过所述安全协助线程对被监视内存位置进行写入的装置;用于响应于对所述被监视内存位置的写入来检测所述事务的事务性中止的装置,其中,所述事务性中止由所述被监视内存位置的读取引起,并且其中,所述读取从所述事务外部产生;用于响应于检测到所述事务性中止来确定是否发生了安全事件的装置;以及用于响应于确定发生了安全事件来执行安全操作的装置。

示例31包括示例30的主题,并且还包括用于启动所述安全协助线程的装置;其中,用于启动所述事务的装置包括用于响应于启动所述安全协助线程而启动所述事务的装置。

示例32包括示例30和31中的任一个的主题,并且其中,所述被监视内存位置包括内存映射操作系统库的一部分。

示例33包括示例30-32中的任一个的主题,并且其中,所述被监视内存位置包括可执行映像的一部分。

示例34包括示例30-33中的任一个的主题,并且其中,所述被监视内存位置包括操作系统内核数据结构的一部分。

示例35包括示例30-34中的任一个的主题,并且其中,用于检测所述事务性中止的装置包括用于通过安全协助线程等待而不响应于对所述被监视内存位置的写入而提交所述事务的装置。

示例36包括示例30-35中的任一个的主题,并且还包括用于响应于检测到所述事务性中止来执行事务性中止处理程序的装置,其中,用于执行所述事务性中止处理程序的装置包括用于确定是否发生了所述安全事件的装置。

示例37包括示例30-36中的任一个的主题,并且其中,用于确定是否发生了所述安全事件的装置包括:用于比较从所述计算装置的性能监视单元检索的冲突数据位置的第一内存地址与所述被监视内存位置的第二内存地址的装置。

示例38包括示例30-37中的任一个的主题,并且其中,用于确定是否发生了所述安全事件的装置包括:用于基于所述计算装置的中止状态寄存器来确定所述事务性中止的原因的装置。

示例39包括示例30-38中的任一个的主题,并且其中,用于执行所述安全操作的装置包括用于报告所述安全事件的装置。

示例40包括示例30-39中的任一个的主题,并且其中,用于执行所述安全操作的装置包括用于暂停所述计算装置的装置。

示例41包括示例30-40中的任一个的主题,并且还包括用于响应于确定未发生安全事件而通过所述安全协助线程重启所述事务的装置。

示例42包括示例30-41中的任一个的主题,并且还包括:用于响应于检测到所述事务性中止来启动第二安全协助线程的装置;用于通过所述计算装置的所述第二安全协助线程使用所述计算装置的所述处理器的事务性内存支持启动第二事务的装置;并且用于响应于启动所述第二事务通过所述第二安全协助线程对所述被监视内存位置进行写入的装置。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号