受限进程中的文件转换
背景
对软件开发者而言,处理诸如病毒和特洛伊木马等恶意代码是不变的关切。一旦知道了应用程序或文件格式中的漏洞,则黑客通常利用这些漏洞。在漏洞普遍为人所知的同一天利用该已知漏洞的恶意代码被称为零天非法利用。迄今,几乎没有有效地处理零天非法利用的解决方案。
由于零天非法利用中可传播恶意代码的速度,开发者没有足够的时间来实现处理该漏洞的补丁或其它解决方案。通常,可用的唯一解决方案是通过鼓励用户遵循诸如关闭不需要的服务、保持补丁等级最新以及避免打开来自未知或非预期的源的附件等安全最佳实践来减少打开恶意代码的可能。一旦知道了一个漏洞,用户可以避免打开受该漏洞影响的文件。然而,在用户必须访问该文件的情况下,这并不提供适当的解决方案。
此外,当前可用的用于搜索并消除恶意代码的软件应用程序(例如,反病毒软件)必须具有该恶意代码或被非法利用的漏洞的某些先验知识。例如,某些应用程序搜索文档以寻找先前被标识为恶意的代码。其它应用程序需要关于漏洞的知识,如应被搜索来寻找异常代码的结构中的特定字段。这些方法中的每一个都需要(代码或漏洞的)先验知识。在零天非法利用中,将不知道漏洞,并且黑客一般创建将不被标识为恶意的新代码。这使当前可用软件应用程序对零天非法利用无效。
本发明的各实施例正是对于这些和其它考虑事项而做出的。同样,虽然讨论了相对具体的问题,但应当理解,本发明的各实施例不应被限于解决本背景中所标识的具体问题。
概述
提供本概述来以简化形式介绍将在以下详细描述部分中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
描述了用于通过将处于第一文件格式的文件转换成处于第二文件格式的经转换的文件来从该文件中移除恶意代码或使其无效的各实施例。在各实施例中,在将文件转换成经转换的文件期间,移除该文件中包含的恶意代码或使其无效。转换由被加载到受限计算机进程内的转换器来执行。该计算机进程具有限制其对底层操作系统和计算机系统的访问的受限特权。因此,由于嵌入在文件中的恶意代码被加载到受限进程中,所以即使其设法在转换期间执行,它也在其能够造成的损害上受到限制。
各实施例可被实现为计算机进程、计算系统、或者诸如计算机程序产品或计算机可读介质等制品。计算机程序产品可以是计算机系统可读并编码用于执行计算机进程的指令的计算机程序的计算机存储介质。计算机程序产品也可以是计算系统可读并编码用于执行计算机进程的指令的计算机程序的载波上的传播信号。
附图简述
参考附图描述了非限制性的和非穷尽的实施例,其中除非另外指定,否则在各个视图中相同的附图标记指示相同的部分。
图1示出根据一实施例的用于从文件中移除恶意代码或使其无效的系统。
图2示出根据一实施例的可被用来安全地打开可包含恶意代码的文件的系统。
图3示出用于从文件移除恶意代码或致其无效的操作流程。
图4示出用于安全地打开可包含恶意代码的文件的操作流程。
图5示出用于安全地打开可包含恶意代码的文件的第二操作流程。
图6示出适于实现各实施例的计算环境的框图。
详细描述
以下将参考附图来更详尽地描述各实施例,附图形成本发明的一部分,并示出用于实践本发明的具体实施例。然而,各实施例可被实现为许多不同的形式并且不应被解释为被限于此处描述的各实施例;相反,提供这些实施例以使得本公开变得透彻和完整,并且将本发明的范围完全传达给本领域技术人员。各实施例可被实践为方法、系统或设备。因此,这些实施例可采用硬件实现形式、完全软件实现形式或者结合软件和硬件方面的实现形式。因此,以下详细描述并非是局限性的。
各实施例的逻辑操作被实现为(1)在计算系统上运行的计算机实现的步骤的序列,和/或(2)计算系统内部的互连的机器模块。实现是取决于实现实施例的计算系统的性能需求的选择。因此,组成在此描述的这些实施例的逻辑操作另外还可被称为操作、步骤或模块。
如所简述的,各实施例针对通过将第一文件格式的文件转换成第二文件格式来从该文件中移除恶意代码或使其无效。恶意代码可在没有关于该代码或被用来携带该代码的漏洞的任何先验知识的情况下被移除或致其无效。转换由被加载到受限计算机进程内的转换器来执行。该计算机进程具有限制其对底层操作系统和计算机系统的访问的受限特权。因此,由于受限的访问,所以即使嵌入在文件中的恶意代码设法在转换期间执行,它也在其能够造成的损害上受到限制。在本申请中,术语“恶意代码”旨在是宽泛的,并且包括出于未授权的目的而包括在文件或应用程序中的软件。恶意代码的示例包括病毒、蠕虫、特洛伊木马、以及其它不需要的软件。
图1示出根据一实施例的被用来安全地打开可包含恶意代码的文件的系统100。在该实施例中,系统100包括具有注册表112的操作系统102、应用程序104、转换器106和文件110。文件110包括数据110A和文件扩展名110B(例如,作为文件名的一部分)。此外,根据该实施例,应用程序104包括阻塞策略114。在某些实施例中,阻塞策略114指示阻塞哪些类型的文件(即文件格式)被应用程序104打开。另外,阻塞策略114还可以指示阻塞哪些文件类型被保存。阻塞策略及其在阻塞文件的打开和/或保存时的使用在与本申请在同一日提交且共有的、题为“FILE BLOCKINGMITIGATION(文件阻塞减轻)”的美国专利申请第11/679048号中详细讨论,该申请通过引用整体结合与此。
转换器106被用来将文件从第一文件格式转换成第二文件格式。将文件从第一文件格式转换成第二文件格式移除可嵌入在文件中的恶意代码或致其无效。转换器106可以与操作系统102通信,以用于诸如访问操作系统功能等目的。在图1所示的实施例中,转换器106被加载到受限进程120中,以便从第一文件格式到第二文件格式的文件转换在受限进程120中执行。受限进程120具有对操作系统102以及对操作系统102在其上执行的底层计算机系统的有限的访问特权。换言之,进程120具有有限的特权来请求操作系统功能。
现在参考应用程序104,其可以与操作系统102通信,以用于诸如访问操作系统功能等目的。在图1所示的实施例中,应用程序104不像转换器106一样在受限进程内,并且因此具有更大的特权来请求操作系统功能。另外,应用程序104可以打开、编辑、保存、和/或创建文件。在图1所示的实施例中,应用程序104正与文件110交互。作为一个示例,应用程序104可以是文字处理应用程序。用户可以启动应用程序104并随后用应用程序104打开文件(例如文件110),应用程序104将文件110加载到存储器中并提供对该文件的访问。用户随后可以在文件110中添加并编辑数据(即数据110A)。应用程序104不限于特定类型的应用程序,而可以是任何种类的应用程序,如文字处理、电子表格、图形演示等。
在各实施例中,应用程序104还设置文件扩展名110B来指示文件110是特定的类型。例如,在该实施例中,文件扩展名110B是在文件110被“保存”或“另存为”时分配给该文件的文件名的一部分。例如,文字处理应用程序可以使文件(例如文本文档)具有文件扩展名“.doc”,以指示该文件是二进制文件格式。
诸如110B等文件扩展名有时被管理员用于在可能的恶意文件(即,具有可被非法利用来引入恶意代码的已知漏洞的文件)被网络接收之前检测或阻塞它们。例如,电子邮件服务器可被配置成检测并阻塞具有拥有特定文件扩展名的文件的所有电子邮件,同时允许具有拥有其它文件扩展名的文件的电子邮件进入电子邮件客户机网络。然而,因为文件扩展名可通过简单地用不同的扩展名来重命名文件而被容易地操纵,所以使用文件扩展名不是用于标识具有恶意代码的文件以防止将其引入网络的可信机制。此外,在文件进入网络之前阻塞该文件使正期望该文件的用户不知道该文件已被阻塞和/或该文件中存在安全问题。
在图1所示的实施例中,应用程序104包括类型检查器模块124。类型检查器模块124检查文件数据(例如110A)并确定文件的真实文件格式。在本申请中,术语“真实文件格式”用来描述文件的实际格式。作为一个示例,文字处理文档可具有文件格式*.doc;*.dot;或*.wiz。应当理解,在图1所示的实施例中,文件的真实文件格式不是通过检查诸如扩展名110B等文件扩展名来确定的。相反,类型检查器模块114检查例如110A等文件数据的一部分,并基于该检查来确定文件的真实文件格式。
在一个实施例中,类型检查器模块124从文件中读取前几字节的数据(即,嗅探该文件),并且基于诸如所检查的数据内的头部信息和数据结构等特征,类型检查器模块124可以确定文件的真实文件格式。在本申请中,真实文件格式是使用文件扩展名来描述的。例如,文件格式可被描述为*.doc;*.dot;和/或*.wiz。然而,将真实文件格式描述为文件扩展名不应与确定真实文件格式相混淆,后者不涉及检查文件扩展名。
在操作中,系统100首先启动应用程序,如应用程序104。应用程序104的启动可以通过用户请求启动应用程序104,例如通过在表示应用程序104的图标上双击来发生。另选地,用户可以通过例如在文件110的图标上双击来请求打开文件110。在这种情况下,操作系统102可以将文件扩展名110B与应用程序104相关联,并开始应用程序104的启动。
应用程序104在启动时加载配置信息。在某些实施例中,配置信息存储在操作系统102的注册表112中。在这些实施例中,在应用程序104启动时,其将从操作系统102请求配置信息,操作系统102将从注册表112中检索该信息。在一个实施例中,阻塞策略114作为配置信息存储在操作系统102的注册表内;例如以注册表键的形式。因此,在应用程序启动时,其将从注册表112检索阻塞策略114。
在某些实施例中,对阻塞策略114的访问被限于具有写/修改注册表112特权的那些用户,例如具有管理特权的用户。因此,管理员可以有效地控制被阻塞使用应用程序104打开或保存的文件格式。
一旦启动,应用程序104可被用来打开、编辑、以及保存文件。作为第一示例,在应用程序104尝试打开文件110时,类型检查器模块124首先检查数据110A的一部分以确定文件110的真实文件格式。如上所述,在一实施例中,类型检查器模块124通过检查数据110A的前几个字节来确定真实文件格式。类型检查器模块124可以使用数据110A内的头部信息或数据结构来作出关于文件110的真实文件格式的判定。一旦确定了文件110的真实文件格式,则应用程序104将该真实文件格式与阻塞策略114进行比较。如果文件110的真实文件格式未被阻塞策略114标识为阻塞打开,则应用程序104通过将文件110加载到存储器中并向用户提供文件访问以在文件110中添加、编辑、以及保存数据来打开该文件。
如果文件110的真实文件格式被阻塞策略114标识为阻塞打开,则应用程序104将阻塞文件110的打开。在一个实施例中,应用程序104向用户显示指示该文件是被阻塞打开的文件格式的消息。
在另一实施例中,响应于确定文件110被阻塞打开,可以启动转换器106来将该文件从其真实文件类型转换成未被阻塞打开的第二文件类型。在该实施例中,转换器106被加载到受限进程120中,并被用来将文件110转换成未被阻塞由应用程序104打开的第二文件。
在系统100的某些实施例中,管理员可以将转换器106设置为特定文件格式的文件的默认处理程序。在其中特定文件格式已被标识为易受攻击的零天非法利用的情况下,管理员可以通过将转换器106设置为该易受攻击格式的文件的默认处理程序来减轻对计算机系统或网络的可能损害。这减少了零天非法利用期间的损害的可能性,因为无论用户何时尝试打开以该易受攻击的文件格式存储的文件,转换器106都将被启动来将该文件转换成另一格式。如上所述,转换将消除恶意代码以免被转移/存储在经转换的文件中。此外,因为转换器106被加载到受限进程120中,所以确实执行的任何恶意代码将对计算机系统或网络具有有限的影响。
对于某些实施例,管理员可以通过为应用程序104设置阻塞策略来阻塞易受攻击格式的文件,而在零天非法利用期间采取附加预防措施。因此,结合将转换器106设置为默认处理程序,计算机系统或网络具有对可由易受攻击格式的文件中所包括的恶意代码引起的损害的稳健保护。
图2示出具有对转换器106的更详细的描绘的系统200。系统200包括处于第一文件格式(文件格式1)的文件202A、处于第二文件格式(文件格式2)的经转换的文件202B、和具有注册表112的操作系统102。在图2所示的实施例中,转换器106被加载到受限进程120中,以便从文件格式1到文件格式2的转换在受限进程120中执行。受限进程120具有对操作系统102以及对操作系统102在其上执行的底层计算机系统的有限的访问特权。这确保即使诸如恶意代码204等恶意代码执行,其也在它可对操作系统102和底层计算机系统造成的损害方面受到限制。图2示出转换器106的实施例的细节,转换器106将第一文件格式的文件202A转换成第二文件格式的经转换的文件202B,并且在该过程中从经转换的文件数据中移除恶意代码或使其无效。
在操作中,系统200首先启动转换器106。转换器106的启动可以通过用户请求启动转换器106,例如通过在表示转换器106的图标上双击来发生。另选地,用户可以通过例如在文件202A的图标上双击来请求打开文件202A。在这种情况下,操作系统102可以将文件202A(或其文件扩展名)与转换器106相关联,并开始转换器106的启动。
转换器106在启动时加载到受限进程120中。在启动时,转换器106可以从注册表112加载配置信息。该配置信息可包括指示限制进程120的特定机制的信息。进程120具有对操作系统102以及对操作系统102在其上执行的底层计算机系统的有限的访问特权。如本领域技术人员将理解的,施加在进程120上的特定限制和限制进程120的机制将取决于特定操作系统102以及根据诸如认为是文件202A所具有的风险等级等其它设计考虑而变化。
在某些实施例中,拒绝许可进程120执行特定操作和/或对操作系统102的特定功能进行调用。例如,拒绝许可进程120从操作系统102的注册表112读或向其写信息,因为注册表112存储各应用程序的敏感配置信息。然而,允许进程120从其它存储位置读或向其写数据。在其它实施例中,进程t20被限于只执行将文件从文件格式1转换成文件格式2所必需的那些功能。例如,进程120只被允许从被转换的文件(例如文件202A)中读数据,并用处于文件格式2的所转换的信息向经转换的文件(例如文件202B)写数据。
如上所述,限制进程120的机制将取决于特定操作系统102。在一个实施例中,操作系统102是提供多种方式来限制进程的访问特权的“WINDOWS”操作系统的某一版本。例如,在“WINDOWS”操作系统的各个版本中,每一进程都具有相关联的描述该进程的安全上下文的令牌,该进程的安全上下文包括该进程的系统级特权列表。通常描述受限安全上下文的访问令牌被称为受限令牌。受限令牌描述一组有限的系统级特权。在一个实施例中,进程120通过与描述一组有限的系统级特权的受限令牌相关联来限制。
在系统200的使用“WINDOWS”操作系统的某一版本的其它实施例中,进程120可以通过与作业对象相关联来限制。作业对象允许将各进程组作为一个单元来管理。作业对象控制与其相关联的进程的属性。作业对象可被用来对相关联的进程施加限制,如工作组大小、进程优先级、以及作业结束时间限制。在一实施例中,进程120通过与对进程120施加预定义限制的作业对象相关联来限制。
在其它实施例中,进程120可以使用桌面容器或窗口站来限制。“WINDOWS”操作系统的各个版本提供允许多个用户登录到窗口站的桌面容器。桌面容器是窗口站中所包含的安全容器对象。桌面容器是用户界面元素的逻辑集合,而该逻辑集合又包含在窗口站中,如“WINDOWS”操作系统的各个版本所实现的。在“WINDOWS”操作系统的各个版本中运行的进程之间的通信的某些方面是在这些进程是否被分配到同一桌面的基础上来管制的,并且在某些情况下,通信是通过这些进程是否共享同一窗口站来管制的。进程间通信可具有安全暗示,并且出于这一原因,在某些实施例中,受限进程120在分开的窗口站中运行(这暗示分开的桌面,因为所有桌面只有一个窗口站作为容器)。
在使用“WINDOWS”操作系统实现的系统200的各实施例中,进程120是使用受限令牌、作业对象、和窗口站/桌面容器的组合来限制的。使用这些机制中的两个或多个提供限制在文件202A从文件格式1到处于文件格式2的经转换的文件202B的转换期间在进程120中执行的恶意代码可造成的损害的稳健的安全性。在一个具体实施例中,进程120是使用受限令牌、作业对象、和桌面容器全部这三者来限制的。
在转换器106被加载到受限进程120中之后,转换器106将文件202A从文件格式1转换成处于文件格式2的经转换的文件202B。如上所述,转换器不知道可在文件202A内的恶意代码,它也不知道该漏洞。在各实施例中,转换器106使用解析器和引擎来转换文件202A。解析器解析该文件以提取数据,该数据由引擎表达为不同的文件格式,即文件格式2。新表达的数据被存储在经转换的文件202B中。在一实施例中,在解析文件202A的过程期间,解析器标识文件202A内的特征,如文件202A的头部信息和数据结构,其用这些特征来确定它会将什么数据传输到经转换的文件202B中。恶意代码204不包括转换器106用来确定要存储在经转换的文件202B中的数据的特征,并且因此未被包括在经转换的文件202B中。在转换器106的解析器解析恶意代码104时,其将不能识别将数据传输到文件202B所必需的特征。因此,恶意代码204将从传输到经转换的文件202B的文件数据中消除。经转换的文件202B随后可在受限进程120之外被安全地打开和访问。
在其它实施例中,恶意代码204可被传递到经转换的文件202B。在打开文件之前,应用程序通常使用解析器来扫描该文件。通常,诸如恶意代码204等恶意代码以被设计来打开特定文件格式的文件的解析器为目标。即,恶意代码104能以用于打开处于文件格式1的文件的解析器为目标。因此,即使恶意代码204被包括在经转换的文件202B中,它也将不能造成很大的安全威胁,因为经转换的文件202B将由被设计来打开文件格式2的文件的解析器来打开。因此,在各实施例中,简单地将处于文件格式1的文件202A转换成处于文件格式2的经转换的文件202B消除了恶意代码204的威胁,即使该代码被包括在经转换的文件202B中。
在某些情况下,在转换器106尝试转换文件202A时,恶意代码204可攻击转换器106。如上详细所述,转换器106在具有受限特权的受限进程120中运行。因此,即使恶意代码204设法在文件202A的转换期间成功执行,它也将在其可造成的损害方面受到限制。
在各实施例中,转换器106所执行的转换提供超过被特别设计来从文件中移除恶意代码的软件应用程序的优点。通常,被设计来移除恶意代码的那些应用程序必须具有某些知识,如要寻找以标识恶意代码的特征或要检查的可能易于存储恶意净荷的结构。与此相反,转换器106不知道恶意代码204,而是相反,仅仅恶意代码204不包含将数据从文件格式1转换成文件格式2所必需的特征的这一事实会将恶意代码204从传输到经转换的文件202B的数据中移除。此外,由于经转换的文件202B的新文件格式(例如文件格式2),所以即使恶意代码204被传输到经转换的文件202B,它也不造成严重的安全威胁。
在某些实施例中,转换器106是双向转换器,这意味着它可以将文件格式1转换成文件格式2,也可以将文件格式2转换回文件格式1。在一个实施例中,在转换器106生成了经转换的文件202B并移除了恶意代码以免被传输到经转换的文件202B之后,其将文件202B转换回文件格式1。在一个示例中,文件202A可以是被标识为具有安全漏洞的二进制文件格式(文件格式1)。结果,文件202A由转换器106转换成XML文件格式(文件格式2)的经转换的文件202B,这移除了恶意代码204或致其无效。然而,用户可能不具有能够打开处于XML格式的文件的应用程序。由此,文件202B随后被转换回二进制文件格式(文件格式1),以允许用户打开和访问该文件数据。
图3-5示出根据各实施例的操作流程300、400、和500。操作流程300、400、和500可在任何合适的计算环境中执行。例如,操作流程可以由诸如系统100和200(图1和图2)等系统来执行以从文件移除恶意代码并安全地打开该文件。因此,操作流程300、400、和500的描述可参考图1和图2的组件中的至少一个。然而,对图1和图2的组件的任何这类参考是仅出于描述性目的的,并且应当理解,图1和图2的实现是操作流程300、400、和500的非限制性环境。
此外,尽管以特定次序顺序地示出并描述了操作流程300、400、和500,但在其它实施例中,能以不同的顺序、多次和/或并行执行各个操作。此外,在某些实施例中,一个或多个操作可被省略或组合。
图3示出根据一个实施例的用于从文件移除恶意代码的操作流程300。在操作302处,将能够将文件从第一格式转换成第二格式的转换器加载到受限进程中。在各实施例中,该转换器是被加载到受限进程120(图1和图2)中的转换器106(图1和图2)。受限进程120具有有限的特权来访问操作系统,如操作系统102。施加在该进程上的限制局限了在转换器转换文件期间执行的恶意代码所造成的损害的概率。
操作302可以作为用户例如通过在表示该转换器的图标上双击而请求启动转换器的结果来启动。另选地,用户可以通过例如在特定文件的图标上双击来请求打开该文件,并且作为响应,操作302将通过将转换器加载到受限进程中来开始启动该转换器。
在转换器被加载到受限进程中之后,操作流程转到操作304,在此通过将文件从第一格式转换成第二格式来移除恶意代码。操作304是在受限进程内执行的。在一个实施例中,转换是由转换器106在受限进程120内执行的。如上所述,转换器106将解析处于第一文件格式的文件,并标识该文件中的用来从该文件提取数据的特征。所提取的数据随后被存储在处于第二文件格式的经转换的文件中。经转换的文件除去了可能嵌入在第一文件中的任何恶意代码。经转换的文件随后可在其限制比在转换文件时所使用的受限进程少的进程中安全地打开。
图4示出根据一个实施例的安全地打开文件来访问该文件中的数据的操作流程400。在操作402处,接收打开文件的请求。在一个实施例中,该请求是由诸如转换器106(图1和图2)等转换器接收的。例如,用户可以通过启动转换器并随后通过该转换器选择文件来尝试打开该文件。在另一实施例中,该请求是由诸如应用程序104(图1)等应用程序接收的。用户可以通过启动该应用程序并随后选择文件来尝试打开该文件。在某些实施例中,该请求是在用户如通过在该文件的图标上双击来选择文件时接收的。
操作流程随后转到操作404,在此将能够将文件从第一格式转换成第二格式的转换器加载到受限进程中。在各实施例中,该转换器是被加载到受限进程120(图1和图2)中的转换器106(图1和图2)。该受限进程具有有限的特权来请求来自操作系统的功能和访问底层计算机系统中的资源。这减轻了在进程120中执行的恶意代码可造成的损害。
在操作406处,转换器将文件从第一文件格式进行转换,以生成处于第二文件格式的第二文件。在各实施例中,转换文件的过程消除了可嵌入在文件中的任何恶意代码,以免被存储在第二文件中。恶意代码的消除是在不知道该恶意代码的情况下或不知道被该恶意代码非法利用的漏洞的情况下发生的。在其它实施例中,可以通过简单地将文件从第一文件格式转换成第二文件格式来致使该文件内的任何恶意代码无效。在各实施例中,该转换器是解析文件以从该文件中提取数据并存储在第二文件中的转换器106(图1和图2)。
在操作406之后,流程转到操作408,在此打开文件。在各实施例中,操作408涉及启动能够打开处于第二文件格式的经转换的文件并提供对该文件的访问的应用程序。在其它实施例中,操作408可涉及多个附加操作,如将经转换的文件进行第二次转换。例如,操作406中使用的转换器可以是可将文件从第一文件格式转换成第二文件格式并还可以将处于第二文件格式的文件转换成第一文件格式的双向转换器。在一个实施例中,操作408涉及使用转换器将处于第二文件格式的文件转换回原始的第一文件格式。在该操作之后可以启动能够打开处于第一文件格式的文件的应用程序。
在其它实施例中,可使用另一转换器来将文件从第二文件格式转换成第三文件格式。在该实施例中,操作408可以涉及启动将处于第二文件格式的文件转换成第三文件格式的第二转换器。在该操作之后,可以启动能够打开处于第三文件格式的文件并提供对该文件的访问的应用程序。
图5示出根据一个实施例的用于安全地打开文件的操作流程500。在操作502处,接收打开文件的请求。在一个实施例中,该请求是由诸如应用程序104(图1)等应用程序接收的。例如,用户可以启动应用程序并随后选择该文件。在某些实施例中,用户选择文件,这可以自动地启动适当的应用程序来打开该文件(或提示用户选择应用程序来打开该文件)。
在操作504处,检查来自该文件的文件数据以确定真实文件格式。在一个实施例中,在将该文件加载到存储器中之前,使用具有诸如类型检查器模块124(图1)等类型检查器模块的应用程序来检查文件数据。类型检查器模块所检查的文件数据只是该文件内的数据的一小部分。通过标识数据内的诸如头部信息和数据结构等特征,类型检查器模块可以做出关于真实文件格式的判定,而无需检查该文件内的全部或大部分数据。
在操作506处,做出关于文件的真实文件格式是否被阻塞打开的判定。在各实施例中,该判定是通过访问诸如阻塞策略114A(图1)等指示哪些文件格式已被阻塞打开的阻塞策略来做出的。在操作506处,如果做出真实文件格式未被阻塞的判定,则流程转到操作508,在此通过将文件加载到存储器中并提供对该文件的访问来打开该文件。例如,在一个实施例中,诸如应用程序104等应用程序通过将文件加载到存储器中并通过该应用程序向用户提供访问来执行操作508,以准许用户在该文件中编辑、添加、和保存数据。
在操作506处,如果做出文件的真实文件格式被阻塞打开的判定,则流程转到操作510。在操作510处,将能够将文件从第一格式转换成第二格式的转换器加载到受限进程中。在各实施例中,该转换器是被加载到受限进程120(图1和图2)中的转换器106(图1和图2)。该受限进程具有有限的特权来请求来自操作系统的功能和访问底层计算机系统中的资源。该有限的特权减轻了在进程120中执行的恶意代码可造成的损害。
在操作512处,被加载到受限进程中的转换器将文件从第一文件格式进行转换,以生成处于第二文件格式的第二文件。在某些实施例中,转换文件的过程消除了可嵌入在第一文件中的任何恶意代码,以免被包括在第二文件中。恶意代码的消除是在不知道该恶意代码的情况下或不知道被该恶意代码非法利用的漏洞的情况下发生的。在其它实施例中,简单地将文件从第一文件格式转换成第二文件格式消除了来自以用来打开处于第一文件格式的文件的解析器为目标的恶意代码的风险。在各实施例中,转换器是转换器106(图1和图2),其解析处于第一文件格式的文件并标识该文件内的用来从该文件提取数据的特征。所提取的数据随后被存储在处于第二文件格式的第二文件中。第二文件除去了可能嵌入在第一文件中的任何恶意代码。
在操作512之后,流程转到操作508,在此打开经转换的文件。在各实施例中,操作508涉及启动能够打开处于第二文件格式的经转换的文件并提供对该文件的访问的应用程序。在其它实施例中,操作508可涉及多个附加操作,如将经转换的文件进行第二次转换。
图6示出可用于实现此处所描述的各实施例的通用计算机环境600。计算机环境600仅是计算环境的一个示例,而非旨在对计算机和网络体系结构的使用范围或功能提出任何限制。计算机环境600也不应被解释成对于在示例计算机环境600中所示出的任一组件或其组合有任何依赖或要求。
在其最基本配置中,系统600通常包括至少一个处理单元602和存储器604。取决于计算设备的确切配置和类型,存储器604可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。该最基本配置在图6中由虚线606来例示。如图6所示,诸如应用程序104(图1)等包括阻塞策略114和类型检查器模块124的应用程序可被加载到系统存储器604中以供系统600的用户使用。图6还示出受限进程120,转换器106被加载到受限进程120中以将第一格式的文件转换成处于第二格式的经转换的文件来移除可能嵌入在该文件中的恶意代码。
另外,系统600还可具有附加特征/功能。例如,系统600还可包含其它存储(可移动和/或不可移动),包括但不限于磁盘、光盘或磁带。这些其它存储在图6中由可移动存储608和不可移动存储610示出。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器604、可移动存储608和不可移动存储610都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由系统600访问的任何其它介质。任何这样的计算机存储介质都可以是系统600的一部分。
系统600还可包含允许该系统与其它设备通信的通信连接612。通信连接612是通信介质的一个示例。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任意信息传送介质。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。如此处所使用的术语计算机可读介质包括存储介质和通信介质两者。
系统600还可以具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入设备614。还可以包括诸如显示器、扬声器、打印机等输出设备616。所有这些装置在本领域中都是众所周知的,因此不必在此详细讨论。
本说明书通篇引述的“实施例”、“一个实施例”、“一实施例”、“另一实施例”、和“某实施例”意指特定的所描述的特征、结构或特性是涵盖在本发明至少一个实施例中的。因此,对这样短语的使用可指的是一个以上的实施例。而且,在一个或多个实施例中,可以用任何合适的方式组合所描述的特征、结构或特性。
然而,本领域技术人员会认识到本发明也可在没有一个或多个具体细节的情况下实施,或者采用其它方法、资源、材料等来实现。仅仅为了避免模糊本发明的各方面,在其它情况下,未示出和详述公知的结构、资源或操作。
虽然已经示出并描述了本发明的各示例实施例和应用,但是应当认识到,本发明不限于上述精确配置和资源。对本领域的技术人员显而易见的是可以对在此公开的本方面的方法和系统的安排、操作以及细节作出各种修改、改变和变更,而不背离所要求保护的本发明的范围。