CN101529385A - 用于修复应用程序的方法和系统 - Google Patents

用于修复应用程序的方法和系统 Download PDF

Info

Publication number
CN101529385A
CN101529385A CNA2006800262402A CN200680026240A CN101529385A CN 101529385 A CN101529385 A CN 101529385A CN A2006800262402 A CNA2006800262402 A CN A2006800262402A CN 200680026240 A CN200680026240 A CN 200680026240A CN 101529385 A CN101529385 A CN 101529385A
Authority
CN
China
Prior art keywords
mistake
application program
code
emulator
equipment
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.)
Pending
Application number
CNA2006800262402A
Other languages
English (en)
Inventor
安格罗斯·D·克罗米蒂斯
斯蒂利亚诺斯·西迪罗格洛
迈克尔·E·罗卡斯托
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.)
Columbia University in the City of New York
Original Assignee
Columbia University in the City of New York
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 Columbia University in the City of New York filed Critical Columbia University in the City of New York
Publication of CN101529385A publication Critical patent/CN101529385A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • G06F11/0742Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in a mobile device, e.g. mobile phones, handheld devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0748Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a remote unit communicating with a single-box computer node experiencing an error/fault
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/568Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Abstract

根据本发明,提供了一种允许应用程序从软件错误和攻击中自动修复的计算机实现方法和系统。使用一个或多个传感器可以检测出该应用程序中的错误。响应于检测到该错误,隔离导致该错误的应用程序代码部分。利用引起该错误的输入向量、关于该错误的信息(例如错误类型)、核心转储文件(例如堆栈跟踪)等。构造修复该错误的基于仿真器的免疫程序。响应于确认该免疫程序已修复了该错误的情况,用基于仿真器的免疫程序自动更新该应用程序,而无需用户介入。还提供了有效利用软件单一结构中可用资源的应用程序组的特征。应用程序组可以被限定为包括多个设备,并且应用程序代码可以被分成较小的代码部分,这些较小的代码部分被分配给所述多个设备中的每个设备以用于监控。每个设备还将该错误告知其他设备。

Description

用于修复应用程序的方法和系统
相关申请的交叉引用
本申请要求2005年6月1日提出申请的美国专利申请No.11/142743的优先权,该专利申请全文并入这里作为参考。
技术领域
本发明总体上涉及用于对多种软件错误做出反应的方法。更具体地,本发明涉及用于从软件故障和攻击自动恢复的方法和系统。
背景技术
应用程序可能会由于任意数量的威胁、程序错误、软件故障、攻击或任何合适的软件错误而终止。计算机病毒、蠕虫、木马、黑客、密钥恢复攻击、恶意可执行程序、探测器等等是对连接到公共计算机网络(例如互联网)和/或专用网络(例如公司计算机网)上的计算机的用户的持续威胁。响应于这些威胁,许多计算机被防病毒软件和防火墙保护起来。但是,这些保护措施并不总是足够的。例如,许多服务在面临远程攻击、大量事件(例如,快速散播的蠕虫例如Slammer和Blaster)、或简单的应用层的拒绝服务(DoS)攻击必须保持高的可用性。
除了这些威胁之外,应用程序通常包含操作期间的错误,该错误通常由程序员错误产生。不管应用程序是被一个上述威胁攻击还是包含操作期间的错误,这些软件故障和错误都会导致非法存储器访问错误、被零除错误、缓冲溢出攻击等等。这些错误导致应用程序终止其执行或“崩溃”。
已经提出例如实现提前主动方法的解决方案,该提前主动方法试图通过使用安全语言、库和编译器、代码分析工具和开发方法使该代码尽可能地可靠。还提出了试图使后续故障分析和恢复对于程序员尽可能容易的调试帮助。已经提出Byzantine容错方案,该方法在多个服务实例中使用投票来选择正确的答案。但是,这些容错方案在仅有少量副本将表现出故障行为的假设下操作。实际上,解决此问题的许多这些方法通常是提前主动的,但是这些策略不会产生无错误代码。这些解决方案通常是有问题的,例如系统性能降低、单调和麻烦的用户互动、以及自发的拒绝服务(即,当检测到溢出时,唯一的可选择方案是终止应用程序)。另外,对于服务器应用程序,由于服务器应用程序通常长期运行(累积了相当多的状态量),并且通常包含服务于许多远程用户的多个线程,服务器应用程序往往不能被简单地重启。重启服务器将拒绝对其他用户的服务。结果,软件糟糕地保持了很多缺陷多并且很容易崩溃。此外,这些解决方案不适合于高性能、高可用性环境例如被频繁访问的电子商务网络服务器。
另外,这些应用程序可安装在多种平台,例如个人数字助理(PDA)、移动电话或汽车个人电脑上。例如,开放式平台操作系统已被用于汽车个人电脑,以允许用户安装已经为该平台设计的第三方应用程序。这些应用程序也容易遭受软件错误。尽管目前为这些平台开发出了防病毒程序以保护应用程序不受这种错误影响,但是它们通常需要用户交互(例如,下载补丁或者另一种应用程序,将该设备连接到个人计算机,等等),并且由于占用了平台的已经很有限的空间、存储器和传输带宽而降低了系统性能。
因此,本领域中需要提供一种用于处理多种软件错误的反应性更高的和自动的方法,以便应用程序可从这种错误中恢复而无需用户干涉,并且不会降低系统性能。
因此,希望提供克服现有技术的这些以及其他缺点的方法和系统。
发明内容
根据本发明的一些实施例,提供了一种使应用程序可从软件错误和攻击中自动恢复的自愈式系统和方法。通过选择性地模拟应用程序代码的全部或一部分,或者检测到已经发生故障,如对于该故障类型适当地,系统立即围绕检测到的故障使操作数对于机器指令有效。系统通过纠错模拟应用程序代码的一部分。这可通过更新应用程序代码或者通过非入侵的手段(例如,通过包装或调试器类型的过程控制)实现。这增加了在存在一般软件错误、软件错误和攻击(例如,计算机病毒、蠕虫、木马、黑客、密钥恢复攻击、恶意可执行程序、探测器、拒绝服务攻击、资源消耗攻击、缓冲溢出、缓冲下溢、非法存储器访问、被零除、检查时间到使用时间(TOCTTOU)违规和/或程序设计错误的情况下的服务可用性。
在一些实施例中,提供了一种用于检测应用程序并且从软件错误中修复应用程序的方法和系统。使用一个或多个传感器(例如,基于主机的传感器、无源传感器、蜜罐(honeypot)等等)监控该应用程序的故障情况。根据本发明的一些实施例,传感器可以是在模拟该应用程序的单独服务器上实现的蜜罐。
响应于检测到错误,导致该错误的应用程序代码部分被隔离。使用导致该错误的输入向量、关于该错误的信息(例如,错误类型)、核心转储文件(例如,堆栈跟踪)等等,构造修复该错误的基于仿真器的免疫程序。响应于验证到该免疫程序已修复该错误,使用该基于仿真器的免疫程序更新该应用程序。
可选地,该传感器可分析应用程序的代码,并且预测代码的哪一部分易发生影响,或者代码的哪一部分具有较高的表现出某一特定错误的可能性。
根据本发明的一些实施例,提供了一种创建应用程序组以有效地使用软件单一系统内的可用资源的系统和方法。这些组合的资源可被用于为应用程序组的每个成员提供保护,同时在组的所有成员之间分摊检测和分析错误的(例如,计算、存储、磁盘等等)成本。
在一些实施例中,可定义包含多个设备(例如,工作站、服务器等等)的应用程序组。应用程序的代码可被划分成较小的代码部分,其被指定用于监控多个设备中的每一个。应注意,该代码部分可被静态分配、随机分配、加权分配、自愿分配和交易型分配指定。还应注意,用于指定进行监控的代码部分的其它合适的方法也可与上述方法一起使用或者代替上述方法。可选地,不是指定代码部分,而是可为多个设备中的每一个指定特定错误。
响应于接收到指定的代码部分,每个设备在应用程序的本地实例中监控应用程序的代码的指定部分的错误情况,响应于检测到该错误分析该代码的指定部分,并且构造修复该错误的基于仿真器的免疫程序。响应于验证到该免疫程序已修复该错误的情况,每个设备用该基于仿真器的免疫程序更新该应用程序,并且将该错误告知其它设备。
已经概述而不是广泛地说明本发明的较主要的特征,以便下文对本发明的详细说明可被更好地理解,并且对本领域的贡献可被更好地理解。当然,存在下文将说明的并且将形成所附权利要求的主旨的本发明的附加特征。
在此方面,在详细说明本发明的至少一个实施例之前,应理解,本发明在应用中并不局限于下文说明书内阐述的或附图中示出的构造的细节和部件的设置。本发明能够具有其它实施例,并且以多种方式实践和实现。另外,还应理解,文中使用的用语和术语是为了说明而不应被认为是限制性的。
因此,本领域技术人员应理解,作为公开内容的基础的概念可被容易地实现为用于实现本发明的一些目的的其它结构、方法和系统的设计基础。因此,重要地是,权利要求被认为包含不背离本发明的精神和范围的等同构造。
这些以及本发明的其它目标和作为本发明的特征的多种新颖特征在所附的并且形成此公开的一部分的权利要求内被具体指出。为了更好地理解本发明、其操作优点和通过其使用获得的特定目标,应参考示出本发明的优选实施例的附图和描述内容。
附图说明
结合附图参照下文对本发明的详细说明可更充分地理解本发明的各种目标、特征和优点,在附图中类似的标号指示类似的元件。
图1是根据本发明的一些实施例的适合于监控其它应用程序并且保护这些应用程序免于发生错误的应用程序的实现的示例性系统的示意图。
图2是可根据本发明的一些实施例使用的图1的服务器和工作站之一的详细示例。
图3示出根据本发明的一些实施例的修复应用程序中的故障并且更新该应用程序的简化流程图。
图4是示出根据本发明的一些实施例的响应于故障发生进行检测并修复应用程序的简化流程图。
图5示出根据本发明的一些实施例的集成在已有应用程序内的仿真代码的示例性示例。
图6是示出根据本发明的一些实施例的使用应用程序组检测和修复应用程序的简化流程图。
图7是示出根据本发明的一些实施例的可被用于分布式投标的多个应用程序组计算出的表的示例性示例。
具体实施方式
在下文将说明关于本发明的方法和系统以及这种方法和系统可在其中操作的环境等等的许多特定细节,以便更透彻地理解本发明。但是,对于本领域技术人员来说很明显的是,本发明可被实现为不具有这些特定细节,并且没有详细说明本领域内公知的一些特征以避免使本发明的主题复杂化。另外,应理解,下文提供的示例仅是示例性的,并且可想到,在本发明的范围内存在其他的方法和系统。
图1是适合于实现根据本发明的一些实施例的用于监控、修复和更新其他应用程序的应用程序的示例性系统100的示意图。参照图1,示出用于实现本发明的示例性系统100。如图所示,系统100可包括一个或多个工作站102。工作站102可相互是本地的,或者相互远离,并且通过一个或多个通信链路104连接到通信网络106,该通信网络106通过通信链路108连接到服务器110。
在系统100中,服务器110可以是任何适合于执行应用程序的服务器例如处理器、计算机、数据处理设备或这些设备的组合。通信网络106可以是任何合适的计算机网络,包括互联网、内联网、广域网(WAN)、局域网(LAN)、无线网络、数字用户线(DSL)网络、帧中继网络、异步传送模式(ATM)网络、虚拟专用网络(VPN)或它们的任何组合。通信链路104和108可以是适合于在工作站102和服务器110之间传输数据的任何通信链路,如网络链路、拨号链路、无线链路、硬连线链路等等。工作站102可以是个人计算机、膝上型计算机、主计算机、哑终端、数据显示器、互联网浏览器、个人数字助理(PDA)、双向式寻呼机、无线终端、便携电话等等或者它们的任何组合。工作站102和服务器110可被设置在任何合适的位置。在一个实施例中,工作站102和服务器110可被设置在一个机构内。可选地,工作站102和服务器110可被安置在多个机构内。
图1内所示的服务器和一个工作站在图2内被更详细地示出。参照图2,工作站102可包括处理器202、显示器204、输入设备206和存储器208,它们可互连。在一个优选实施例中,存储器208包含存储用于控制处理器202的工作站程序的存储设备。存储器208还可包括用于检测应用程序并从错误中修复应用程序的应用程序。在一些实施例中,该应用程序可位于工作站102或服务器110的存储器内。
在一个具体实施例中,该应用程序可包括客户端一侧的软件、硬件或这二者。例如,应用程序可包含一个或多个网页或网页部分(例如经由任何合适的编码,如超文本链接标记语言(HTML)、动态超文本链接标记语言(DHTML)、可扩展标记语言(XML)、Java服务器端网页(JSP)、动态服务器网页(ASP)、冷融合或任何其他合适的方法)。
尽管应用程序在文中被描述为在工作站上实现,但是这仅是示例性的。应用程序可在任何合适的平台(例如个人计算机(PC)、主机计算机、哑终端、数据显示器、双路寻呼机、无线终端、便携式电话、便携式计算机、掌上型电脑、H/PC、汽车计算机、膝上型计算机、个人数字助理(PDA)、组合的蜂窝式电话和PDA等等)上实现以提供这种特征。
处理器202可使用工作站程序在显示器204上显示该应用程序、通过通信链路104接收到的数据、以及工作站102的用户发送的命令和数值。应注意,通过通信链路10或任何其它通信链路接收到的数据可从任何合适的源例如网络服务接收到。输入设备206可以是计算机键盘、光标控制器、拨号盘、转换开关组、杠杆或可被输入系统或处理控制系统的设计者使用的任何其它合适的输入设备。
服务器110可包括处理器220、显示器222、输入设备224和存储器226,它们可互连。在一个优选实施例中,存储器226包含用于存储通过通信链路108或通过其他链路接收到的数据的存储设备,并且还接收由一个或多个用户所发送的命令和数值。该存储设备还包括用于控制控制器220的服务器程序。
一般来说,本发明涉及用于检测应用程序内的故障,并且在检测到故障时禁止和/或防止该故障在该应用程序未来的执行中发生的方法和系统。应注意,术语“应用程序”和“服务”在文中可相互交换地使用。例如,如下文所述,可使用一个或多个针对特定类型故障的软件监视程序监控应用程序或服务。应注意,术语“故障”、“攻击”和“错误”在文中可相互交换地使用。例如,如下文所述,系统用于对多种软件错误、故障和攻击做出反应。这些软件错误和攻击包括例如非法存储器访问、被零除和缓冲溢出(更一般地说,control hijacking)攻击。
根据本发明的一些实施例,提供了使应用程序能够从软件错误和攻击中自动恢复的自愈系统。通过当系统检测到发生故障时选择性地模拟应用程序代码的一部分或全部,对于该故障类型合适地,系统围绕检测到的故障使操作数对于机器指令有效。该系统通过纠错模拟应用程序代码的一部分,并且更新该应用程序。这增加了在存在普通软件缺陷、软件错误、攻击的情况下的服务可用性。
转到图3和4,提供了示出根据本发明的一些实施例的检测应用程序内的故障并纠错该应用程序时执行的各个步骤的简化流程图。它们是概括性的流程图。应当理解,图3和图4中所示的步骤可以以适当的顺序执行,某些步骤可以被去除,也可以添加其它步骤。
通常,过程300从在步骤310中检测一个或多个应用程序内的各种类型的错误开始。在一些实施例中,故障错误可包括监控一个或多个应用程序的错误情况。在一些实施例中,可在步骤310中使用一个或多个传感器执行对错误的监控或检测。如前文所述的,错误包括程序设计错误、异常、软件故障(例如,非法存储器访问、被零除、缓冲溢出攻击、检查时间到使用时间(TOCTTOU)违规等等)、威胁(例如,计算机病毒、蠕虫、木马、黑客、密钥恢复攻击、恶意可执行程序、探测器等等)、以及会导致异常的应用程序终止或对一个或多个应用程序产生不利影响的任何其它合适的故障。例如,一组传感器可监控在网络服务器上运行的应用程序的错误情况。
任何合适的传感器可用于检测错误或监控一个或多个应用程序。在一些实施例中,可使用监控被部署的应用程序和服务器的行为的基于主机的传感器。在另一个合适的实施例中,可使用防火墙上的无源传感器偷听或监听行进到和离开服务器(例如图1的服务器110)的流量。在一些实施例中,还可使用模拟目标应用程序的行为并且捕获任何通信的蜜罐。蜜罐可以是例如用作诱饵的单独的服务器,其引诱潜在的黑客同时仅为潜在的黑客提供有限地访问网络的权限,从而允许蜜罐监控黑客,并且确定黑客如何能够侵入系统。蜜罐可安装在防火墙内。但是,应注意,蜜罐也能够安装在防火墙外部。应注意,可同时使用传感器的任何组合。这些传感器可相互通信、与服务器通信或者与一个或多个工作站通信。
在步骤320,可使用来自传感器的反馈来预测给定应用程序代码的哪一部分易受到特定类型的攻击(例如,可远程利用的缓冲溢出)。在一些实施例中,传感器还可检测到已经发生故障。在预测到可能发生故障或者检测到已经发生故障时,在步骤330隔离具有故障指令或者易受攻击的函数的应用程序代码部分,从而将所预测的故障限制在局部。
可选地,如图4所示和说明的,一个或多个传感器可一直监控应用程序,直到该应用程序被异常终止。系统可检测到已经发生的故障,从而导致实际应用程序终止。如图4所示,在步骤410,系统迫使行为不当的应用程序异常中止。响应于应用程序终止,在步骤420,系统生成一个核心转储文件或产生其它与错误相关的信息。当发生错误时,核心转储文件可包括例如错误类型以及堆栈跟踪。至少部分地基于该核心转储文件,在步骤430,系统隔离应用程序代码的包含故障指令的部分。使用核心转储文件,系统可对该应用程序的被隔离部分或片段应用选择性的仿真。例如,系统可从堆栈跟踪内的最顶部的函数开始。
返回图3,在一些实施例中,系统可生成应用程序的被探测的版本(步骤340)。例如,应用程序的被探测的版本可以是应用程序代码的一部分或全部的副本。系统可观察到应用程序的被探测的部分。可基于对特定类型的攻击的脆弱性选择应用程序的这些部分。被探测的应用程序可在目前运行一个或多个应用程序的服务器、单独服务器、工作站或任何其它合适的设备上执行。
应注意,隔离应用程序代码的一部分并且对该部分使用仿真器允许系统减少和/或最小化对被免疫应用程序的性能影响。但是,尽管此实施例隔离了应用程序代码的一部分或片段,但是也可模仿整个应用程序。仿真器可完全用软件实现,或者利用系统处理器或体系结构的硬件特征或者操作系统提供的其它资源,以减小和/或最小化监控或仿真的性能影响,并且提高处理错误的准确性和有效性。
利用这种脆弱性的尝试暴露了攻击或输入向量以及其他相关信息(例如,被攻击的缓冲器、易受攻击的函数、堆栈跟踪等等)。然后在步骤350,使用攻击或输入向量和其他相关信息以构建实现在机器指令级进行检查的数组界的基于仿真器的免疫程序或纠错,或者适合于检测到的错误类型的其它纠错。然后,使用指令级仿真器(例如,libtasvm x86仿真器,STEM x86仿真器等等)在被探测的应用程序内测试该免疫程序,以确定故障是否被纠错和纠错是否影响任何其它功能(例如,关键功能性)。
通过使用指令级仿真器连续测试不同的免疫程序,系统可验证是否通过相对于导致特定故障的事件顺序(例如,输入向量)运行被探测应用程序已经修复了特定故障。例如,为了验证纠错的有效性,应用程序可在能够进行探测的测试环境或者沙盒内重新开始,并且被供给导致该错误的一个或多个输入向量。沙盒通常创建其中存在严格限制的环境,在该限制上可请求或访问系统资源、被探测应用程序或者应用程序的函数。
在步骤360,为应用程序代码的区段选择性地调用指令级仿真器,从而使该系统可在同一代码执行内混合被模拟和未被模拟的代码。仿真器可用于例如在执行指令之前检测和/或监控特定类型的故障,记录在指令执行期间的存储器改变(例如,全局变量、库内部状态、库标准I/O结构等等)和初始值,使存储器堆栈返回其初始状态,并且模拟从该应用程序的函数返回的错误。即,在进入应用程序代码的易受攻击部分时,指令级仿真器捕获并存储程序状态,并且在为仿真指定的区域内处理所有指令,包括函数调用。当程序计数器引用在仿真界限外部的第一指令时,虚拟处理器将其内部状态复制回设备处理器寄存器中。当寄存器被更新时,还通过仿真的执行来进行存储器更新。不管虚拟处理器执行的指令如何,程序继续在实际处理器上正常执行。
在一些实施例中,指令级仿真器可预先与应用程序链接。可选地,响应于检测到的错误,指令级仿真器可在代码内被编译。在另一个合适的实施例中,当执行特定程序指令时,指令级仿真器可以通过和现代调试器类似的方式被调用。这可利用系统处理器和体系结构具有的断点寄存器和/或其他程序调试手段,或者其可以是适合于本发明在其上实现的设备的操作系统和硬件的纯软件方法。
使用仿真器使得系统可检测和/或监控许多不同的系统错误,例如非法存储器解除引用、缓冲溢出和缓冲下溢、以及更一般的故障,例如被零除。仿真器检查其将至少部分地使用由检测故障的一个或多个传感器所提供的向量和相关信息模拟的指令的操作数。例如,在被零除的情况下,仿真器检查div指令的操作数的值。在另一个示例中,在非法存储器解除引用的情况下,仿真器验证任何存储器访问(或指令提取的程序计数器)的源和目的地址是否指向使用mincore()系统调用被映射到的过程地址空间的页面,或者操作系统提供的适当的资源。在另一个示例中,在缓冲溢出检测的情况下,围绕如被一个或多个传感器识别的易受攻击缓冲器的存储器被填充一个字节。仿真器然后观察对这些存储位置的存储器写入。应注意,这要求源代码可用,以便插入特定变量(例如自己周期性地启动并执行一些典型的用户事务以能够围绕时钟进行事务延时评估的canary变量)。还应注意,仿真器在其重写存储器堆栈内的剩余位置并恢复执行之前防止溢出。用于检测这些错误的其它方法可以模块化方式结合到系统中,而不会影响系统的高级别操作和特性。
例如,指令级仿真器可被实现为静态链接C库,其定义了标记选择性仿真的开始和结束的专用标签(例如,宏和函数调用的组合)。图5内示出围绕用于被指令级仿真器仿真的应用程序代码的区段放置的标签示例。如图5所示,C宏emulate_init()将程序状态(一般是区段、eflag和FPU寄存器)移入仿真器可访问的全局数据结构,以便在仿真器获得控制之前即刻捕获状态。该数据结构被用于初始化虚拟寄存器。emulate_begin()获得在对自身的调用之后的第一个指令的存储位置。指令地址与返回地址相同,并且可在emulate_begin()的激活记录内在其基堆栈指针之上四个字节处找到。指令的提取/解码/执行/回收循环继续进行,直到达到emulate_end()或者仿真器检测到控制返回父函数。如果仿真器在其执行期间没有遇到错误,则仿真器的指令指针在完成时引用emulate_term()宏。为了使被探测的应用程序能够在这个地址继续执行,用指令指针的当前值代替emulate_begin()激活记录的返回地址。通过执行emulate_term(),仿真器的环境被复制到程序寄存器中,并且执行在正常状况下继续进行。
应注意,尽管本发明的实施例说明了仿真器与易受攻击的应用程序相链接,和/或易受攻击的应用程序的源代码可用,但是本发明还可使用处理器的可编程断点寄存器来调用仿真器,而返回过程甚至不能检测到其现在在仿真器下运行。
除了监控在执行指令之前的错误,并且回复当错误发生时特定函数导致的存储器变化(例如,通过使仿真器存储在其执行期间发生的存储器改变),仿真器还模拟该函数的出错返回。利用本发明,系统可生成在应用程序执行期间可能发生的一组错误和被应用程序的代码明确处理的有限的一组错误之间的映射(有时在文中被称为“错误虚拟化”)。如下文所述,本发明的错误虚拟化特征可基于启发法。但是,可使用用于确定函数的返回值的任何合适的方法。例如,可使用确定适合于函数的返回值的侵入源代码分析技术。在另一个实施例中,特定函数的代码的一部分可被标记为故障安全,并且当强制出错返回时可返回特定值(例如,检查用户许可的代码)。在另一个示例中,可使用程序员、系统管理员或任何其它合适的用户提供的信息确定已经发生错误的函数返回的错误值。
即使程序员最初没有预测到的边界条件使得故障发生,这些错误虚拟化特征仍使得应用程序可继续执行。具体来说,对于程序员不曾预料到的故障,错误虚拟化特征允许用异常捕获机制改进应用程序的代码。应注意,错误虚拟化与通过一些编程语言实现的传统异常处理不同,在传统异常处理中程序员必须在程序代码内故意创建异常情况,并且还添加代码以处理这些异常情况。在错误虚拟化下,本发明捕获例如程序员不曾预料到的错误和异常,并且本发明利用已有的应用程序代码来处理它们。在本发明的一些实施例中,错误虚拟化可通过指令级仿真器实现。可选地,错误虚拟化可通过直接插入应用程序的源代码的附加源代码来实现。这种附加源代码的插入可在如前文所述的检测到错误之后或者在预测到错误之后自动执行,或者其可在程序员、系统操作员或可对应用程序的源代码具有访问权限的其它合适的用户的指导下进行。
利用错误虚拟化,当在仿真期间发生异常时或者如果系统检测到已经发生故障,则系统可使程序状态返回其初始设置,并且强制从当前执行的函数返回错误。为了确定合适的错误值,系统分析所声明的函数类型。在一些实施例中,系统可使用例如TXL脚本来分析所声明的函数类型。总的来说,TXL是可用于执行源到源变换并且迅速确定新语言和语言处理器的原语的混合函数和基于规则的语言。基于所声明的函数类型,系统确定合适的错误值并且将其放置在返回函数的堆栈帧内。合适的错误值可至少部分地基于启发法确定。例如,如果返回类型是整数,则返回值-1。如果返回类型是无符号整数,则系统返回0。如果函数返回一个指针,则系统判断返回的指针是否进一步被父函数解除引用。如果返回的指针被进一步解除引用,则系统将仿真范围扩展到包括父函数。在另一个示例中,返回出错代码可使用嵌入到应用程序的源代码中的信息来确定,或者通过应用程序的程序员、系统管理员或第三方提供给系统的附加信息来确定。
在一些实施例中,emulate_end()被定位并且仿真终止。由于仿真器保存了在开始之前的应用程序的状态,并且持续跟踪在应用程序的执行期间的存储器改变,系统能够通过使其中发生故障的代码函数导致的任何存储器改变返回其初始设置而颠倒该存储器改变,从而抵消通过仿真被处理的指令的影响。即,代码的被仿真部分被切除,并且代码的执行连同其在存储器改变方面的副作用一起被返回。
例如,仿真器可能不能不经核心级许可而直接执行系统调用。因此,当仿真器使用中间值0x80对中断解码时,仿真器将控制释放给内核。但是,在内核执行系统调用之前,仿真器备份实际寄存器并且用其自己的值替换它们。仿真器发出INT 0x80,并且核心程序处理系统调用。一旦控制返回仿真器,则仿真器更新其寄存器,并且在应用程序的寄存器内恢复初始值。
如果被探测的应用程序没有在强制返回之后崩溃,则系统已经成功地发现用于特定故障的免疫程序,该免疫程序可用于在服务器上运行的实际应用程序中。在步骤370,系统至少部分地基于仿真更新该应用程序。
根据本发明的一些实施例,可提供人工多样性特征以减轻软件单一系统的安全性风险。
软件单一系统已被认为联网计算环境的问题。单一系统用作攻击者的放大器,使得攻击者可在相同应用程序的许多实例(例如,成千或数百万个实例)之间利用相同的脆弱性。如近来一些事件证明的,这种攻击可能会迅速造成广泛混乱。
尽管许多其他系统试图引入人工多样性,但是可利用已有软件单一系统的好处来减轻软件单一系统的安全性风险。在一些实施例中,可创建应用程序组来有效地使用大的单一系统内可用的资源,以保护每个应用程序组成员。如这里所使用的,应用程序组是相同应用程序的独立实例的集合,这些实例共同监控它们的执行的缺陷和攻击情况,并且当检测到这种事件时告知所述的组。例如,在上述系统中,在广域网(例如,互联网)上运行一个或多个应用程序的一个或多个工作站和服务器可以是应用程序组的成员。每个工作站可通过监控应用程序的不同部分来合作,从而分配被用于监控该应用程序的每个工作站所分配的存储器。在另一个合适的实施例中,每个工作站可通过监控应用程序的不同错误而合作。响应于检测到代码的被监控部分易发生错误,或者响应于检测到在应用程序代码的被监控部分内出现错误,工作站可将该错误告知其它工作站和服务器。
图6是示出根据本发明的一些实施例的在使用应用程序组监控应用程序的故障情况和修复该应用程序时执行的各种步骤的简化流程图。这是一个概括的流程图。应理解的是,图6内所示的步骤可以以任何合适的顺序执行,一些步骤可被删除,并且可以添加其它步骤。
一般来说,在步骤610,系统可将应用程序代码分割成多个代码部分。应用程序代码的每个部分或片段可例如被分配给应用程序组的一个成员(例如工作站、服务器等等)。在步骤620,应用程序组的每个成员可监控该代码部分的不同类型的错误。如前文已说明的,所述错误包括程序设计错误、异常、软件故障(例如,非法存储器访问、被零除、缓冲溢出攻击、违反TOCTTOU等等)、威胁(例如,计算机病毒、蠕虫、木马、黑客、密钥恢复攻击、恶意可执行程序、探测器等等)、以及会导致异常应用程序终止或对一个或多个应用程序产生不利影响的任何其它合适的故障。
例如,系统可基于应用程序的大小和应用程序组内的成员数目(即,应用程序/应用程序组内的成员的规模)划分代码部分。可选地,系统可基于应用程序组的每个成员内的可用存储量划分代码的部分。可使用适于确定如何划分应用程序代码的任何合适的方法。下文将说明一些合适的方法。
例如,系统可通过检验执行应用程序代码的离散片段的成本,检验应用程序组内的全部工作W。假设包含应用程序的调用图的一组函数F,F的第i个成员被表示为fi。执行每个fi的成本是fi内存在的计算量(即,xi)和fi内的危险量(即,vi)的函数。xi的计算被至少两个量度推动:即作为fi的一部分被执行的机器指令的数量oi,和执行fi所花费的时间量ti。oi和ti可根据应用程序的内部逻辑作为时间或应用程序工作量的函数而改变。例如,应用程序可在该应用程序经过阈值数量的请求之后执行记录或清除任务。
在一些实施例中,可分两个阶段提供成本函数。第一阶段计算由每个fi的计算量导致的成本。第二阶段使此成本归一化,并且应用危险因数vi以确定每个fi的最终成本以及系统内的工作总量。例如,假设
T = Σ i = 1 n x i
如果C(fi,xi)=xi/T*100,则通过将F的子集分组以代表一个工作单位将每个成本归一化。
在一些实施例中,系统可解决函数的脆弱性的测量问题。例如,系统将vi当作具有值α的离散变量对待,其中α具有根据危险量的一定范围的值,从而:
Figure A20068002624000231
给定每个函数的vi,系统可确定监控所需的系统中的工作总量和成员总数:
W = N vlun = Σ i = 1 n v i * r i
在系统(例如,控制器)或者每个应用程序组成员已经计算出系统内的工作量之后,分配工作单位。在一个示例中,中央控制器或一个工作站可为每个节点分配大约W/N个工作单位。在另一个合适的示例中,应用程序组的每个成员可确定其自己的工作集合。每个成员可通过抛掷用值vi*ri加权的硬币的方式迭代通过工作单位列表。因此,如果抛掷结果为“真”,则然后该成员将该工作单位添加到其工作集合中。
可选地,系统可生成具有n*W个空位的列表。每个函数用该列表上的多个项(例如,vi*ri)表示。应用程序组的每个成员例如通过抛掷硬币迭代通过该列表。如果硬币是“人头”或者“真”,应用程序组成员在给定的时间片上监控应用程序的函数。由于权重较大的函数在该列表内具有更多的项,则可分配更多数量的用户以覆盖该应用程序。当成员的全部工作达到W/N时该成员可停止。这种方法提供了应用程序的统计覆盖范围。
在一些实施例中,可使用分布式投标方法分配监控和修复应用程序的工作量。调用图G内的每个节点具有权值vi*ri。为每个应用程序组成员分配F内的节点的一些子集,使得每个成员的工作不会多于W/N的工作量。阈值在W/N的一些范围∈内是松弛的,其中∈是系统公平性的量度。在计算工作W/N的全局公平量时,每个应用程序组成员可通过使用分布式投标方法与其它成员商议调节其工作负荷。
有两种考虑会影响到工作单位向应用程序组成员的分配。首先,系统优先分配具有较高权重的工作单位,因为这些工作单位可能由于高vi而具有较大的权重。即使权重仅由性能成本得到,将具有较高权重的工作单位分配给更多的成员是有益的,因为这些成员可循环监控任务以便任何一个成员不必承担全部成分。其次,在一些情况下,vi*ri可大于工作的平均量W/N。实现公平是指定义了被分配给应用程序组成员的量,并且这些量的总和定义了应用程序组内的成员的最小数目。
在一些实施例中,每个应用程序组成员计算出一个表。图7内示出这种表的示例。在生成该表时,应用程序组成员可投标以调节它们各自的工作量。例如,系统可使用用于投标的令牌。令牌可直接映射到应用程序组成员负责监控工作单位或应用程序的函数的时间量子的数目。系统确保每个节点不会累加多于∈的选择所允许的令牌的总量的令牌。
如果应用程序组成员监控多于其份额的内容,则系统增加覆盖范围,并且确保故障被尽可能快地检测出来。如步骤630和640内所示,每个应用程序组成员可预测到在代码的指定部分内可能发生故障,或者可检测到已经发生导致应用程序异常中止的故障,其中代码的被指定部分是故障源。当故障被检测到时,每个应用程序成员可提前主动监控包含该故障的代码的指定部分,以保护应用程序不受其它错误影响。如前文讨论的,应用程序组成员可隔离代码的导致该故障的部分,并且使用仿真器测试免疫程序或纠错。在步骤650,检测或预测到该故障的应用程序组成员可通知其他应用程序组成员。可通过由检测到该故障的应用程序成员所生成的保护机制或纠错重新开始遭遇该故障的其它应用程序成员。
假设新故障在应用程序组成员中分配均匀地随机分配,故障在成员k处发生的概率是:P(故障)=1/N。因此,k检测到新故障的概率是故障在k处发生和k检测到该故障的概率:P(k处故障∧检测)=1/N*ki,其中ki是在k处的覆盖百分比。应用程序组检测到该故障的概率是:
Figure A20068002624000241
当每个Ki趋近100%时,上述等式变为
Figure A20068002624000242
或者N/N,当其首次发生时该故障被检测到的概率为1。
根据本发明,提供了用于监控应用程序和从多种软件错误中修复应用程序的方法和系统。
应理解,文中的详细说明可在计算机或计算机网络上执行的程序过程方面被表示。这些程序说明和表示是被本领域技术人员用于最有效地将其工作实例传送给本领域其他技术人员的方法。
过程在此通常被设想为是导致希望的结果的自给序列。这些步骤是要求物理量的物理操纵的那些步骤。通常但不是必要的,这些量表现为能够被存储、传递、组合、比较和操纵的电信号或磁信号。主要出于公共使用的原因,证明有时将这些信号称作位、值、元件、符号、字符、术语、号码等等是方便的。但是,应注意,所有这些以及类似的术语将与合适的物理量相关联,并且仅是应用于这些量的方便标记。
此外,执行的操作常常用术语例如添加或比较提及,其通常与操作人员执行的智力操作相关联。在形成本发明的一部分的文中所述的任何操作中,操作员的这种能力并不是必需的或者在大多数情况不合乎需要;该操作是机器操作。可用于执行本发明的操作的机器包括通用数字计算机或类似设备。
本发明还涉及用于执行这些操作的装置。此装置可为所需的用途被专门构造,或者其可包括通用计算机,该通用计算机被该计算机内存储的计算机程序选择性地激活或重新配置。文中给出的过程本质上与具体计算机或其他装置不相关。各种通用机器可与根据文中的指导写成的程序一起使用,或者可证明构造更专用的装置来执行所需的方法步骤更加方便。多种这些机器的所需结构从文中给出的说明中显而易见。
根据本发明的系统可包括通用计算机或者被特别编程的专用计算机。用户可经由例如个人计算机或PDA在例如互联网、内联网等等上与该系统相互作用。它们中的任何一个都可被实现为分布式计算机系统而不是单个计算机。类似地,通信链路可以是专用链路、在POTS线路上的调制解调器、互联网和/或在计算机和/或用户之间通信的任何其它方法。此外,该处理可被一个或多个计算机系统或处理器上的软件程序控制,或者甚至可部分或完全用硬件实现。
尽管可使用单个计算机,但是根据本发明的一个或多个实施例的系统任选地适当配备多个处理器或存储设备或它们的组合。例如,计算机可被根据本发明的实施例的概念操作的任何合适的处理系统,例如复杂计算器、手提式、膝上型电脑/笔记本电脑、迷你计算机、主计算机和超级计算机,以及它们的处理系统网络组合代替或与它们组合。另外,该系统的部分可以任何合适的电子格式被提供,包括例如在通信线路上作为电子信号被提供,在CD和/或DVD上被提供,在光盘存储器上被提供等等。
本发明的这些实施例中可使用任何目前可用的或者未来开发的计算机软件语言和/或硬件部件。例如,上文提及的功能性中的至少一些可使用Visual Basic、C、C++或任何汇编语言实现。其还可在面向对象和/或解释性环境例如Java内被编写,并且被传输给多个目的地、多个用户。
应理解,本发明在其应用方面并不局限于下文说明内阐述的或者附图内示出的构造的细节和部件的设置。本发明能够表现为其他实施例,并且用多种方式实施和实现。另外,应理解,文中使用的用语和术语是用于说明而不应被看作是限制性的。
因而,本领域技术人员应理解,作为此公开的基础的概念可被容易地实现为用于实现本发明的一些目的的其它结构、方法和系统的设计基础。因此,重要地是,权利要求被认为包含不背离本发明的精神和范围的这种等同的构造。
尽管已经在前文的示例性实施例中说明和示出了本发明,但是应理解,本公开仅作为示例,并且可对本发明的实现细节作出多种改变而不会背离本发明的精神和范围,该精神和范围仅被下文的权利要求限制。
下文的参考文献全文并入此作为参考文献:
CERT Advisory CA-2003-21:W32/Blaster Worm.
http://www.cert.org/advisories/
CA-2003-20.html,August 2003.
The Spread of the Sapphire/Slammer Worm.http://www.silicondefense.com/research/worms/slammer.php,February 2003.
A.Avizienis.The n-version approach to fault-tolerant software.IEEETransactions on Software Engineering,11(12):1491
Figure A20068002624000271
1501,1985.
A.Baratloo,N.Singh,and T.Tsai.Transparent Run-Time Defense Against StackSmashing Attacks.In Proceedings of the USENIX Annual Technical Conference,June 2000.
A.Baratloo,N.Singh,and T.Tsai.Transparent Run-Time Defense Against StackSmashing Attacks.In Proceedings of the USENIX Annual Technical Conference,June 2000.
E.G.Barrantes,D.H.Ackley,S.Forrest,T.S.Palmer,D.Stefanovic,and D.D.Zovi.Randomized Instruction Set Emulation to Disrupt Binary Code Injection Attacks.In10th ACM Conference on Computer and Communications Security(CCS),October 2003.
S.Bhatkar,D.C.DuVarney,and R.Sekar.Address Obfuscation:an EfficientApproach to Combat a Broad Range of Memory Error Exploits.In Proceedings of the 12thUSENIX Security Symposium,pages 105fi120,August 2003.
S.Brilliant,J.C.Knight,and N.G.Leveson.Analysis of Faults in an N-VersionSoftware Experiment.IEEE Transactíons on Software Engineering,16(2),February 1990.
D.Bruening,T.Garnett,and S.Amarasinghe.An Infrastructure for AdaptiveDynamic Optimization.In Proceedings of the International Symposium on Code Generationand Optimization,pages 265-275,2003.
G.Candea and A.Fox.Crash-Only Software.In Proceedings of the 9th Workshopon Hot Topics in Operating Systems,May 2003.
H.Chen and D.Wagner.MOPS:an Infrastructure for Examining SecurityProperties of Software.In Proceedings of the ACM Computer and Communications Security(CCS)Conference,pages 235-244,November 2002.
M.Chew and D.Song.Mitigating Buffer Overflows by Operating SystemRandomization.Technical Report CMU-CS-02-197,Carnegie Mellon University,December2002.
S.A.Crosby and D.S.Wallach.Denial of Service via Algorithmic ComplexityAttacks.In Proceedings of the 12th USENIX Security Symposium,pages 29-44,August2003.
B.Demsky and M.C.Rinard.Automatic Detection and Repair of Errors in DataStructures.In Proceedings of the 18th Annual ACM SIGPLAN Conference on ObjectOriented Programming,Systems,Languages,and Applications,October 2003.
E.Duesterwald and S.P.Amarsinghe.On the Run-Building Dynamic ProgramModifiers for Optimization,Introspection,and Security.In Conference on ProgrammingLanguage Design and Implementation(PLDI),2002.
G.W.Dunlap,S.King,S.Cinar,M.A.Basraí,and P.M.Chen.Re Virt:EnablingIntrusion Analysis Through Virtual-Machine Logging and Replay.In Proceedings of theSymposium on Operating Systems Design and Implementation(OSDI),February 2002.
C.C.et al.StackGuard:Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks.In Proceedings of the 7th USENIX Security Symposium,January 1998.
T.Garfinkel and M.Rosenblum.A Virtual Machine Introspection BasedArchitecture for Intrusion Detection.In 10tn ISOC Symposium on Network and DistributedSystems Security(SNDSS),February 2003.
D.E.Geer.Monopoly Considered Harmful.IEEE Security & Prìvacy,1(6):14 &17,November/December 2003.
G.Goth.Addressing the Monoculture.IEEE Security & Privacy,1(6):8-10,November/December 2003.
T.Jim,G.Morrisett,D.Grossman,M.Hicks,J.Cheney,and Y.Wang.Cyclone:Asafe dialect of C.In Proceedings of the USENIX Annual Technical Conference,pages 275-288,June 2002.
G.S.Kc,A.D.Keromytis,and V.Prevelakis.Countering Code-Injection AttacksWith Instruction-Set Randomization.In 10th ACM Conference on Computer andCommunications Security(CCS),October 2003.
S.T.King and P.M.Chen.Backtracking Intrusions.In 19th ACM Symposiumon Operating Systems Principles(SOSP),October 2003.
S.T.King,G.Dunlap,and P.Chen.Operating System Support for VirtualMachines.In Proceedings of the USENIX Annual Technical Conference,June 2003.
V.Kíríansky,D.Brueníng,and S.Amarasínghe.Secure Executìon Vìa ProgramShepherding.In Proceedings of the 11th USENIX Security Symposium,August 2002.
D.Mosberger and T.Jin.httperf:A tool for measuring web server performance.In First Workshop on Internet Server Performance,pages 59-67.ACM,June 1998.
N.Nethercote and J.Seward.Valgrind:A Program Supervision Framework.InElectronic Notes in Theoretical Computer Science,volume 89,2003.
J.Newsome and D.Dong.Dynamic Taint Analysis for Automatic Detection,Analysis,and Signature Generation of Exploits on Commodity Software.In The 12thAnnual Network and Distributed System Securíty Symposium,February 2005.
J.Oplinger and M.S.Lam.Enhancing Software Reliability with SpeculativeThreads.In Proceedings of the 10th International Conference on Architectural Support forProgramming Languages and Operating Systems(ASPLOS X),October 2002.
V.Prevelakis.A Secure Station for Network Monitoring and Control.InProceedings of the 8th USENIX Security Symposium,August 1999.
N.Provos.Improving Host Security with System Call Policies.In Proceedings ofthe 12th USENIX Security Symposium,pages 257-272,August 2003.
J.C.Reynolds,J.Just,L.Clough,and R.Maglich.On-Line Intrusion Detectionand Attack Prevention Using Diversity,Generate-and-Test,and Generalization.InProceedings ofthe 36th Annual Hawaii International Conference on System Sciences(HICSS),January2003.
M.Rinard,C.Cadar,D.Dumitran,D.Roy,and T.Leu.A Dynamic Techniquefor Eliminating Buffer Overflow Vulnerabilities(and Other Memory Errors).In Proceedings20th Annual Computer Security Applications Conference(ACSAC),December 2004.
M.Rinard,C.Cadar,D.Dumitran,D.Roy,T.Leu,and J.W Beebee.EnhancingServer Availability and Security Through Failure-Oblivious Computing.In Proceedings 6thSymposium on Operating Systems Design and Implementation(OSDI),December 2004.
A.Rudys and D.S.Wallach.Transactional Rollback for Language-BasedSystems.In ISOC Symposíum on Network and Dístributed Systems Security(SNDSS),February 2001.
S.T.King and P.M.Chen.Backtracking Intrusions.In 19th ACM Symposiumon Operating Systems Principles(SOSP),October 2003.
S.T.King,G.Dunlap,and P.Chen.Operating System Support for VirtualMachines.In Proceedings of the USENIX Annual Technical Conference,June 2003.
V.Kíríansky,D.Brueníng,and S.Amarasínghe.Secure Execution Via ProgramShepherding.In Proceedings of the 11th USENIX Security Symposium,August 2002.
D.Mosberger and T.Jin.httperf:A tool for measuring web server performance.In First Workshop on Internet Server Performance,pages 59-67.ACM,June 1998.
N.Nethercote and J.Seward.Valgrind:A Program Supervision Framework.InElectronic Notes in Theoretical Computer Science,volurne 89,2003.
J.Newsome and D.Dong.Dynamic Taint Analysis for Automatic Detection,Analysis,and Signature Generation of Exploits on Commodity Software.In The 12thAnnual Network and Distributed System Security Symposium,February 2005.
J.Oplinger and M.S.Lam.Enhancing Software Reliability with SpeculativeThreads.In Proceedings of the 10th International Conference on Architectural Support forProgramming Languages and Operating Systems(ASPLOS X),October 2002.
V.Prevelakis.A Secure Station for Network Monitoring and Control.InProceedings of the 8th USENIX Security Symposium,August 1999.
N.Provos.Improving Host Security with System Call Policies.In Proceedìngs ofthe 12th USENIX Security Symposium,pagge 257-272,August 2003.
J.C.Reynolds,J.Just,L.Clough,and R.Maglich.On-Line Intrusion Detectionand Attack Prevention Using Diversity,Generate-and-Test,and Generalization.InProceedings ofthe 36th Annual Hawaii International Conference on System Sciences(HICSS),January2003.
M.Rinard,C.Cadar,D.Dumitran,D.Roy,and T.Leu.A Dynamic Techniquefor Eliminating Buffer Overflow Vulnerabilities(and Other Memory Errors).In Proceedings20th Annual Computer Security Applications Conference(ACSAC),December 2004.
M.Rinard,C.Cadar,D.Dumitran,D.Roy,T.Leu,and J.W Beebee.EnhancingServer Availability and Security Through Failure-Oblivious Computing.In Proceedings 6thSymposium on Operating Systems Design and Implementation(OSDI),December 2004.
A.Rudys and D.S.Wallach.Transactional Rollback for Language-BasedSystems.In ISOC Symposium on Network and Distributed Systems Security(SNDSS),February 2001.

Claims (41)

1.一种用于从软件错误中修复应用程序的方法,其中该应用程序包含代码,所述方法包括:
检测该应用程序中的错误;
响应于检测到该错误,隔离导致该错误的代码部分;
构造修复该错误的基于仿真器的免疫程序;
使用指令级仿真器在该被隔离的代码部分的被探测版本内测试基于仿真器的免疫程序;并且
响应于验证到该免疫程序已修复该错误,用该基于仿真器的免疫程序更新该应用程序。
2.根据权利要求1的方法,其中所述错误是以下情况中的至少一个:计算机病毒、蠕虫、木马、恶意可执行程序、探测器、拒绝服务攻击、资源消耗攻击、缓冲溢出、缓冲下溢、非法存储器访问、被零除、检查时间到使用时间违规和程序设计错误。
3.根据权利要求1的方法,其中所述检测使用至少一个传感器来执行,并且其中该至少一个传感器包括基于主机的传感器、基于网络的传感器和蜜罐中的一种。
4.根据权利要求1的方法,其中所述应用程序在服务器上执行,并且其中所述检测还包括在模拟该应用程序的单独服务器上实现蜜罐。
5.根据权利要求1的方法,其中该方法还包括响应于导致该应用程序终止的错误生成核心转储文件或其他报告信息。
6.根据权利要求5的方法,其中所述核心转储文件或其他信息包括发生的错误的类型、堆栈跟踪和有助于根据脆弱的应用程序代码部分定位该错误的其他信息。
7.根据权利要求5的方法,其中所述隔离导致该错误的代码部分的步骤至少部分地基于响应于检测到该错误而生成的所述核心转储文件或其他信息。
8.根据权利要求1的方法,其中所述错误暴露了输入向量。
9.根据权利要求8的方法,其中所述基于仿真器的免疫程序至少部分地基于所述输入向量和/或其对应用程序执行的影响而被构造。
10.根据权利要求8的方法,其中所述测试所述基于仿真器的免疫程序还包括将所述输入向量输入到代码的被隔离部分的被探测版本中。
11.根据权利要求1的方法,其中该方法还包括记录在代码的被隔离部分的被探测版本的执行期间的存储器变化。
12.根据权利要求1的方法,其中所述被隔离部分的被探测版本包括具有初始状态的存储器堆栈,并且该方法还包括使该存储器堆栈返回该初始状态并且生成出错返回。
13.根据权利要求1的方法,其中该方法还包括返回模拟该错误的出错代码。
14.根据权利要求1的方法,其中该方法还包括从代码的被隔离部分模拟出错代码。
15.根据权利要求1的方法,其中该方法还包括在应用程序的执行期间可能发生的错误和该应用程序被编程所处理的一组错误之间进行映射。
16.根据权利要求1的方法,其中所述更新应用程序的步骤还包括将附加代码自动插入到代码的被隔离部分中。
17.一种用于从软件错误中修复应用程序的方法,该方法包括:
使用至少一个传感器监控该应用程序的错误,其中该应用程序包含代码;
识别该代码哪里易受该错误影响;
至少部分地基于该识别来隔离该代码的一部分;
生成该代码部分的被探测版本;
至少部分地基于预测和该代码部分构造免疫程序;
用该免疫程序模拟该被探测版本的片段;并且
至少部分地基于该模拟更新该应用程序。
18.一种用于从软件错误中修复应用程序的系统,该系统包括:
传感器,该传感器监控该应用程序以及错误的对应代码,并且响应于检测到该错误隔离导致该错误的代码部分;
被选择性地调用以模拟该代码部分的指令级仿真器;
测试系统,该测试系统被配置为:
使用仿真器在该代码部分上评价一个或多个潜在的免疫程序,其中该测试系统在该代码部分上应用导致该错误的一个或多个输入变量;并且
响应于修复该代码部分来更新该应用程序,而无需用户输入。
19.根据权利要求18的系统,其中所述错误是以下情况中的至少一个:计算机病毒、蠕虫、木马、恶意可执行程序、探测器、拒绝服务攻击、资源消耗攻击、缓冲溢出、缓冲下溢、非法存储器访问、被零除、检查时间到使用时间违规和程序设计错误。
20.根据权利要求18的系统,其中所述传感器包括基于主机的传感器、基于网络的传感器和蜜罐中的一种。
21.根据权利要求18的系统,其中所述应用程序在服务器上实现,并且该系统还包括在模拟该应用程序的单独服务器上实现的蜜罐。
22.根据权利要求18的系统,其中所述测试系统还被配置为记录在该代码的被隔离部分的评价期间的存储器变化。
23.根据权利要求18的系统,其中所述测试系统还被配置为生成模拟该错误的出错返回。
24.根据权利要求18的系统,其中所述测试系统还被配置为在应用程序的执行期间可能发生的错误和该应用程序被编程所处理的一组错误之间生成映射。
25.根据权利要求18的系统,其中所述指令级仿真器还被配置为将附加代码自动插入到所述代码部分中。
26.一种用于从软件错误中修复应用程序的方法,该方法包括:
定义包含多个设备的应用程序组;
为该多个设备中的每一个指定该应用程序的一部分;
接收该多个设备之一已经检测到错误的指示;并且
响应于接收到该多个设备之一已经检测到错误的指示,将该错误告知该应用程序组。
27.根据权利要求26的方法,其中所述指定步骤还包括基于所述多个设备中的每一个内的可用存储量为该多个设备中的每一个指定该应用程序的一部分。
28.根据权利要求26的方法,其中所述指定步骤还包括基于所述应用程序组的总工作量为所述多个设备中的每一个指定该应用程序的一部分。
29.根据权利要求26的方法,其中所述指定步骤还包括为所述多个设备中的每一个任意指定该应用程序的一部分。
30.根据权利要求26的方法,其中所述指定步骤还包括允许每个设备通过与其他设备协商而调整其工作量。
31.一种用于从软件错误中修复应用程序的方法,其中该应用程序包含代码,所述方法包括:
定义包含多个设备的应用程序组;
为该多个设备中的每一个指定将要监控的错误;
接收该多个设备之一已经检测到所指定的错误的指示;并且
响应于接收到该多个设备之一已经检测到所指定的错误的指示,将该错误告知该应用程序组。
32.根据权利要求31的方法,其中所述指定步骤还包括基于所述多个设备中的每一个内的可用存储量为该多个设备中的每一个指定要监控的错误。
33.根据权利要求31的方法,其中所述指定步骤还包括基于所述应用程序组的总工作量为所述多个设备中的每一个指定要监控的错误。
34.根据权利要求31的方法,其中所述指定步骤还包括为所述多个设备中的每一个任意指定要监控的错误。
35.根据权利要求31的方法,其中所述指定步骤还包括允许每个设备通过与其他设备协商而调整其工作量。
36.一种用于从软件错误中修复应用程序的方法,其中该应用程序包含代码,所述方法包括:
识别该应用程序的易受错误影响的源代码的一部分;
响应于该识别隔离该源代码部分;并且
将附加代码自动插入到该源代码的被隔离部分中,其中该附加代码将该错误与该应用程序被编程而为之提供出错代码的其它错误进行映射,并且其中该附加代码允许该应用程序继续运行而不会终止。
37.一种用于修复应用程序的方法,该方法包括:
检测该应用程序中的错误;
响应于检测到该错误,隔离与该错误相关联的应用程序的部分;
生成基于仿真器的免疫程序以修复该错误;
响应于在该应用程序的被隔离部分上应用基于仿真器的免疫程序,确定该基于仿真器的免疫程序是否修复该错误;并且
响应于确定该基于仿真器的免疫程序修复该错误,用该基于仿真器的免疫程序更新该应用程序。
38.根据权利要求37的方法,其中所述检测错误还包括使用至少一个传感器监控该应用程序的错误。
39.根据权利要求37的方法,其中所述检测错误还包括确定该应用程序的一个或多个部分是否易受外部攻击影响。
40.根据权利要求37的方法,其中所述检测错误还包括确定该应用程序的一个或多个部分是否包含有故障的指令。
41.一种用于修复在应用程序组的第一和第二成员上操作的应用程序的方法,该方法包括:
将该应用程序划分成第一和第二部分;
将该第一部分指定给该第一成员,以评估该第一部分内的错误;
将该第二部分指定给该第二成员,以评估该第二部分内的错误;
从该第一成员接收到该第一部分内的错误和被修复的第一部分的指示;并且
将该第一部分内的错误和被修复的第一部分的指示发送给该第二成员。
CNA2006800262402A 2005-06-01 2006-04-07 用于修复应用程序的方法和系统 Pending CN101529385A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/142,743 US7490268B2 (en) 2004-06-01 2005-06-01 Methods and systems for repairing applications
US11/142,743 2005-06-01

Publications (1)

Publication Number Publication Date
CN101529385A true CN101529385A (zh) 2009-09-09

Family

ID=37482112

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800262402A Pending CN101529385A (zh) 2005-06-01 2006-04-07 用于修复应用程序的方法和系统

Country Status (10)

Country Link
US (1) US7490268B2 (zh)
EP (1) EP1889082A2 (zh)
JP (1) JP2008547070A (zh)
CN (1) CN101529385A (zh)
AU (1) AU2006252969A1 (zh)
BR (1) BRPI0610948A2 (zh)
CA (1) CA2611050A1 (zh)
MX (1) MX2007015193A (zh)
RU (1) RU2007149553A (zh)
WO (1) WO2006130233A2 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101799855A (zh) * 2010-03-12 2010-08-11 北京大学 一种基于ActiveX组件模拟的网页木马检测方法
CN102193838A (zh) * 2010-03-02 2011-09-21 英业达股份有限公司 生成独立程序以修复主程序的系统及其方法
CN102521116A (zh) * 2011-12-29 2012-06-27 苏州佰思迈信息咨询有限公司 一种故障监控软件
CN102866961A (zh) * 2011-09-12 2013-01-09 微软公司 具有扩展的数据和用户隐私保护的存储器转储
WO2014005506A1 (zh) * 2012-07-02 2014-01-09 腾讯科技(深圳)有限公司 一种修复运行错误的方法、装置及系统
CN103995715A (zh) * 2014-05-06 2014-08-20 百度在线网络技术(北京)有限公司 应用程序的修复方法、装置及服务器
CN110262918A (zh) * 2019-06-19 2019-09-20 深圳市网心科技有限公司 进程崩溃分析方法及装置、分布式设备及存储介质
CN110520849A (zh) * 2017-02-10 2019-11-29 卢森堡大学 改进的计算装置
CN110928720A (zh) * 2020-02-10 2020-03-27 北京安博通科技股份有限公司 基于Linux系统的core dump文件生成方法及装置
TWI821938B (zh) * 2022-03-07 2023-11-11 中華電信股份有限公司 一種軟體自動部署系統、方法及其電腦可讀媒介

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7793233B1 (en) 2003-03-12 2010-09-07 Microsoft Corporation System and method for customizing note flags
US8589508B2 (en) * 2005-04-07 2013-11-19 Opanga Networks, Inc. System and method for flow control in an adaptive file delivery system
US7757282B2 (en) * 2005-05-20 2010-07-13 Microsoft Corporation System and method for distinguishing safe and potentially unsafe data during runtime processing
US7702959B2 (en) * 2005-08-02 2010-04-20 Nhn Corporation Error management system and method of using the same
WO2007022454A2 (en) 2005-08-18 2007-02-22 The Trustees Of Columbia University In The City Of New York Systems, methods, and media protecting a digital data processing device from attack
WO2007050667A2 (en) 2005-10-25 2007-05-03 The Trustees Of Columbia University In The City Of New York Methods, media and systems for detecting anomalous program executions
JP4770425B2 (ja) * 2005-11-24 2011-09-14 富士ゼロックス株式会社 保護済み実行プログラムの作成のためのプログラム、方法及び装置
US7581142B2 (en) * 2006-01-03 2009-08-25 Nec Laboratories America, Inc. Method and system usable in sensor networks for handling memory faults
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US20070245313A1 (en) * 2006-04-14 2007-10-18 Microsoft Corporation Failure tagging
US8127413B2 (en) * 2006-07-11 2012-03-06 Georgia Tech Research Corporation System and method for preventing race condition vulnerability
JP4823315B2 (ja) * 2006-08-14 2011-11-24 富士通株式会社 プログラム分析方法及び装置
WO2008055156A2 (en) * 2006-10-30 2008-05-08 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting an anomalous sequence of function calls
US20080109804A1 (en) * 2006-11-06 2008-05-08 Richard Welcher Bloomstein Additional uses of virtualization for disaster recovery and prevention
US7644316B2 (en) * 2006-11-08 2010-01-05 International Business Machines Corporation System, method and program for managing browser scripts sent from server to client
US7788540B2 (en) * 2007-01-31 2010-08-31 Microsoft Corporation Tracking down elusive intermittent failures
US7673178B2 (en) * 2007-01-31 2010-03-02 Microsoft Corporation Break and optional hold on failure
US7685471B2 (en) * 2007-02-01 2010-03-23 Fujitsu Limited System and method for detecting software defects
US8874425B2 (en) * 2007-03-22 2014-10-28 The Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8438609B2 (en) * 2007-03-22 2013-05-07 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US9558019B2 (en) * 2007-03-22 2017-01-31 Invention Science Fund I, Llc Coordinating instances of a thread or other service in emulation
US20080235001A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing emulation decisions in response to software evaluations or the like
US20080235000A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing security control practice omission decisions from service emulation indications
US9378108B2 (en) * 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8495708B2 (en) * 2007-03-22 2013-07-23 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US20080234998A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Coordinating instances of a thread or other service in emulation
US20080271025A1 (en) * 2007-04-24 2008-10-30 Stacksafe, Inc. System and method for creating an assurance system in a production environment
US20080271018A1 (en) * 2007-04-24 2008-10-30 Andrew Gross System and Method for Managing an Assurance System
US7739553B2 (en) * 2007-05-31 2010-06-15 Microsoft Corporation System crash analysis using path tracing technologies
US7933873B2 (en) * 2008-01-17 2011-04-26 International Business Machines Corporation Handling transfer of bad data to database partitions in restartable environments
US8156084B2 (en) * 2008-01-17 2012-04-10 International Business Machines Corporation Transfer of data from positional data sources to partitioned databases in restartable environments
US8521682B2 (en) * 2008-01-17 2013-08-27 International Business Machines Corporation Transfer of data from transactional data sources to partitioned databases in restartable environments
US8037529B1 (en) * 2008-03-19 2011-10-11 Symantec Corporation Buffer overflow vulnerability detection and patch generation system and method
US8434064B2 (en) 2008-03-28 2013-04-30 Microsoft Corporation Detecting memory errors using write integrity testing
CA2674327C (en) * 2008-08-06 2017-01-03 Trend Micro Incorporated Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor
US7937625B2 (en) * 2008-09-26 2011-05-03 Microsoft Corporation Evaluating effectiveness of memory management techniques selectively using mitigations to reduce errors
US8745361B2 (en) * 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
US8271834B2 (en) 2008-12-15 2012-09-18 International Business Machines Corporation Method and system for providing immunity to computers
US8713687B2 (en) * 2008-12-17 2014-04-29 Symantec Corporation Methods and systems for enabling community-tested security features for legacy applications
US8214693B2 (en) * 2009-01-08 2012-07-03 International Business Machines Corporation Damaged software system detection
US8990930B2 (en) * 2009-02-06 2015-03-24 Microsoft Corporation Code property analysis for security mitigations
US8826424B2 (en) * 2009-03-27 2014-09-02 Sophos Limited Run-time additive disinfection of malware functions
US20110029819A1 (en) * 2009-07-31 2011-02-03 Virendra Kumar Mehta System and method for providing program tracking information
US20110041179A1 (en) * 2009-08-11 2011-02-17 F-Secure Oyj Malware detection
CN101807156A (zh) * 2010-03-04 2010-08-18 广东宝莱特医用科技股份有限公司 一种通过接口媒介进行系统维护更新的设备及方法
US8555105B2 (en) * 2010-04-12 2013-10-08 International Business Machines Corporation Fallover policy management in high availability systems
US8819637B2 (en) 2010-06-03 2014-08-26 International Business Machines Corporation Fixing security vulnerability in a source code
US8782435B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
US8769516B2 (en) * 2010-08-19 2014-07-01 International Business Machines Corporation Systems and methods for automated support for repairing input model errors
US8990634B2 (en) 2010-11-03 2015-03-24 Microsoft Technology Licensing, Llc Reporting of intra-device failure data
KR101440299B1 (ko) * 2010-11-16 2014-09-17 한국전자통신연구원 자가 치유 시스템 및 그 방법
US20120174076A1 (en) * 2011-01-04 2012-07-05 Zoran Rajic Systems and methods for profiling servers
EP2756399B1 (en) 2011-09-12 2021-01-20 Microsoft Technology Licensing, LLC Querying and repairing data
EP2756366B1 (en) 2011-09-15 2020-01-15 The Trustees of Columbia University in the City of New York Systems, methods, and media for detecting return-oriented programming payloads
US8782609B2 (en) * 2011-09-23 2014-07-15 Microsoft Corporation Test failure bucketing
CN103034560B (zh) * 2011-09-29 2015-11-11 腾讯科技(深圳)有限公司 一种修复应用软件的方法、装置及系统
US9015702B2 (en) * 2012-01-13 2015-04-21 Vasanth Bhat Determining compatibility of an application with different versions of an operating system
US8990183B2 (en) * 2012-06-06 2015-03-24 Microsoft Technology Licensing, Llc Deep application crawling
CN103577215A (zh) * 2012-08-10 2014-02-12 腾讯科技(深圳)有限公司 一种软件卸载安装方法及系统
JP6019995B2 (ja) * 2012-09-24 2016-11-02 日本電気株式会社 分散システム、サーバ計算機、及び障害発生防止方法
US8489925B1 (en) * 2012-11-09 2013-07-16 Kaspersky Lab, Zao System and method for processing of system errors
CN103049373B (zh) * 2012-11-29 2015-08-19 北京奇虎科技有限公司 一种崩溃的定位方法和装置
US8762948B1 (en) 2012-12-20 2014-06-24 Kaspersky Lab Zao System and method for establishing rules for filtering insignificant events for analysis of software program
US9104796B2 (en) * 2012-12-21 2015-08-11 International Business Machines Corporation Correlation of source code with system dump information
CN103019830B (zh) * 2012-12-31 2016-09-21 深圳Tcl新技术有限公司 实现浏览器脚本语言执行容错的方法及装置
US9792436B1 (en) * 2013-04-29 2017-10-17 Symantec Corporation Techniques for remediating an infected file
CN104346267B (zh) * 2013-08-08 2018-05-22 腾讯科技(深圳)有限公司 生成程序缺陷定位信息的方法及装置
KR102368170B1 (ko) 2013-09-12 2022-02-25 버섹 시스템즈, 인코포레이션 멀웨어의 자동화된 런타임 검출
US20150304343A1 (en) 2014-04-18 2015-10-22 Intuit Inc. Method and system for providing self-monitoring, self-reporting, and self-repairing virtual assets in a cloud computing environment
US10757133B2 (en) 2014-02-21 2020-08-25 Intuit Inc. Method and system for creating and deploying virtual assets
US9866581B2 (en) 2014-06-30 2018-01-09 Intuit Inc. Method and system for secure delivery of information to computing environments
US9276945B2 (en) * 2014-04-07 2016-03-01 Intuit Inc. Method and system for providing security aware applications
EP3103018B1 (en) * 2014-02-28 2019-07-03 Huawei Technologies Co., Ltd. Method for debugging computer program
US11294700B2 (en) 2014-04-18 2022-04-05 Intuit Inc. Method and system for enabling self-monitoring virtual assets to correlate external events with characteristic patterns associated with the virtual assets
RU2583711C2 (ru) * 2014-06-20 2016-05-10 Закрытое акционерное общество "Лаборатория Касперского" Способ отложенного устранения вредоносного кода
AU2015279923B9 (en) 2014-06-24 2018-01-25 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
US10114726B2 (en) 2014-06-24 2018-10-30 Virsec Systems, Inc. Automated root cause analysis of single or N-tiered application
DE102014213503A1 (de) * 2014-07-11 2016-01-14 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Überwachen einer Software in einem Straßenfahrzeug
US9535688B2 (en) * 2014-07-23 2017-01-03 Verizon Patent And Licensing Inc. Efficient deployment of application revisions and implementation of application rollbacks across multiple application servers
US10102082B2 (en) 2014-07-31 2018-10-16 Intuit Inc. Method and system for providing automated self-healing virtual assets
CN104216736A (zh) * 2014-08-14 2014-12-17 小米科技有限责任公司 增量升级方法、装置及终端设备
US9740551B2 (en) 2014-12-02 2017-08-22 International Business Machines Corporation Enhanced restart of a core dumping application
US9485273B2 (en) 2014-12-09 2016-11-01 At&T Intellectual Property I, L.P. System and method to diffuse denial-of-service attacks using virtual machines
CN106162609B (zh) * 2015-05-11 2019-12-24 腾讯科技(深圳)有限公司 一种推送数据的方法及装置
CN105807204B (zh) * 2016-03-08 2018-07-27 天津大学 基于频谱细化的硬件木马检测方法
US10594733B2 (en) * 2016-04-06 2020-03-17 Rapid7, Inc System and method for application software security and auditing
KR102419574B1 (ko) 2016-06-16 2022-07-11 버섹 시스템즈, 인코포레이션 컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법
US10365959B2 (en) 2016-06-23 2019-07-30 Vmware, Inc. Graphical user interface for software crash analysis data
US10268563B2 (en) * 2016-06-23 2019-04-23 Vmware, Inc. Monitoring of an automated end-to-end crash analysis system
US10191837B2 (en) 2016-06-23 2019-01-29 Vmware, Inc. Automated end-to-end analysis of customer service requests
US10338990B2 (en) 2016-06-23 2019-07-02 Vmware, Inc. Culprit module detection and signature back trace generation
US10331508B2 (en) * 2016-06-23 2019-06-25 Vmware, Inc. Computer crash risk assessment
US10621333B2 (en) * 2016-08-08 2020-04-14 International Business Machines Corporation Install-time security analysis of mobile applications
US20180075233A1 (en) * 2016-09-13 2018-03-15 Veracode, Inc. Systems and methods for agent-based detection of hacking attempts
US10127125B2 (en) * 2016-10-21 2018-11-13 Accenture Global Solutions Limited Application monitoring and failure prediction
CN106445828B (zh) * 2016-10-21 2019-10-29 福建中金在线信息科技有限公司 一种产品测试方法及装置
US11226875B2 (en) 2017-07-20 2022-01-18 International Business Machines Corporation System halt event recovery
US10379934B2 (en) * 2017-07-31 2019-08-13 Oracle International Corporation System and method of providing post error analysis for instances of applications in cloud service environments on a per user basis
US10585756B2 (en) 2017-08-07 2020-03-10 International Business Machines Corporation Point-in-time copy on a remote system
US10795776B2 (en) 2017-11-06 2020-10-06 International Business Machines Corporation Multiple point-in-time copies on a remote system
KR101885146B1 (ko) * 2017-11-22 2018-08-03 (유)아홉 애플리케이션 보호 장치 및 방법
US10831605B2 (en) 2018-04-27 2020-11-10 Rovi Guides, Inc. System and method for detection of, prevention of, and recovery from software execution failure
US11301241B2 (en) 2019-06-18 2022-04-12 David Michael Vigna Enterprise reports, error handler and audits compartmentalized by web application
US11409862B2 (en) * 2019-07-22 2022-08-09 Cloud Linux Software Inc. Intrusion detection and prevention for unknown software vulnerabilities using live patching

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067410A (en) * 1996-02-09 2000-05-23 Symantec Corporation Emulation repair system
US5960170A (en) * 1997-03-18 1999-09-28 Trend Micro, Inc. Event triggered iterative virus detection
US6553507B1 (en) * 1998-09-30 2003-04-22 Intel Corporation Just-in-time software updates
US6378087B1 (en) * 1999-06-08 2002-04-23 Compaq Computer Corporation System and method for dynamically detecting unchecked error condition values in computer programs
JP2001339328A (ja) * 2000-05-25 2001-12-07 Communication Research Laboratory 受信装置、受信方法、ならびに、情報記録媒体
US6907396B1 (en) * 2000-06-01 2005-06-14 Networks Associates Technology, Inc. Detecting computer viruses or malicious software by patching instructions into an emulator
US7363657B2 (en) * 2001-03-12 2008-04-22 Emc Corporation Using a virus checker in one file server to check for viruses in another file server
US7770223B2 (en) * 2001-04-12 2010-08-03 Computer Associates Think, Inc. Method and apparatus for security management via vicarious network devices
US7409717B1 (en) * 2002-05-23 2008-08-05 Symantec Corporation Metamorphic computer virus detection
US7181652B2 (en) * 2003-01-07 2007-02-20 Hewlett-Packard Development Company, L.P. System and method for detecting and isolating certain code in a simulated environment
US7293201B2 (en) 2003-01-17 2007-11-06 Microsoft Corporation System and method for active diagnosis and self healing of software systems
US20050015579A1 (en) * 2003-07-15 2005-01-20 Rajeev Grover Handling exceptions
JP2005107803A (ja) * 2003-09-30 2005-04-21 Hitachi Ltd システム更新方法、および、それを実行するための計算機システム
US7318226B2 (en) 2003-10-16 2008-01-08 International Business Machines Corporation Distributed autonomic solutions repository
US7506241B2 (en) 2003-10-16 2009-03-17 International Business Machines Corporation Method and apparatus for a self healing agent
US7962914B2 (en) * 2003-11-25 2011-06-14 Emc Corporation Method and apparatus for load balancing of distributed processing units based on performance metrics
US8544096B2 (en) * 2003-12-30 2013-09-24 Emc Corporation On-access and on-demand distributed virus scanning

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193838A (zh) * 2010-03-02 2011-09-21 英业达股份有限公司 生成独立程序以修复主程序的系统及其方法
CN101799855A (zh) * 2010-03-12 2010-08-11 北京大学 一种基于ActiveX组件模拟的网页木马检测方法
CN101799855B (zh) * 2010-03-12 2012-08-22 北京大学 一种基于ActiveX组件模拟的网页木马检测方法
CN102866961A (zh) * 2011-09-12 2013-01-09 微软公司 具有扩展的数据和用户隐私保护的存储器转储
CN102866961B (zh) * 2011-09-12 2016-06-22 微软技术许可有限责任公司 具有扩展的数据和用户隐私保护的存储器转储
CN102521116A (zh) * 2011-12-29 2012-06-27 苏州佰思迈信息咨询有限公司 一种故障监控软件
CN103530199B (zh) * 2012-07-02 2015-12-02 腾讯科技(深圳)有限公司 一种修复软件运行错误的方法、装置及系统
CN103530199A (zh) * 2012-07-02 2014-01-22 腾讯科技(深圳)有限公司 一种修复软件运行错误的方法、装置及系统
WO2014005506A1 (zh) * 2012-07-02 2014-01-09 腾讯科技(深圳)有限公司 一种修复运行错误的方法、装置及系统
US9575830B2 (en) 2012-07-02 2017-02-21 Tencent Technology (Shenzhen) Company Limited Run-time error repairing method, device and system
CN103995715A (zh) * 2014-05-06 2014-08-20 百度在线网络技术(北京)有限公司 应用程序的修复方法、装置及服务器
CN103995715B (zh) * 2014-05-06 2017-11-17 百度在线网络技术(北京)有限公司 应用程序的修复方法、装置及服务器
CN110520849A (zh) * 2017-02-10 2019-11-29 卢森堡大学 改进的计算装置
CN110262918A (zh) * 2019-06-19 2019-09-20 深圳市网心科技有限公司 进程崩溃分析方法及装置、分布式设备及存储介质
CN110262918B (zh) * 2019-06-19 2023-07-18 深圳市网心科技有限公司 进程崩溃分析方法及装置、分布式设备及存储介质
CN110928720A (zh) * 2020-02-10 2020-03-27 北京安博通科技股份有限公司 基于Linux系统的core dump文件生成方法及装置
TWI821938B (zh) * 2022-03-07 2023-11-11 中華電信股份有限公司 一種軟體自動部署系統、方法及其電腦可讀媒介

Also Published As

Publication number Publication date
EP1889082A2 (en) 2008-02-20
MX2007015193A (es) 2008-11-06
US20060195745A1 (en) 2006-08-31
AU2006252969A2 (en) 2006-12-07
US7490268B2 (en) 2009-02-10
WO2006130233A3 (en) 2009-04-16
BRPI0610948A2 (pt) 2010-08-10
WO2006130233A2 (en) 2006-12-07
RU2007149553A (ru) 2009-07-20
CA2611050A1 (en) 2006-12-07
JP2008547070A (ja) 2008-12-25
AU2006252969A1 (en) 2006-12-07

Similar Documents

Publication Publication Date Title
CN101529385A (zh) 用于修复应用程序的方法和系统
US20210096941A1 (en) Methods, media and systems for detecting anomalous program executions
US20200019705A1 (en) Methods, media, and systems for detecting an anomalous sequence of function calls
Lombardi et al. Secure virtualization for cloud computing
Wang et al. Malicious firmware detection with hardware performance counters
Locasto et al. Software self-healing using collaborative application communities
JP2021511571A (ja) 投機的実行のエクスプロイトに対する防御
Di Pietro et al. CloRExPa: Cloud resilience via execution path analysis
Zeng et al. Tailored application-specific system call tables
Chen et al. Modeling and evaluating the security threats of transient errors in firewall software
Paleari Dealing with next-generation malware
Shi et al. Architectural support for run-time validation of control flow transfer
Chevalier Detecting and Surviving Intrusions: Exploring New Host-Based Intrusion Detection, Recovery, and Response Approaches
Gama et al. Deployment and activation of faulty components at runtime for testing self-recovery mechanisms
Sang et al. SENSE: Enhancing Microarchitectural Awareness for TEEs via Subscription-Based Notification
Chevalier et al. Intrusion Survivability for Commodity Operating Systems
CN117828684A (zh) 一种区块链的风险防护系统
Marco et al. Security through emulation-based processor diversification
Lombardi et al. Secure Distributed Computing on a Manycore Cloud
Zou et al. Memshepherd: comprehensive memory bug fault‐tolerance system
Williams et al. CuPIDS enhances StUPIDS: exploring a co-processing paradigm shift in information system security
Zhang Virtualization-based Security Analysis of Production Server Systems
Mas’ ud et al. Virtual machine based autonomous web server

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090909