用于增加计算机安全的方法和系统与流程

文档序号:11432513阅读:157来源:国知局
用于增加计算机安全的方法和系统与流程

分案说明

本申请属于申请日为2012年10月16日的中国发明专利申请201280061783.3的分案申请。



背景技术:

本说明书涉及计算机安全。

计算机系统可能受到敌对软件应用或进程(例如恶意软件、病毒等)的危害。敌对软件应用可能促使操作系统内核向由敌对软件应用指定的存储器位置写入数据。例如,敌对软件应用能够利用与操作系统相关联的缺陷和/或弱点并促使操作系统内核修改与内核相关联的指令(例如,插入允许用户或其他软件避开安全措施或准许用户或软件的不适当访问的后门)。作为另一示例,敌对软件应用能够促使操作系统内核修改存储于中央处理单元(cpu)或操作系统所使用的各种数据结构或表(例如,中断描述符表、全局描述符表等)中的数据。另外,敌对软件应用能够利用与操作系统相关联的缺陷和/或弱点使用与cpu相关联的命令来确定与cpu或操作系统相关联的资源(例如中断描述符表或全局描述符表)的位置。例如,敌对软件应用能够使用sidt指令来促使cpu提供中断描述符表的地址。



技术实现要素:

本说明书描述了涉及用于改善计算机安全的防御技术的技术。该系统能够将描述符表(例如中断描述符表或全局描述符表)初始化并将描述符表映射到不同的存储器位置。能够使描述符表的一个映射与读写许可相关联,并且能够使描述符表的第二映射与只读许可相关联。系统能够将只读描述符表(例如第二映射)的地址提供给cpu。当cpu接收到用以返回描述符表的值的命令时,cpu能够提供只读描述符表的地址。当操作系统内核接收有效指令以更新描述符表(例如,来自可信进程或来自操作系统的指令,与来自敌对软件应用的指令相反)时,操作系统内核能够访问描述符表并更新描述符表的值。

一般地,能够在包括以下动作的方法中体现在本说明书中描述的本主题的一个创新方面:将第一描述符表和描述符表的第二映射初始化,其中,描述符表的第一映射与第一许可水平相关联,并且其中描述符表的第二映射与不同于第一许可水平的第二许可水平相关联,并且其中,第一描述符表和第二描述符表与硬件处理器相关联并被操作系统内核初始化;响应于描述符表地址请求,提供与第一描述符表相关联的存储器地址,其中,描述符表地址请求由软件进程提供;以及响应于更新请求,更新第二描述符表。

能够在包括以下动作的方法中体现包括在本说明书中描述的本主题的另一创新方面:将描述符表初始化,其中,该描述符表被操作系统内核初始化并与硬件处理器相关联;将与描述符表相关联的许可水平变成第一许可水平;以及响应于更新请求,将与描述符表相关联的许可水平变成第二许可水平,其中,第二许可水平大于第一许可水平;在描述符表与第二许可水平相关联时更新描述符表,其中,该更新基于更新请求;以及在更新描述符表之后,将与描述符表相关联的许可水平变成第一许可水平,其中,操作系统内核改变与描述符表相关联的许可水平。

能够将在本说明书中描述的主题的特定实施例实现为实现以下优点中的一个或多个。例如,能够通过防止敌对软件应用或恶意软件访问或修改cpu和/或os内核所使用的数据结构(例如,中断描述符表和全局描述符表)来增加网络和计算机安全。另外,能够更容易地调试操作系统,因为能够减少或防止描述符表的非有意的覆写。

在下面的附图和描述中阐述了在本说明书中描述的主题的一个或多个实施例的细节。根据描述、附图和权利要求,主题的其他特征、方面以及优点将变得显而易见。

附图说明

图1图示了用以改善计算机安全的示例性系统。

图2是用于改善计算机安全的示例性过程的流程图。

图3是用于改善计算机安全的示例性过程的流程图。

各种图中的相同附图标记和命名指示相同的元件。

具体实施方式

图1图示了用于改善计算机安全的示例性系统100。

系统100包括cpu102、描述符表寄存器104、描述符表106、描述符表的第一映射107、别名描述符表108、存储器图(memorymap)110、操作系统内核112和软件进程114。cpu102可以是各种类型的计算机处理器。例如,cpu102可以是x86处理器、x86兼容处理器或x86处理器的64位后代(例如,intelcore2或amdopteron)。可以使用其他cpu。

cpu102可以包括存储关联描述符表106的存储器地址的描述符表寄存器104(“dt寄存器”)。例如,cpu102可以包括存储中断描述符表的存储器地址的中断描述符表寄存器。虽然图1图示了单个dt寄存器104,但cpu102能够包括对应于各种描述符表106的多个dt寄存器104。例如,除中断描述符表寄存器之外,cpu102能够包括存储与全局描述符表相关联的存储器地址的全局描述符表寄存器。dt寄存器104能够存储物理存储器地址或虚拟存储器地址。

能够由操作系统内核112将存储在dt寄存器104中的值编程。例如,在系统100的初始化(例如,启动时间)期间,操作系统内核112能够存储与别名描述符表108相关联的存储器地址(例如,虚拟存储器地址)。在某些实施方式中,能够在除初始化之外的时间将存储在dt寄存器104中的值编程。

存储器图110可以是与cpu102相关联的描述存储器被如何组织的存储器管理模块(例如,虚拟存储器图)。例如,存储器图110能够包括描述存储器大小、为操作系统使用预留的存储器区域和/或能够被软件进程114使用或访问的存储器区域的信息。另外,能够使用存储器图110来指定存储器地址与只读许可或读写许可相关联。例如,操作系统内核112能够修改存储器图110以改变与描述符表106或别名描述符表108相关联的许可。另外,存储器图110能够被cpu102或与cpu102相关联的存储器管理器用来解释到物理存储器地址的逻辑/虚拟存储器地址。

描述符表106能够包括例如与各种软件例程或数据结构相关联的存储器地址、存储器段描述符、用于改变与cpu相关联的特权水平的机制(例如,“调用门”)及其他数据。例如,描述符表106可以是能够用来实现中断矢量表的中断描述符表。在某些实施方式中,中断描述符表包括与中断处理机(handler)相关联的存储器地址,该中断处理机可以是随着软件进程或例程被触发而处理中断(例如,硬件中断、软件中断和/或处理器异常(共同地称为“中断”))的软件进程或例程。例如,中断描述符表能够将与中断处理机(“to_int_handler”)相关联的存储器地址存储在与定时器中断相对应的表内的位置上。当定时器中断被触发时,操作系统能够访问中断描述符表并确定应响应于定时器中断而执行to_int_handler。

使用存储器图110,能够使描述符表106与各种许可水平相关联。例如,描述符表106可以具有防止描述符表106和存储在描述符表106中的值被修改的只读许可。另外,描述符表106可以具有允许描述符表106和存储在描述符表106中的值被修改的读写许可。与描述符表106相关联的许可水平能够被操作系统内核112修改。例如,操作系统内核112能够使用存储器图110来将描述符表106的许可从读写变成只读。

描述符表106可以位于各种物理存储器地址处。例如,描述符表106可以是由操作系统内核112或cpu102在随机存储器地址处创建的。另外,可以在固定的存储器地址处创建描述符表106。另外,可以由存储器图110(例如,映射描述符表107)将描述符表106从物理存储器位置映射到虚拟存储器位置。映射描述符表107能够指回到描述符表106,并且包括在映射描述符表107中的值能够反映包括在描述符表106中的值。例如,如果包括在描述符表106中的值改变,则映射描述符表107也被更新以反映已改变值。

能够使用存储器图110(例如,别名描述符表108)将描述符表106映射到第二地址。例如,能够将描述符表106映射到指向与描述符表106相关联的物理存储器地址的第二虚拟地址。类似于映射描述符表107,包括在别名描述符表108中的值能够反映包括在描述符表106(和映射描述符表107)中的值。

能够使描述符表106、映射描述符表107和别名描述符表108与不同许可相关联。例如,能够使描述符表106和映射描述符表107与读写许可相关联,并且能够使别名描述符表108与只读许可相关联。另外,与描述符表106、映射描述符表107和别名描述符表108相关联的许可水平能够被操作系统内核112修改。例如,操作系统内核112能够将与别名描述符表108相关联的许可水平设置成只读,并且能够将与描述符表106相关联的许可水平设置成读写。别名描述符表108能够被cpu和/或操作系统内核112访问。在某些实施方式中,系统100不包括映射描述符表107和/或别名描述符表108。

cpu102能够包括促使其提供描述符表106的存储器地址的指令。例如,cpu102能够包括促使其返回存储在dt寄存器104中的值的指令(例如,sdt指令)。在某些实施方式中,sdt指令可以是返回与中断描述符表相关联的存储器地址的存储中断描述符表指令(sidt)或返回与全局描述符表相关联的存储器地址的存储全局描述符表指令(sgdt)。该指令能够被操作系统内核112使用。软件应用或进程114能够利用操作系统中的缺陷或弱点并促使操作系统内核112发布sdt指令。

操作系统内核112可以是任何适当类型的操作系统内核。操作系统内核112能够管理cpu的资源和/或与系统100相关联的其他硬件资源。操作系统内核112能够与在系统100上执行的软件进程114相交互。例如,操作系统内核112能够从软件进程114接收指令并代表软件进程114与cpu102和/或与系统100相关联的硬件资源相交互(例如,与数据端口或外围设备交换数据)。

软件进程114可以是与操作系统内核112相交互的一个或多个软件应用或进程。在某些实施方式中,软件进程114能够促使cpu102提供与描述符表106相关联的存储器地址。例如,软件进程114使用sidt指令来促使cpu102返回存储在dt寄存器104中的与中断描述符表相关联的值。

图2是用于改善计算机安全的示例性过程200的流程图。过程200通过创建描述符表并将其初始化开始(在202处)。例如,当cpu102被初始化(例如,在启动时间)时,操作系统内核112或与操作系统内核112相关联的固件能够创建描述符表106并将其初始化。固件或操作系统内核112将描述符表106的值更新成包括与当中断被触发时执行的软件例程(例如,“中断处理机”)相关联的存储器位置。操作系统内核112能够将描述符表106映射到第一虚拟存储器地址(例如,映射描述符表107)。操作系统内核112能够创建被初始化的描述符表106(例如,别名描述符表108)的第二映射。操作系统内核112能够将映射描述符表107和别名描述符表108定位于不同的虚拟存储器地址处。例如,操作系统内核能够使用存储器图110将映射描述符表107定位于第一虚拟存储器地址处,并将别名描述符表108映射在不同于第一虚拟存储器地址的第二虚拟存储器地址处。在某些实施方式中,操作系统内核112在随机存储器位置处创建映射描述符表107和别名描述符表108。在某些实施方式中,不包括且不使用映射描述符表107。

与描述符表相关联的许可水平被更新(在203处)。例如,操作系统内核112能够将与别名描述符表108相关联的许可水平设置成是只读的,并且将与描述符表106和映射描述符表107相关联的许可水平设置成是读写的。在某些实施方式中,操作系统内核112使用存储器图110来设置与描述符表106、映射描述符表107和别名描述符表108相关联的许可水平。

操作系统内核更新dt寄存器(在204处)。例如,操作系统内核112能够更新dt寄存器104以存储与别名描述符表108相关联的存储器地址(例如,与别名描述符表108相关联的虚拟存储器地址)。

过程100能够通过接收用于返回与描述符表相关联的存储器地址的指令来继续(在206处)。例如,cpu102能够从操作系统内核112或软件应用114接收sdt指令。在某些实施方式中,sdt指令是sidt指令或sgdt指令。

响应于该指令,cpu返回存储在dt寄存器中的存储器地址(在208处)。例如,响应于sdt指令,cpu102能够提供与别名描述符表108相关联的存储器地址,其在204处被存储在dt寄存器104中。虽然别名描述符表108的存储器地址被cpu102返回,但敌对软件应用114不能利用此信息,因为别名描述符表108与只读许可相关联。如果敌对软件应用114尝试使用在208处返回的别名描述符表108的存储器地址来向描述符表106中写入数据,则操作系统内核112或存储器图110生成错误(例如,许可错误),并防止敌对软件应用向描述符表106中写入数据。因此,敌对软件应用不能修改描述符表106的值或内容。

替换地,过程200能够接收用于更新存储在描述符表中的数据的指令(在210处)。例如,操作系统内核112能够接收应更新描述符表106的指令。在某些实施方式中,操作系统内核112能够从操作系统功能(例如,硬件管理器)接收用以更新描述符表的指令。

响应于该指令,操作系统内核能够更新描述符表(在212处)。例如,操作系统内核112能够访问与读写许可相关联的映射描述符表107,并更新与映射描述符表107中的特定条目相关联的值。由于映射描述符表107是描述符表106的映射,所以包括在描述符表106和别名描述符表108中的值被更新。在某些实施方式中,操作系统内核112访问描述符表106并更新描述符表106中的值。

图3是用于改善计算机安全的示例性过程300的流程图。过程300通过将描述符表初始化而开始(在302处)。例如,操作系统内核112能够创建描述符表106(例如,中断描述符表或全局描述符表)并将描述符表106初始化成包括适当的数据值(例如,与中断管理机相关联的存储器地址或与各种存储器段相关联的特性)。在某些实施方式中,操作系统112在启动时间将描述符表106初始化。操作系统共内核112能够将与描述符表106相关联的许可变成是只读的。

操作系统内核112能够更新dt寄存器(在303处)。例如,操作系统内核112能够将与描述符表106相关联的存储器地址存储在dt寄存器104中。

过程300能够通过接收用于提供与描述符表相关联的存储器地址的指令来继续(在304处)。例如,cpu102能够从操作系统内核112或软件应用114接收sdt指令。在某些实施方式中,sdt指令是sidt指令或sgdt指令。响应于该指令,cpu返回存储在dt寄存器中的存储器地址(例如,描述符表106的存储器地址)(在306)处。虽然描述符表106的存储器地址被cpu102返回,但敌对软件应用114不能利用此信息,因为描述符表106与只读许可相关联。如果敌对软件应用114尝试向描述符表106中写入数据,则操作系统内核112或存储器图110生成许可错误。因此,敌对软件应用不能修改描述符表106的值或内容。

替选地,过程300能够接收用于更新存储在描述符表中的数据的指令(在308处)。例如,操作系统内核112能够接收应更新描述符表106的指令。在某些实施方式中,操作系统内核112能够从操作系统功能(例如,硬件管理器)接收指令。

响应于该指令,操作系统系统能够改变与描述符表相关联的许可水平(在310处)。例如,操作系统内核112能够将与描述符表106相关联的许可水平从只读变成读写。

在与描述符表相关联的许可水平已被更新之后,能够更新描述符表(在312处)。例如,操作系统内核112能够更新与描述符表112中的特定条目相关联的值。在描述符表被更新之后,能够改变与描述符表相关联的许可水平(在314处)。例如,在描述符表106已被更新成包括新值之后,操作系统内核能够将与描述符表相关联的许可水平变成只读的。

在本说明书中描述的主题和操作的实施例能够用数字电子电路、或用计算机软件、固件或硬件、包括在本说明书中公开的结构及其结构等效物或用其中的一个或多个的组合来实现。在本说明书中描述的主题的实施例能够被实现为一个或多个计算机程序,即在计算机存储介质上编码以便由数据处理设备执行或控制其操作的计算机程序指令的一个或多个模块。替选地或另外,能够将程序指令编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,其被生成为对信息进行编码以便向适当的接收设备传输以便由数据处理设备执行。计算机存储介质可以是计算机可读存储器件、计算机可读存储基板、随机或串行存取存储器阵列或器件或其中的一个或多个的组合,或被包括在其中。此外,虽然计算机存储介质不是传播信号,但计算机存储介质可以是在人工生成的传播信号中编码的计算机程序指令的源或目的地。计算机存储介质还可以是一个或多个单独物理组件或介质(例如,多个cd、盘或其他存储设备)或被包括在其中。

能够将本说明书中描述的操作实现为由数据处理设备对存储在一个或多个计算机可读存储器件上或从其他源接收到的数据执行的操作。

术语“数据处理设备”涵盖用于处理数据的大量设备、器件以及机器,举例来说包括可编程处理器、计算机、片上系统或者前述中的多个或组合。该设备可以包括专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。除硬件之外,该设备还可以包括为正在讨论中的计算机程序创建执行环境的代码,例如,组成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行环境、虚拟机或其中的一个或多个的组合的代码。该设备和执行环境能够实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。

能够用任何形式的编程语言来编写计算机程序(也称为程序、软件、软件应用、脚本或代码),包括编译或解释语言、声明或过程语言,并且其能够以任何形式来部署,包括作为独立程序或作为模块、组件、子程序、对象或适合于在计算环境中使用的其他单元。计算机程序可以但不需要对应于文件系统中的文件。能够将程序存储在保持其他程序或数据的文件的一部分(例如存储在标记语言文档中的一个或多个脚本)中、专用于正在讨论中的程序的单个文件中或者在多个协调文件(例如存储一个或多个模块、子程序或代码部分的文件)中。能够将计算机程序部署成在一个计算机上或在位于一个地点处或跨多个地点分布并被通信网络互连的多个计算机上执行。

在本说明书中所述的过程和逻辑流程能够由一个或多个可编程处理器来执行,其执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行动作。该过程和逻辑流程还能够由专用逻辑电路来执行,或者还能够将所述装置实现为专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。

适合于执行计算机程序的处理器举例来说包括通用和专用两种微处理器以及任何种类的数字计算机的任何一个或多个处理器。一般地,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必需元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器件。一般地,计算机还将包括用于存储数据的一个或多个大容量存储器件,或者被操作地耦合到该一个或多个大容量存储器件以从其接收数据或向其传输数据或两者,大容量存储器件例如磁盘、磁光盘或光盘。然而,计算机不需要具有此类设备。此外,能够将计算机嵌入另一设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收机或便携式存储设备,例如通用串行总线(usb)闪速驱动,仅举几个例子。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器件,举例来说,包括半导体存储器件,例如eprom、eeprom以及闪速存储器件;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及cd-rom和dvd-rom磁盘。能够用专用逻辑电路来补充处理器和存储器或将处理器和存储器结合在其中。

为了提供与用户的交互,能够在计算机上实现在本说明书中描述的主题的实施例,该计算机具有用于向用户显示信息的显示设备,例如crt(阴极射线管)、或lcd(液晶显示器)监视器,以及键盘和指示设备,例如鼠标或轨迹球,用户能够用其向计算机提供输入。也能够使用其他种类的设备来提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感知反馈,例如视觉反馈、听觉反馈或触觉反馈;并且能够以任何形式来接收来自用户的输入,包括声学、语音或触觉输入。另外,计算机能够通过向用户所使用的设备发送文档和从其接收文档来与用户相交互;例如,通过响应于从web浏览器接收到的请求而在用户的客户端设备上将网页发送到web浏览器。

在本说明书中描述的主题的实施例能够在计算系统中实现,其包括后端组件,例如作为数据服务器,或者其包括中间件组件,例如应用服务器,或者其包括前端组件,例如具有用户能够通过其与在本说明书中描述的主题的实施方式相交互的图形用户接口或web浏览器的客户端计算机,或者一个或多个此类后端、中间件或前端组件的任何组合。能够用例如通信网络的任何形式或介质的数字数据通信来将系统的组件互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)、互联网(例如,因特网)以及端对端网络(例如,自组端对端网络)。

能够将一个或多个计算机的系统配置成借助于使在操作中促使系统执行动作的软件、固件、硬件或其组合被安装于系统上来执行特定操作或动作。能够将一个或多个计算机程序配置成借助于包括当被数据处理设备执行时促使该设备执行动作的指令来执行特定操作或动作。

计算系统能够包括客户端和服务器。客户端和服务器一般地相互远离且通常通过通信网络相交互。客户端和服务器的关系借助于在相应计算机上运行且相互之间具有客户端-服务器关系的计算机程序而产生。在某些实施例中,服务器向客户端设备发送数据(例如,html页面)(例如,出于向与客户端设备相交互的用户显示数据并从该用户接收用户输入的目的)。能够在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。

虽然本说明书包含许多特定实现细节,但不应将这些理解为对任何发明的范围或对可要求保护的范围的限制,而是作为对于特定发明的特定实施例而言特定的特征的描述。在本说明书中在单独实施例的背景下描述的某些特征还能够在单个实施例中以组合方式实现。相反地,在单个实施例的背景下描述的各种特征还能够单独地或以任何适当的子组合的方式在多个实施例中实现。

此外,虽然上文已将特征描述为以某些组合的方式起作用且甚至最初要求这样,但在某些情况下可从该组合去除来自要求保护的组合的一个或多个特征,并且要求保护的组合可针对子组合或子组合的变体。

类似地,虽然在图中按照特定顺序描述了操作,但不应将这理解为要求按照所示的特定顺序或相继顺序来执行此类操作,或者执行所有所示操作,才能实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,不应将上述实施例中的各种系统组件的分离理解为在所有实施例例中要求此类分离,并且应理解的是一般地能够将所述程序组件和系统一起集成在单个软件产品中或封装到多个软件产品中。

因此,已描述了主题的特定实施例。其他实施例在以下权利要求的范围内。在某些情况下,在权利要求中记载的动作能够按照不同的顺序来执行且仍实现期望的结果。另外,在附图中描述的过程不一定要求所示的特定顺序或相继顺序才能实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1