Nothing Special   »   [go: up one dir, main page]

CN107077412B - 单层或n层应用的自动化根本原因分析 - Google Patents

单层或n层应用的自动化根本原因分析 Download PDF

Info

Publication number
CN107077412B
CN107077412B CN201580045505.2A CN201580045505A CN107077412B CN 107077412 B CN107077412 B CN 107077412B CN 201580045505 A CN201580045505 A CN 201580045505A CN 107077412 B CN107077412 B CN 107077412B
Authority
CN
China
Prior art keywords
computer
computer instruction
instruction
applications
engine
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
CN201580045505.2A
Other languages
English (en)
Other versions
CN107077412A (zh
Inventor
S·V·古普塔
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.)
Virsec Systems Inc
Original Assignee
Virsec Systems Inc
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 Virsec Systems Inc filed Critical Virsec Systems Inc
Publication of CN107077412A publication Critical patent/CN107077412A/zh
Application granted granted Critical
Publication of CN107077412B publication Critical patent/CN107077412B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • 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
    • 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/0709Error 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 distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • 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/0715Error 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 system implementing multitasking
    • 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/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/079Root cause analysis, i.e. error or fault diagnosis
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Landscapes

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

Abstract

在示例实施例中,系统可以促进与一个或多个计算机应用相关联的根本原因分析。系统可以在一个或多个计算机应用处接收全局时间基准。每个计算机应用可以具有对应的本地时间基准。每个计算机应用可以使它的本地时间基准与全局时间基准同步。系统可以关于对应的本地时间基准来监视计算机应用的至少一个计算机指令。系统可以取回与至少一个计算机指令相关联的信息。系统可以将取回的计算机指令信息的至少一部分转发给验证引擎。系统可以使用取回的计算机指令信息的至少一部分来促进根本原因分析。

Description

单层或N层应用的自动化根本原因分析
相关申请
本申请要求于2014年6月24日提交的美国临时申请No.61/998,321的权益。以上申请的全部教导通过引用并入本文。
背景技术
由像卡内基·梅隆(Carnegie Mellon)和静态分析工具的供应商一样的机构执行的许多研究已经表明,软件开发者花费其20%至25%的时间来编写新代码,并且花费其剩余的75%至80%的时间将它们的代码与其他开发者的代码结合或者修复它们自己的代码的错误。在任何情况下,修复除了最平凡错误之外的所有错误可以花费长时间,特别是如果事务跨越多个线程、进程或层。当这些参与的进程在多个物理机器上运行时,问题变得甚至更加复杂。
发明内容
一些实施例可以解决现有方式的上述缺陷。一些实施例包括提供优点的自动化NTIER(也被称为“N-TIER(N层)”或多层)调试工具,优点至少在于其可大大减少在解决复杂错误时所花费的人工小时的数量。一些实施例的优点在于,它们使开发者能够快速找出复杂的问题,由此为他们的雇主节省大量的时间和资源。一些实施例不需要源代码可用于它们的操作。因此,在一些实施例中,代码分析可以在客户的位置处执行,并且还可以扩展到第三方可执行文件中。此外,一些实施例可以跨层级来使时间相关,这可能是有利的,因为其可以帮助隔离跨多个层级并且需要保持大量状态的复杂问题。
本公开内容针对于促进与一个或多个计算机应用(也被称为“应用”)相关联的根本原因分析的系统和方法。在一些实施例中,系统和方法可以在一个或多个计算机应用处接收全局时间基准。该一个或多个计算机应用中的每个计算机应用可以具有对应的本地时间基准。在一些实施例中,系统和方法可以使每个本地时间基准与全局时间基准同步。在一些实施例中,系统和方法可以关于对应的本地时间基准来监视一个或多个计算机应用的至少一个计算机指令。在一些实施例中,系统和方法可以监视至少一个计算机指令的执行、加载、实现和/或存储器分配。在一些实施例中,系统和方法可以取回与至少一个计算机指令相关联的信息。在一些实施例中,系统和方法可以将取回的计算机指令信息的至少一部分转发给验证引擎,其中该至少一部分促进验证引擎处的根本原因分析。
在一些实施例中,系统和方法可以针对网络抖动来调整全局时间基准。在一些示例实施例中,本地时间基准可以通过借助同步分组对网络遍历时间的调整而被“调整”到全局时间基准。在一些实施例中,系统和方法可以接收同步消息(或分组),以便使本地时间基准与全局时间基准同步。在一些实施例中,可以周期性地(以可选地可编程的间隔)和/或在用户命令上发送同步消息。
在一些实施例中,系统和方法可以监视一个或多个计算机指令的至少一个序列和改至少一个序列的对应的计算机指令信息。在一些实施例中,一个或多个计算机应用可以包括至少两个计算机应用。在一些实施例中,该至少两个计算机应用中的每个计算机应用可以具有该至少两个计算机应用中的单个计算机应用的不同层级。
在一些实施例中,系统和方法可以在验证引擎处将取回的计算机指令信息与存储的计算机指令信息比较,以确定与至少一个计算机指令相关联的意外行为。
在系统和方法的一些实施例中,监视还可以包括:在物理计算机的流水线中截取至少一个计算机指令中的一个或多个计算机指令;执行与该至少一个计算机指令中的一个或多个计算机指令相关联的动态二进制插桩以生成至少一个二进制插桩的指令,以及在物理计算机的高速缓冲存储器中与该至少一个二进制插桩的指令交换至少一个计算机指令中的一个或多个计算机指令。
在系统和方法的一些实施例中,取回的计算机指令信息可以包括以下各项中的至少一项:至少一个计算机指令的名称、至少一个计算机指令的地址、一个计算机指令的进入状态、至少一个计算机指令的输入变元、至少一个计算机指令的退出状态、至少一个计算机指令的时间和至少一个计算机指令的返回值。在系统和方法的一些实施例中,取回的计算机指令信息可以包括至少一个二进制计算机指令,并且该至少一个二进制计算机指令可以包括函数、系统调用、线程间通信调用和进程间通信调用中的至少一种。
系统和方法的一些实施例可以在多个计算机应用处接收全局时间基准。多个计算机应用的每个计算机应用实例可以具有对应的本地时间基准。系统和方法的一些实施例可以关于对应的本地时间基准来监视多个计算机应用的至少一个计算机指令。系统和方法的一些实施例可以取回与多个计算机应用的至少一个计算机指令相关联的信息。系统和方法的一些实施例可以监视多个计算机应用中的至少两个计算机应用之间的至少一个通信。系统和方法的一些实施例可以取回与至少一个通信相关联的信息。系统和方法的一些实施例可以将取回的计算机指令信息和取回的通信信息的至少一部分转发给验证引擎。在一些实施例中,该至少一部分可以促进验证引擎处的根本原因分析。
在系统和方法的一些实施例中,多个计算机应用中的两个或更多个计算机应用可以位于跨网络被连接的分离的物理机器上。
在一些实施例中,系统可以包括分析引擎。系统还可以包括可以被通信地耦合到分析引擎的仪器引擎。系统还可包括可以被通信地耦合到分析引擎和/或仪器引擎的验证引擎。
在一些实施例中,分析引擎和仪器引擎可以包括处理器结构,该处理器结构包括一个或多个处理器。在一些实施例中,分析引擎、仪器引擎和验证引擎可以包括处理器结构,该处理器结构包括一个或多个处理器。
一些实施例由于多种原因是有利的。一些实施例的一个优点是开发者不再必须使用调试器并且放置断点或添加日志记录语句来捕获运行时状态以便找出这些问题。一些实施例的另一优点是源代码不必在代码体内被插桩。一些实施例的又一优点是它们不需要源代码插桩,而是可以利用二进制插桩。一些实施例的另一优点是开发者不必重建代码并且然后在作出决定之前手动观察结果。一些实施例的又一优点是它们使增强的调试框架成为可能,因为它们不掩盖由于竞争条件或定时引起的故障。在一些实施例中,故障不被掩盖至少是因为:被应用的插桩对源代码不是侵入性的,而是在指令高速缓存中被执行的二进制插桩(与源插桩相反),由此避免对定时的改变或源代码插桩方式的延迟。
一些实施例的又一优点是:当一个或多个事务、进程或线程在不同的机器上运行时,用户可以容易地保持上下文并且跨每个线程、进程或层级来使事件相关。一些实施例的另一优点是它们可以提供比较来自客户设置和开发者设置的运行时轨迹以看出哪里出现问题的能力。一些实施例可以使得容易找到问题的源,从而提供减少的上市时间和降低的软件产品成本的优点。
一些实施例可以提供包括跟踪报告的优点,该跟踪报告包括来自用户代码、系统代码和网络活动的每线程和每进程运行时数据,这可以通过使用公共高分辨率时间服务器而被容易地同步。一些实施例可以提供以下优点:通过在时间上使层重叠,引发多个层的复杂事务可被容易地发现和检查和调试。一些实施例的优点是用户运行时数据在测试被完成之后很久可以是可用的。一些实施例的另一优点是用户不需要通过手动或乏味的过程来放置插桩。
一些实施例提供关于代码兼容性的优点。一些实施例提供的优点在于,它们对以包括但不限于C、C++和其他语言的语言(也被称为“软件语言”)被编写的编译代码以及以包括但不限于JAVA、Ruby、PHP、Perl、Python和其他语言的语言被编写的解释代码有效。一些实施例的又一优点在于它们对使用以包括但不限于C、C++和其他语言的语言被编写的编译代码和以包括但不限于JAVA、Ruby、PHP、Perl、Python和其他语言的语言被编写的解释代码的组合被编写的第三方应用有效。
一些实施例可以提供关于根本原因分析的优点。在一些实施例中,可以通过比较在发生故障和未发生故障的“良好”条件下获得的轨迹来执行根本原因分析。在一些实施例中,还可以通过比较每个函数的已知输入或输出参数并检查它们的运行时状态来执行根本原因分析。在一些实施例中,根本原因分析可以用来准确地找出计算机应用的已知良好状态与已知不良状态之间的分歧点。
附图说明
根据如在附图中示出的对本公开内容的示例实施例的以下更具体的描述,前述内容将是显而易见的,在附图中在不同的视图中相似的附图标记指代相同的部分。附图不一定是成比例的,在图示本公开内容的实施例时进行强调。
图1图示了多层过程中的断点。
图2图示了多层或多进程应用的示例。
图3图示了本公开内容的实施例中的用于促进与一个或多个计算机应用相关联的根本原因分析的示例方法的流程图。
图4图示了图3的流程图的示例实施例系统。
图5图示了本公开内容的实施例中的在运行时对用户代码进行插桩。
图6图示了本公开内容的实施例中的多层事件相关显示。
图7A图示了本公开内容的实施例中的客户端和分析引擎的示例框图。
图7B图示了用来在图7A的客户端和分析引擎之间传输数据的示例协议数据单元(PDU)。
图8图示了其中可以实现本公开内容的实施例的计算机网络或类似的数字处理环境。
图9图示了图8的计算机系统中的计算机(例如,客户端处理器/设备或服务器计算机)的示例内部结构的示图。
具体实施方式
下面是对本公开内容的示例实施例的描述。
本文引用的所有专利、公开的申请和参考文献的教导通过引用而整体并入。
如在一些实施例中的,现代计算机应用可以包括许多层(例如,多层体系结构,其是可以使呈现、计算机应用处理和数据管理分离的客户端—服务器体系结构)。一些实施例可以包括但不限于浏览器层、框架层、业务或应用逻辑层和数据库层。当作为层中的某一用户动作的结果而发起事务时,可以在一起提供应用的功能的n层中的相关计算机应用中触发事件的级联。在如本文所描述的一些实施例中,容易记录和确定这样的故障在多层计算机应用的代码中的何处发生。一些实施例克服了当尝试在所有层中的操作代码中设置断点或某种形式的日志时用户面临的挑战,因为一些实施例不需要这样的断点或日志记录。
一些实施例包括对计算机应用(例如,软件应用或软件)的调试,其中计算机应用的功能被分布在一个或多个线程、进程和/或层中。这样的软件可以包括嵌入式软件的组合,包括但不限于移动设备中的嵌入式软件和/或在个人计算设备上运行的桌面软件(包括但不限于数据中心中的或在服务器上运行的膝上型、台式和/或基于web的计算机应用软件)。软件应用还可以包括解释代码或者编译代码,该解释代码包括但不限于JAVA或脚本、Ruby、PHP,该编译代码包括但不限于以C或C++编写的代码。应用层或进程可以在包括但不限于移动、台式、膝上型和/或服务器平台的一个或多个计算平台上运行。在一些实施例中,软件开发者用户可以对在其自身或第三方应用中的任何位置(包括但不限于框架、堆栈和/或库)中出现的错误进行故障寻找,无论是不稳定的还是一致的。一些实施例可以将一个或多个软件错误向下隔离到代码段或代码行,即使一个或多个软件错误由第三方代码引起。
调试技术的概述
调试技术可用于调试单层或多层计算机应用,或单进程或多进程计算机应用。一种调试技术是基于调试器的代码调试,如图1中所示。使用这样的技术,大多数集成开发环境提供调试和跟踪功能。在基于调试器的代码调试中,计算机应用开发者(例如用户、开发者或应用开发者)运行镜像的调试版本并创建断点和/或跟踪点。当计算机应用运行并遇到断点时,计算机应用开发者可以检查不同的变量并且用手或通过跟踪点自动地记录预定义变量的选择的状态。如图1中所示,如果计算机应用100包括许多进程(统称为102、104、106),则单独的断点可被放置在每个进程(102、104和106中的每一个)中。当断点在进程1(元素102)中被触发时,其他进程(104、106)也可被停止,从而使得计算机应用的状态可被捕获。以这种方式处理断点可能是困难的、复杂的、繁琐的、麻烦的或不切实际的。
一些实施例克服了基于调试器的代码调试的上述缺陷。鉴于一些实施例不需要源代码以用于调试,一些实施例至少在没有源代码可用于施加断点的情况(包括但不限于组成线程和进程是没有源代码可用于施加断点的第三方二进制文件的情况)下不遭受基于调试器的代码调试的缺陷。与基于调试器的代码调试中不同,一些实施例可以成功地调试间歇地(例如,在某些时间但不在其它时间)发生的复杂的暂态问题。因为一些实施例不需要放置断点,因此一些实施例不会遭受基于调试器的代码调试的缺陷,其中放置断点的动作可充分地改变产品,使得现在的瞬态行为可能不会表现其本身。与基于调试器的代码调试不同,在一些实施例中,计算机应用可以用不同的时序约束来运行,因为用户线程可以运行附加代码。鉴于一些实施例不依赖于源代码,不同于基于调试器的调试,一些实施例可以在客户位置被使用,即使当在该位置处没有可用的源代码时。
另一种调试技术是基于日志的代码调试。开发者可以在源代码中放置日志语句。这养的方式比基于断点的调试有一个好处,因为应用状态不必被手动捕获。开发者既不必手动捕获状态,也不需要停止下游线程和进程。遗憾的是,开发者可能不总是提前知道开发者为了隔离正被调试的问题所应插桩的代码。当开发者处理由合作开发者编写的代码时,这是一个甚至更复杂的问题。通常,添加日志消息的这样的过程是增量过程。发现在哪里放置插桩可能是具有试错尝试的迭代过程。作为结果,基于日志的代码调试可能有助于调试简单的问题。然而,随着问题的复杂性增加,确定正确的插桩集合对于大多数开发者来说可能变得非常乏味和令人沮丧。另外,添加源代码插桩的过程可能改变代码的行为,并且因此,原始问题可能不再显示其自身(例如,问题可能被掩盖或不可检测)。此外,这一过程无法在客户位置被使用,因为在该位置没有可用的源代码。一些实施例可以补救关于基于日志的代码调试的上述缺陷。
又一种调试技术是动态代码调试200,如图2中所示。像DynaTrace一样的一些商业工具将二进制代码自动注入现有的用户JAVA代码中。像New Relic一样的其他工具可以从像Ruby和PHP一样的脚本捕获足够的状态。因此,当AID(或AIDE)JAVA代码运行或PHP/Ruby脚本运行时,新插桩的代码可以生成具有用于该层或线程(或进程)的参数信息的运行时调用栈跟踪。这样的信息可以使得用户能够确定JAVA、PHP、Ruby或其他脚本语言代码如何与其周围的计算环境的其余部分交互。如图2中所示,商业工具(包括但不限于DynaTrace或NewRelic)可以为逻辑层212而不是为浏览器层202(其使得用户能够通过个人计算机或PC客户端204通过网络206向应用服务器210通信)、框架层214或后端层220捕获足够的运行时状态。如果框架层214未被正确配置,则即使逻辑层212被正确编码,逻辑层212代码也可能不正确地表现。例如,如果框架层214中的休眠层未正确设置,则取回(通过网络216通信地耦合到框架层214的后端层220的)数据库224的记录中的字段的简单查询可能导致随着整个数据库内容被递送给逻辑层212而生成大量查询。调试为什么存储器使用突然迅速上升或为什么取读一个记录用SQL查询淹没SQL数据库222可能需要大量的时间和资源。更一般地,由于配置不当的代码(自己或第三方)而被引入的调试错误可能是具有挑战性的。一些实施例补救了关于动态代码调试的上述缺陷。
实施例的优点
与基于调试器的代码调试、基于日志的代码调试和/或动态代码调试相比,一些实施例可提供优点。其他实施例可结合该方法和系统,采用代码调试、基于日志的代码调试和/或动态代码调试或修改形式的代码调试、基于日志的代码调试和/或动态代码调试中的一个或多个。
一些示例实施例不需要访问源代码。因此,一些示例实施例克服了调试共同开发者的复杂或难读的代码或调试第三方复杂或难读的代码的挑战。鉴于一些实施例不需要源代码插桩,一些实施例不会遭受插桩改变的缺陷,该缺陷导致新代码不展现与发布的代码相同的时序假象(artifact)。这样,一些实施例不遭受以下缺陷:放置源插桩的动作可能掩盖代码中的真实问题。
在一些实施例中,用户避免挫败,因为不要求他们具有放置源代码插桩的经验,并且不要求他们找到插桩的混合,这否则在没有一些实施例的情况下是缓慢的、手动的或迭代的过程。这样,如果问题是配置不良的代码之一,则一些实施例不需要对由应用中的不同层、线程或进程生成的数据进行冗长和手动的相关。一些实施例可以提供如这里在本公开内容中所描述的其他优点。
自动化根本原因分析概述
一些实施例通过创建不改变应用的原始本地代码并且仍然管理以在代码被执行之前即时放置插桩的机制(例如,二进制插桩)来使得调试过程简单且独立于开发者的技能集。另外,在一些实施例中,产品的各层可以接收针对周期性网络延迟而被适当调整的公共时基(例如,全局时间基准),从而使得即使每个层可能看起来异步地运行,但是总体上,各层可以参考相同的时基,并且因此,诸如调用栈之类的运行时数据可以在时间上重叠。这样,在一些实施例中,事务可以按照时间有序的方式出现在最终日志中,而无论哪个层正在执行哪个代码。
另外,在一些实施例中,对于每层,来自用户代码(包括但不限于原生、JAVA或脚本代码)、系统代码(包括但不限于系统调用,其可以是操作系统或OS依赖的)、网络代码(包括但不限于进程之间的套接字交换)的运行时数据可以是重叠的。这样,在一些实施例中,用户可以随着来自多个层的调用栈在时间上发生而快速地扫描这些调用栈。
在一些实施例中,通过比较来自一个或多个测试用例的已知良好实例(包括但不限于在装运产品之前由质量保证执行的详细测试或回归测试产生的那些)的调用栈和从客户部署产生的那些,容易发现轨迹开始发散的地方。这样,在一些实施例中,即使对于缺乏经验的开发者来说,标识问题的根本原因也是容易的。
自动化根本原因分析过程
图3图示了用于促进与一个或多个计算机应用(和/或计算机应用的层)相关联的根本原因分析的示例方法(和系统)300的流程图。方法(和系统)300可以促进与一个或多个计算机应用(例如,计算机应用层)相关联的根本原因分析。在一些实施例中,方法(和系统)300可以在一个或多个计算机应用处接收全局时间基准302。一个或多个计算机应用中的每个计算机应用可以具有对应的本地时间基准。在一些实施例中,系统和方法300可以使每个本地时间基准与全局时间基准同步304。
一些实施例可以周期性地使本地时间基准与全局时间基准相关以解决网络抖动。在一些实施例中,每个计算机应用(或层)可以包括一组或多组记录,其包括格式为{本地高分辨率定时器,公共或全局网络高分辨率定时器}的定时器数据的有序对。一些实施例可以包括本地和全局定时器之间的周期性同步,这由此可以克服定时漂移和/或往返延迟的缺陷。在一些实施例中,系统和方法可以针对网络抖动来调整全局时间基准。
在一些示例实施例中,本地时间基准可以通过借助于同步分组(或同步脉冲或信号)对网络遍历时间的调整而被“调整”为全局时间基准。在一些实施例中,系统和方法可以接收同步消息(或分组或脉冲或信号),以便使本地时间基准与全局时间基准同步。在一些实施例中,可以周期性地(以可选地可编程的间隔)和/或在用户命令上发送同步消息。
在一些实施例中,方法和系统300可以在每个计算机应用(或计算机应用的每层)处接收公共(全局)时间基准。在一些实施例中,方法和系统300可以在每个计算机应用(和/或每个应用层)处接收公共(全局)时间基准。在一些实施例中,方法和系统300可以通过使用共享库来接收公共(全局)时间基准,该共享库周期性地联系向每个计算机应用(和/或每个应用层)发送出高分辨率(在一些实施例中,64位分辨率或更高,但不限于此)时间的服务器。
根据一些实施例,每个层(和/或每个计算机应用)可以使它的本地高分辨率定时器(在一些实施例中,64位分辨率或更高,但不限于此)与针对网络抖动而被调整的公共时间基准高分辨率定时器相关。在一些实施例中,可以周期性地(以规则的间隔、不规则的间隔或以基于用户命令的时间)调整公共时间基准高分辨率定时器。在一些实施例中,可以注意关闭可以使得与本地高分辨率定时器相关联的本地机器基于其负载改变其频率的代码。
在一些实施例中,系统和方法300可以关于对应的本地时间基准来监视306一个或多个计算机应用的至少一个计算机指令。在一些实施例中,系统和方法300可以取回与至少一个计算机指令相关联的信息308。在一些实施例中,系统和方法300可以将取回的计算机指令信息的至少一部分转发310给验证引擎,其中该至少一部分促进验证引擎处的根本原因分析。
在一些实施例中,系统和方法300可以监视306一个或多个计算机指令的至少一个序列和至少一个序列的对应的计算机指令信息。在一些实施例中,一个或多个计算机应用可以包括至少两个计算机应用。在一些实施例中,至少两个计算机应用中的每个计算机应用可以具有至少两个计算机应用的单个计算机应用的不同层。在一些实施例中,一个或多个计算机应用中的每个计算机应用可以包括一个或多个线程和/或进程。
在一些实施例中,系统和方法300可以在验证引擎处将取回的计算机指令信息与存储的计算机指令信息比较312,以确定与至少一个计算机指令相关联的意外行为。
在系统和方法300的一些实施例中,监视306还可以包括:在物理计算机的流水线中截取所述至少一个计算机指令中的一个或多个计算机指令;执行与所述至少一个计算机指令中的一个或多个计算机指令相关联的动态二进制插桩以生成至少一个二进制插桩的指令,以及在物理计算机的高速缓冲存储器中与至少一个二进制插桩的指令交换至少一个计算机指令中的一个或多个计算机指令。
一些实施例可以接收用户代码运行时数据。一些实施例可以接收由另一线程或进程生成的用户运行时代码数据。其他实施例可以生成用户代码运行时数据。其他实施例可以生成由另一线程或进程使用的用户代码运行时数据。在一些实施例中,仪器引擎可以在运行时拦截来自计算机应用(或层)的二进制指令。在其他实施例中,应用层虚拟机可以在运行时拦截来自计算机应用(或层)的二进制指令。在一些实施例中,这样的二进制指令可以在中央处理器单元(CPU)的流水线中被拦截并且被与插桩版本的二进制指令交换,从而使得插桩捕获计算机指令的名称(例如,函数和/或系统调用)、其状态(进入)和/或其输入变元。当计算机指令返回时,可以捕获计算机指令的名称和/或地址以及计算机指令的状态(例如,接收、传输、进入或退出状态)及其返回值,并且将其报告到日志(例如,本地日志)中。在一些实施例中,在测试用例结束时,这些报告(例如,本地日志)可被转发给验证引擎(例如,给分析服务器,或者在与计算机应用中的一个或多个应用相同的机器上本地)以进行进一步处理。在一些实施例中,被转发给验证引擎的报告中的一个或多个报告可以包括本地和远程定时器之间的周期性时间同步消息(例如,本地和远程时间基准)。在一些实施例中,分析服务器可以为每层将本地时间更新为“网络”时间。
在一些实施例中,位于每层(或计算机应用)处的仪器引擎可以拦截用户函数调用、系统调用、套接字调用、进程间调用和线程间调用,包括但不限于共享存储器或管道。在其他实施例中,位于每层(或计算机应用)处的虚拟机可以拦截用户函数调用、系统调用、套接字调用、进程间调用和线程间调用。在一些实施例中,每种类型的运行时“轨迹”可以被加时间戳并且报告(例如,写入)到本地日志中。一些实施例可以基于编译代码和解释代码二者来对运行时“轨迹”加时间戳和报告。在一些实施例中,这些日志可以被转发(例如,导出)给上述验证引擎。
在一些实施例中,层(或计算机应用)可以位于相同的物理机器上。在一些实施例中,层(或计算机应用)可以位于与验证引擎相同的物理机器上。在一些实施例中,验证引擎可以位于与本公开内容中先前描述的仪器引擎和分析引擎相同的物理机器处。在一些实施例中,层(或计算机应用)可以位于一个或多个不同的物理机器上。在一些实施例中,层(或计算机应用)可以位于与验证引擎相同的物理机器上。在一些实施例中,验证引擎可以位于与本公开内容中先前描述的仪器引擎和分析引擎不同的物理机器处。
在系统和方法300的一些实施例中,(取回步骤308的)取回的计算机指令信息可以包括以下各项中的至少一项:至少一个计算机指令的名称或地址、至少一个计算机指令的地址、至少一个计算机指令的进入状态、至少一个计算机指令的输入变元、至少一个计算机指令的退出状态、至少一个计算机指令的时间以及至少一个计算机指令的返回值。在系统和方法的一些实施例中,取回的计算机指令信息可以包括至少一个二进制计算机指令,并且至少一个二进制计算机指令包括函数、系统调用、线程间通信调用和进程间通信调用中的至少一种。
在一些实施例中,鉴于来自每个层、进程和/或线程的运行时数据可以针对相同的网络时间被记录,一些实施例可以从每个层接收数据,以及甚至观察导致线程间或进程间通信(例如,事务)的代码。在一些示例实施例中,如果一个层可以通过通信协议(包括但不限于传输控制协议(TCP)套接字、共享存储器或管道)与另一层通信。
系统和方法300的一些实施例可以在多个计算机应用处接收302可以针对网络抖动被周期性地调整的全局时间基准。在系统和方法300的一些实施例中,多个计算机应用中的两个或更多个计算机应用可以位于跨网络被连接的分离的物理机器上。多个计算机应用的每个计算机应用实例可以具有对应的本地时间基准。系统和方法300的一些实施例可以关于对应的本地时间基准来监视306多个计算机应用的至少一个计算机指令。系统和方法300的一些实施例可以取回308与多个计算机应用的至少一个计算机指令相关联的信息。系统和方法300的一些实施例可以监视306多个计算机应用中的至少两个计算机应用之间的至少一个通信。系统和方法300的一些实施例可以取回308与至少一个通信相关联的信息。系统和方法300的一些实施例可以将取回的计算机指令信息和取回的通信信息的至少一部分转发310给验证引擎。
在一些实施例中,成的轨迹的至少一部分可以促进验证引擎处的根本原因分析。一些实施例可以包括确定与使用上述方法和系统而被取回的信息相关的错误、警告、失误或故障的根本原因的多种方法。一些实施例可以通过将至少一个已知计算机指令(诸如函数或应用编程接口或者说API)与它们的已知范围和/或返回值比较来发现错误输入变元或返回值。在示例实施例中,计算机指令可以接受预期在值0和10之间变化的整数输入参数。这样,在示例实施例中,如果检测到具有大于值10的输入值的该计算机指令的实例,则可以从检测点执行反向跟踪,以便确定什么导致该整数输入参数超过边界。
在一些实施例中,来自每个计算机应用(例如,层)的跟踪报告可以按照逗号分隔值(CSV)格式文件被保存。这些CSV文件可以对每个层可用。当仪器引擎(或在一些实施例中为虚拟机)在观察到错误的客户位置处运行时,用户(包括开发者或他们的指定代理)可以运行他们在装运产品时运行的相同测试用例,以便取回与计算机指令相关联的信息。然后可以使用标准“diff”技术来比较所生成的CSV文件。在一些实施例中,可以容易地发现和准确地找出发散点。
自动化根本原因分析系统
图4图示了图3的流程图的示例实施例系统400。图4还图示了在本公开内容的实施例中提供公共时基。如图4中所示,一个或多个计算机应用(或层)402、404、406中的每个计算机应用(或层)可以具有对应的本地时间基准。在一些实施例中,与每个应用(或层)402、404、406相关联的分析引擎可以通过网络408使应用(或层)402、404、406的给定本地时间基准与由服务器410生成的全局时间基准同步。在一些实施例中,系统400可以针对网络抖动来调整全局时间基准。
在一些示例实施例中,本地时间基准可以通过借助同步分组、同步脉冲或同步信号对网络遍历时间的调整而被“调整”为全局时间基准。在一些实施例中,服务器410可以生成同步消息(或分组或脉冲或信号),其被应用(或层)402、404、406中的每个接收以便使每个应用(或层)的本地时间基准与全局时间基准同步。在一些实施例中,可以周期性地(以可选地可编程的间隔)和/或在用户命令上发送同步消息。在一些实施例中,本地时间基准、全局时间基准以及它们之间的对应的同步可被实现为物理时钟电路。
在一些实施例中,仪器引擎可以关于对应的本地时间基准来监视一个或多个计算机应用的至少一个计算机指令。在一些实施例中,仪器引擎可以取回与至少一个计算机指令相关联的信息。在一些实施例中,仪器引擎可以将取回的计算机指令信息的至少一部分转发给验证引擎,其中该至少一部分促进验证引擎处的根本原因分析。在一些实施例中,验证引擎可以位于服务器410上。在一些实施例中,验证引擎可以位于与计算机应用(或层)402、404、406相关联的物理机器中的一个或多个物理机器上。
指令的插桩
如图5中所示,在一些实施例中,仪器引擎500可以在运行时拦截来自计算机应用(或层)的二进制计算机指令502、504。二进制计算机指令502、504可以包括函数、系统调用、线程间通信和进程间通信中的至少一种。在一些实施例中,这样的二进制指令502、504可以在中央处理器单元(CPU)的流水线中被拦截,并且被与插桩版本的二进制指令交换,从而使得插桩捕获计算机指令的名称(例如,函数和/或系统调用)512或522、其状态(例如,进入状态或退出状态)510或520和/或其输入变元514或524。当计算机指令502或504返回时,计算机指令的名称512或522可以与计算机指令的状态(例如,退出状态)510或520及其返回值一起被捕获,并且被报告到被转发给验证引擎的日志(例如,本地日志)中。
跨层使事件相关
图6图示了本公开内容的实施例中的多层事件相关显示600。在一些实施例中,可以针对相同的网络时间记录来自每个层、进程和/或线程的运行时数据。一些实施例可以呈现来自每个层的数据并观察导致线程间和/或进程间通信的代码。在一些示例实施例中,如果一个层通过传输控制协议(TCP)套接字与另一个通信,则这样的线程间和/或进程间通信可以在每个参与层中被观察到。
如图6中所示,实施例可以包括显示600,其中用户可以检查如在右上角和在Y轴650中显示的不同的参与层640。在图6中示出的示例实施例中,用户可以查看分别作为框架层(层4)和数据库层(层8)的层4和层8之间的交互。在图6中的示例性实施例中,用户可以查看在给定时间652正在从层发送628的通信以及正被层接收630的通信。通过在时间上快速遍历NTIER(n-tier或多层)事务(参见流逝的时间,基准元素652和用于遍历的用户键654),用户可以准确地找出复杂的NTIER活动并且使在这样的层之间的用户、系统和网络调用之间传递的运行时数据相关。显示600的一些实施例还包括对与可选的过滤器610相关联的网络功能620(共同地,用于函数跟踪或者说FTrace的624、用于JAVA跟踪或者说JTrace的624、用于系统跟踪或者说STrace的626、用于发送者(Sender)的628以及用于接收者(Receiver)的630)的显示,可选的过滤器610基于用户命令从显示600添加或去除对应的网络功能元件(622、624、626、628或630)。
监视代理和分析引擎基础架构
图7A描绘了示例监视代理和分析引擎基础设施的高级框图。该可以在包括范围从智能电话、平板、膝上型计算机、台式机到高端服务器的计算设备的各种硬件上配置基础设施。如该图所示,由监视代理702执行的数据收集可以与由分析引擎执行的分析分离,以提高应用性能。该基础设施提供高可用性,以防止黑客破坏其对恶意软件攻击的保护。监视代理702与应用交互以收集加载时间和运行时数据。应用701的基础设施包括进程存储器703、第三方库704、内核服务706和指令流水线707。监视代理702的基础设施包括仪器和分析引擎(仪器引擎)705、图形用户界面(GUI)711、客户端守护进程708、配置数据库709以及流传输和压缩引擎710、以及中央处理单元(CPU)736。应用701的本地或远程用户738通过像键盘、鼠标或类似的I/O设备的设备与应用交互,或者通过可以通过管道、共享存储器或套接字建立的通信信道在网络上与应用交互。作为响应,应用进程703将适当的指令集分派到指令流水线707中以供执行。应用还可以利用其自己的或第三方的库704,诸如libc.so(Linux)或msvcrtxx.dll(Windows)。当来自这些库的功能被调用时,来自这些库的适当指令也被插入到指令流水线707以供执行。此外,应用可以利用来自内核706的诸如存储器、文件I/O等的系统资源。以时间排序顺序放在一起的来自应用、库和内核的这些指令序列交付给定用户所需的应用功能。
当应用的代码开始加载到存储器中时,仪器和分析引擎(即,仪器引擎)705执行若干不同的加载时间动作。一旦所有模块都已加载,应用的检测指令就生成运行时数据。客户端守护程序708通过从配置数据库709读取一个或多个配置文件来在736处初始化CPU中的仪器和分析引擎705、流传输引擎710和GUI 711进程。它还初始化仪器引擎、流传输引擎、GUI、仪器和分析引擎705及其自身之间的相互通信管道。客户端守护程序还确保如果包括其自身在内的任何监视代理进程变得无响应或死掉,则其将被重新生成。这确保了监视代理702是高可用性企业级产品。
仪器和分析引擎705将从应用收集的负载和运行时数据推送到流传输引擎中。流传输引擎将来自监视代理702的原始数据封装到PDU中。然后,它在高带宽、低延迟通信信道712上将PDU推送到分析引擎728。如果监视代理702和分析引擎728位于同一机器上,则该信道可以是存储器总线。如果这些实体位于不同的硬件上但在相同的物理邻域中,则信道可以是基于以太网或光纤的传输,其允许在实体之间建立远程连接,以跨因特网传输负载和运行时数据。
分析引擎728的基础设施包括网络接口卡(NIC)713、分组池714、时间戳引擎715、处理器结构716、散列化引擎717、TCAM引擎718、应用映射数据库719和线程上下文数据库720,其可以包含由执行被系统监视的应用的一类用户使用的存储器地址的表。分析引擎728的基础设施还包括内容分析引擎721、事件和事件链722、事件管理引擎723、事件日志724、应用守护进程725、分析引擎配置数据库726、网络接口727、仪表板或CMS 737、SMS/SMTP服务器729、OTP服务器730、升级客户端731、软件升级服务器732、软件镜像733、事件更新客户端734和事件升级服务器735。
在网络接口卡713处截取PDU以及协议头部,PDU从该网络接口卡713被拉出并放入分组池714中。PDU中的时间戳字段由时间戳引擎715填充。这有助于以确保在分组池缓冲区中没有分组卡住非常长的时间。
处理器结构716从分组缓冲区中拉出分组,并且地址字段被散列和替换在分组中的适当位置中。该操作由散列化引擎717执行。然后,处理器结构开始以分组到达的次序从分组缓冲区中移除分组。具有来自加载时间阶段的信息的分组被处理,以使得相关数据被提取并存储在应用映射数据库719中。具有来自运行时阶段的信息的分组根据图5被处理。分析引擎728的效率可以基于处理器结构中的处理器的数量而被增加或减少。
转换目标数据被保存在线程上下文数据库720中,线程上下文数据库720具有用于每个线程的表。处理器结构还利用TCAM引擎718来执行转换和存储器区域搜索。由于处理器结构使用散列执行查找,所以使用的实际时间是可预测的并且非常短。通过仔细选择结构中的处理器的数量,可以适当地改变每个分组的吞吐量。
当分析引擎728执行搜索时,其可以不时地发现关键/管理函数或系统调用的无效转换、无效操作,或者在不期望的位置上找到存储器写入。在这些情况的每一种情况中,分析引擎728将如在事件和事件链数据库722中存储的策略所描述的编程严重性的事件分派给事件管理引擎723。原始事件日志被存储在事件日志数据库724中。仪表板/CMS 737还可以访问事件日志以及显示应用状态。
补救动作还与事件和事件链数据库722中的每个事件相关联。用户可以从一系列动作来设置补救动作,这一系列动作从在一个极端忽略事件到在另一极端终止线程。可以使用事件更新客户端734和事件升级服务器735向分析员推荐所推荐的补救动作。为了改变上述推荐动作,分析员可以相应地使用仪表板/CMS 737。仪表板/CMS 737提供了GUI界面,该GUI界面显示每个受监视应用的状态并允许安全分析员对应用具有某些控制,诸如启动和停止应用。当事件被生成时,事件链从正常状态前进到后续状态。可以采取与新状态相关联的补救动作。如果补救动作涉及非忽略动作,则使用SMS或SMTP服务器729向安全分析员发送通知。安全分析员的SMS/SMTP地址可以使用LDAP或其他目录协议来确定。从仪表板/CMS 737启动或停止应用的过程需要提升的特权,故安全分析员必须使用OTP服务器730进行认证。
新事件还可以被创建并被链接到事件和事件链数据库722中,连同严重性和向分析员推荐的补救动作。这允许将针对一个安装处的新攻击的唯一事件和事件链被分派到其他安装。为此目的,所有新事件和事件链都被加载到事件升级服务器735中。事件更新客户端734周期性地连接并认证事件升级服务器735以取回新事件和事件链。事件更新客户端然后将这些新事件和事件链加载到事件和事件链数据库722中。内容分析引擎721可以开始针对封装到新事件链中的新攻击来跟踪应用。
正如客户端守护进程一样,设施守护进程725负责启动在分析引擎728上运行的各种进程。为此目的,它必须从分析引擎配置数据库726读取配置信息。守护进程还负责对分析引擎728中的所有进程运行心跳轮询。这确保分析引擎生态系统中的所有设备始终处于最高工作状态。三个连续的心跳的丢失表明目标进程没有反应。如果任何进程已经过早退出,守护进程将恢复包括自身在内的该进程。
不时地,出于诸如修复软件中的错误的目的,可以在设施主机中或在分析引擎728或监视代理702中升级软件。为此目的,升级客户端731不断地检查软件升级服务器732,最新软件在软件升级服务器732处可获得。如果客户端发现分析引擎728或监视代理702中的实体正在运行较旧的镜像,则它将允许分析员利用来自软件升级服务器732的新镜像来升级旧镜像。新镜像被捆绑在一起作为系统镜像733。这使得有可能向设施或主机提供经测试的兼容镜像。如果分析引擎728或监视代理702中的子系统的镜像之一与系统镜像中的针对相同组件的镜像不匹配,则所有镜像将被滚动到先前已知的良好系统镜像。
用于监视代理和分析引擎通信的PDU
图7B图示了用来在图7A中的监视代理702和分析引擎728之间传送数据的示例协议数据单元(PDU)。为了使监视代理702和分析引擎728彼此有效地工作,它们使用PDU彼此通信。PDU可以特别地被监视代理702用来将提取的应用的模型和/或收集的运行时数据打包以用于向分析引擎728的传输。PDU包含要在监视代理702和分析引擎728之间传输的针对每种类型的信息的字段。PDU被划分为应用提供的数据部分、生成的HW/CVE以及内容分析引擎或原始数据部分。
应用提供的数据部分包含来自各种寄存器的数据以及放置在该部分的各个字段中的源地址和目标地址。协议版本包含PDU 752的版本号。随着协议版本随时间改变,源和目的地必须能够继续彼此通信。该8位字段描述如由源实体生成的分组的版本号。在协议版本字段之后是当前未使用的保留字段756。
如图7所示,应用提供的数据部分中的下一个字段是消息源/目的地标识符757、753和754,用来在分析引擎基础设施内交换流量。不时地,图7中所示的各种实体相互交换流量。并非所有这些设备都具有或需要IP地址,并且因此,两个(硬件和主机)查询路由器引擎使用消息源和目的地字段在内部路由流量。某些消息需要跨网络去往分析引擎中的实体。为此目的,向实体指派以下ID。给定的分析引擎设施可以具有多于一个加速器卡。每张卡将具有唯一的IP地址;因此,各个实体将具有唯一的ID。上述基础设施还可以运行多于一个应用。由于每个应用服务器将具有唯一的IP地址,因此对应的监视代理侧实体也将具有唯一的ID。
监视代理侧实体
1.GUI
2.仪器和分析引擎
3.客户端消息路由器
4.流传输引擎
5.客户端侧守护进程
6.CLI引擎
7.客户端看门狗
8.客户端压缩块
9.客户端iWarp/RDMA/ROCE以太网驱动器(100Mb/1Gb/10Gb)
每个PCI卡的实体(起始地址=20+n*20)
20.分析引擎TOE块
21.分析引擎PCI桥
22.解压缩块
23.消息验证块
24.分组散列块
25.时间戳块
26.消息超时定时器块
27.统计计数器块
28.分析引擎查询路由器引擎
29.分析引擎辅助
分析引擎主机实体
200.分析引擎PCIe驱动器
201.主机路由引擎
202.内容分析引擎
203.日志管理器
204.守护进程
205.Web引擎
206.看门狗
207.IPC消息传送总线
208.配置数据库
209.日志数据库
SIEM连接器
220.SIEM连接器1-仪表板/CMS
221.SIEM连接器2-HP ArcSight
222.SIEM连接器3-IBM QRadar
223.SIEM连接器4-Alien Vault USM
分析引擎基础设施实体
230.仪表板/CMS
231.SMTP服务器
232.LDAP服务器
233.SMS服务器
234.权利服务器
235.数据库备份服务器
236.OTP客户端
237.OTP服务器
238.校验和服务器
239.票务服务器
240.事件链升级服务器
241.软件更新服务器
所有用户应用
255.用户应用-应用PID被用于标识发出查询的应用
应用提供的数据部分的另一个字段是消息类型字段,其指示正在传输的数据的类型755。在最高级别,存在在各个本地监视代理侧实体之间、在分析引擎设备侧实体之间以及在监视代理侧和设备侧实体之间流动的三种不同类型的消息。另外,需要通过网络行进的消息必须符合OSI模型和其他协议。
应用提供的数据部分的以下字段是包含针对分组779的序列标识符的分组序列号字段。流传输引擎将对丢失的分组执行错误恢复。为此目的,它需要唯一地标识分组。递增的有符号64位分组序列号被流传输引擎插入,并且仅通过剩余的分析引擎基础设施。如果序列号在64位边界处包装,则其可以从0重新开始。在诸如心跳或日志消息等的非应用分组的情况下,分组序列号可以是-1。
应用提供的数据部分还包含金丝雀消息字段,其包含用于加密目的的金丝雀761。监视代理702和分析引擎728知道如何根据一些常见但是具有新鲜性质的信息(诸如应用启动时间、PID、许可证字符串和授权用户名)计算金丝雀。
应用提供的数据部分还包含在所有消息中使用的通用字段。应用源指令地址780、应用目的地指令地址758、存储器起始地址指针759、存储器结束地址指针760、应用PID762、线程ID 763、分析引擎到达时间戳764和分析引擎离开时间戳765字段保存通用应用数据。
PDU还包含HW/CAE生成部分。为了便于分析和保持固定时间的预算,分析引擎在处理之前对源和目的地地址字段进行散列并更新PDU。PDU的HW/CAE生成的部分是放置散列数据以供以后使用的地方。该部分包括散列应用源指令地址766、散列应用目的地指令地址767、散列存储器起始地址768和散列存储器结束地址769字段。HW/CAE生成部分另外包含与金丝雀771相关的其他字段,其包括存在于所有PDU分组中的硬编码内容起始魔术头部、API名称魔术头部、调用下文魔术头部和调用原始数据魔术头部。
HW/CAE生成部分还包括用来标识包括结果、配置位、操作模式、错误代码和操作模式数据的其他配置和错误数据的字段770。字段的结果部分被分段以返回针对不同分析引擎查询的布尔结果—转换剧本、代码布局、存储器(堆栈或堆)溢出和深度检查查询。该字段的配置位部分指示何时设置压缩标志、演示标志或同位标志。该字段中的标志的存在向分析引擎728指示分组是否应该在压缩模式下返回。演示标志指示系统处于演示模式,因为不存在针对系统的有效许可。在此模式下,日志和事件将不会完全可用。同位标志指示应用正在分析引擎728中运行以使得主机查询路由器引擎能够确定向哪里发送需要返回到应用的分组。如果此标志被设置,则分组经由PCI桥被发送,否则它们通过PCI卡上的以太网接口被发送。字段的操作模式部分指示系统是处于偏执模式、监视模式还是学习模式。这些模式将在本节稍后更详细地讨论。最后,字段的错误代码部分指示系统中的错误。错误代码的前八位将对应于消息源。其余的12位将对应于每个子系统所报告的实际错误。
PDU还包含内容分析引擎或原始数据。诸如OS库调用和系统调用的参数和返回值之类的所有可变数据都放在PDU的该部分中。该部分中的数据包含从应用收集的数据的内容,并且主要以内容分析引擎为目标。该部分包含可变大小的API名称或编号772、调用内容魔术头部777、可变大小的调用内容774、调用原始数据魔术头部778、可变大小的原始数据内容776以及两个保留的773和775字段。另外,这些字段可以针对管理消息而过载。
数字处理基础设施
图8图示了其中可以实现本公开内容的实施例的计算机网络或类似的数字处理环境。
一个或多个客户端计算机/设备50和一个或多个服务器计算机60提供执行应用程序等的处理、存储和输入/输出设备。一个或多个客户端计算机/设备50还可以通过通信网络70被链接到包括其他客户端设备/过程50和一个或多个服务器计算机60的其他计算设备。通信网络70可以是远程接入网络、全球网络(例如,因特网)、全世界计算机集合、局域或广域网以及当前使用相应的协议(TCP/IP、蓝牙
Figure BDA0001231612430000261
等)来彼此通信的网关的一部分。其他电子设备/计算机网络架构是合适的。
客户端计算机/设备50可以配置有监视代理。服务器计算机60可被配置为与用于访问自动化根本原因分析调试工具的客户端设备(即,监视代理)50通信的分析引擎。服务器计算机60可以不是分离的服务器计算机,而是云网络70的一部分。在一些实施例中,服务器计算机(例如,分析引擎)可以在一个或多个计算机应用处接收全局时间基准。一个或多个计算机应用中的每个计算机应用可以具有对应的本地时间基准。每个服务器计算机60可以使每个本地时间基准与全局时间基准同步。服务器计算机60可以包括被配置为关于对应的本地时间基准来监视一个或多个计算机应用的至少一个计算机指令的仪器引擎。仪器引擎可以取回与至少一个计算机指令相关联的信息,并将取回的计算机指令信息的至少一部分转发给验证引擎。
客户端(监视代理,和/或在一些实施例中为验证引擎)50可以从服务器(分析和/或仪器引擎)60接收取回的计算机指令信息的至少一部分。在一些实施例中,客户端50可以包括在客户端(即,监视代理,和/或在一些实施例中为验证引擎)50上执行以用于监视计算机指令和取回与计算机指令相关联的信息以促进根本原因分析的客户端应用或组件(例如,仪表引擎),并且客户端50可以将这一信息传达给服务器(例如,分析引擎)60。
图9是图8的计算机系统中的计算机(例如,客户端处理器/设备50或服务器计算机60)的示例内部结构的示图。每个计算机50、60包含系统总线79,其中总线是用于计算机或处理系统的组件之间的数据传送的一组硬件线。系统总线79本质上是连接计算机系统的不同元件(例如,处理器、盘存储装置、存储器、输入/输出端口、网络端口等)的共享导管,其使得能够在元件之间传送信息。附接到系统总线79的是用于将各种输入和输出设备(例如,键盘、鼠标、显示器、打印机、扬声器等)连接到计算机50、60的I/O设备接口82。网络接口86允许计算机连接到被附接到网络(例如,图8的网络70)的各种其他设备。存储器90为用来实现本公开内容的实施例(例如,本文所述的监视代理、仪器引擎和分析引擎元件)的计算机软件指令92和数据94提供易失性存储。盘存储装置95为用于实现本公开内容的实施例的计算机软件指令92和数据94提供非易失性存储。中央处理器单元84也被附接到系统总线79并提供计算机指令的执行。
实施例或其各方面可以按照硬件(包括但不限于硬件电路)、固件或软件的形式而被实现。如果按照软件被实现,则软件可被存储在被配置为使得处理器能够加载软件或其指令的子集的任何非瞬态计算机可读介质上。处理器然后执行指令并且被配置为以如本文所描述的方式操作或使得装置以如本文所描述的方式操作。
一些实施例可以通过截取指令并对这些指令执行动态二进制插桩来变换一个或多个计算机指令的行为和/或数据。一些实施例还可以通过在物理计算机的高速缓冲存储器中与二进制插桩的指令交换计算机指令来变换一个或多个计算机指令的行为和/或数据。一些实施例还通过在本地和全局时间基准之间使指令同步来及时变换计算机指令。一些实施例还通过取回与指令相关联的信息并将取回的信息转发给验证引擎来变换计算机指令。
一些实施例还通过跨计算机应用的一个或多个层使根本原因分析自动化来提供对计算机应用、计算机程序功能和/或计算机代码的质量的功能改进。一些实施例还提供功能改进,因为源代码(或跟踪代码)不必在代码体内被插桩。一些实施例还提供功能改进,因为它们不需要源代码插桩,而是可以利用二进制插桩。一些实施例还提供功能改进因为计算机指令故障不被屏蔽,至少因为所施加的插桩对源代码不是侵入性的,而是作为二进制插桩,由此避免对定时的改变或者源代码插桩方法的延迟。一些实施例还通过提供跟踪报告来提供功能改进,跟踪报告包括来自用户代码、系统代码和网络活动的每线程和每进程运行时数据,其可以通过使用公共高分辨率时间服务器而被容易地同步。一些实施例还提供功能改进,因为用户运行时数据在测试被完成后很久可以是可用的。一些实施例还提供功能改进,因为通过在时间上使层重叠,引发多个层的复杂事务可被容易地发现和检查和调试。
一些实施例解决技术问题(由此提供技术效果),因为开发人员不再必须使用调试器和放置断点或添加日志记录语句来捕获运行时状态以便找出代码问题。一些实施例解决技术问题(由此提供技术效果),因为开发者不必重建代码,并且然后在作出决定之前手动观察结果。一些实施例解决技术问题(由此提供技术效果),因为它们能增强的调试框架成为可能,因为它们不掩盖由竞争条件或线程之间的定时引起的失败。一些实施例解决技术问题(由此提供技术效果),因为当一个或多个事务、进程或线程在不同的机器上运行时,与现有方式不同,用户可以保持上下文并且容易地跨每个线程、进程或层来使事件相关。一些实施例解决技术问题(由此提供技术效果),因为它们提供了比较来自客户设置和开发者设置的运行时轨迹以看出哪里出现问题的能力。作为这一技术解决方案的结果(技术效果),一些实施例可以使得容易找到问题的源,从而提供减少的上市时间和降低的软件产品成本的优点。一些实施例解决技术问题(由此提供技术效果),因为用户不需要通过手动或乏味的过程来放置插桩。一些实施例解决技术问题(由此提供技术效果),因为它们提供代码兼容性。例如,一些实施例对以包括但不限于C、C++和其他语言的语言被编写的编译代码以及以包括但不限于JAVA、Ruby、PHP、Perl、Python和其他语言的语言被编写的解释代码有效。并且一些实施例对使用以包括但不限于C、C++和其他语言的语言被编写的编译代码以及以包括但不限于JAVA、Ruby、PHP、Perl、Python和其他语言的语言被编写的解释代码的组合编写的第三方应用有效。一些实施例解决技术问题(由此提供技术效果),因为它们提供关于根本原因分析的优点。在一些实施例中,可以通过比较在发生故障和不发生故障的“良好”条件下获得的轨迹来执行根本原因分析。在一些实施例中,还可以通过比较每个函数的已知输入或输出参数并检查其运行时状态来执行根本原因分析。在一些实施例中,根本原因分析可以用来准确地找出计算机应用的已知良好状态与已知不良状态之间的分歧点。
另外,硬件、固件、软件、例程或指令在本文中可被描述为执行数据处理器的某些动作和/或功能。然而,应当认识到,本文包含的这样的描述仅仅是为了方便,并且这样的动作实际上由计算设备、处理器、控制器或其他设备执行固件、软件、例程、指令等而造成。
应当理解,流程图、框图和网络图可以包括更多或更少的元件、被不同地布置或者被不同地表示。但是还应当理解,某些实现方式可以规定块和网络图以及图示了实施例的执行的块和网络图的数量以特定方式被实现。
因此,另外的实施例还可以在各种计算机体系结构、物理、虚拟、云计算机和/或它们的某种组合中被实现,因此,本文所描述的数据处理器仅旨在用于说明的目的,而不是作为对实施例的限制。
虽然已经参照本公开内容的示例实施例具体示出和描述了本公开内容,但是本领域技术人员将理解,在不脱离所附权利要求所涵盖的本公开内容的范围的情况下,可以在其中进行形式和细节上的各种改变。

Claims (22)

1.一种用于促进与具有多个层级的一个或多个计算机应用相关联的根本原因分析的方法,其中所述一个或多个计算机应用的所述层级位于跨网络被连接的分离的物理机器上,每个分离的物理机器包括处理器,所述方法由所述分离的物理机器执行,所述方法包括由所述分离的物理机器的所述处理器:
在所述一个或多个计算机应用处周期性地接收包含全局时间基准的同步消息,所述一个或多个计算机应用的每个层级具有对应的本地时间基准;
响应于接收到所述同步消息,使每个本地时间基准与所述全局时间基准同步;
关于所述对应的本地时间基准来监视每个层级的至少一个计算机指令;
取回与所述至少一个计算机指令相关联的信息,取回的所述计算机指令信息包括所述至少一个计算机指令的状态和所述至少一个计算机指令的变元;以及
将取回的所述计算机指令信息的至少一部分转发给验证引擎,其中所述至少一部分促进所述验证引擎处的所述根本原因分析,其中所述至少一部分包括所述状态和所述变元。
2.根据权利要求1所述的方法,还包括针对网络抖动来调整所述全局时间基准。
3.根据权利要求1所述的方法,还包括监视所述至少一个计算机指令的至少一个序列和所述至少一个序列的对应的计算机指令信息。
4.根据权利要求1所述的方法,其中所述一个或多个计算机应用包括至少两个计算机应用,所述至少两个计算机应用中的每个计算机应用具有所述至少两个计算机应用的单个计算机应用的不同层级。
5.根据权利要求1所述的方法,还包括:在所述验证引擎处,将取回的所述计算机指令信息与存储的计算机指令信息比较,以确定与所述至少一个计算机指令相关联的意外行为。
6.根据权利要求1所述的方法,其中所述监视还包括:
在物理计算机的流水线中截取所述至少一个计算机指令中的一个或多个计算机指令;
执行与所述至少一个计算机指令中的所述一个或多个计算机指令相关联的动态二进制插桩以生成至少一个二进制插桩的指令,以及
在所述物理计算机的高速缓冲存储器中与所述至少一个二进制插桩的指令交换所述至少一个计算机指令中的所述一个或多个计算机指令。
7.根据权利要求1所述的方法,其中取回的所述计算机指令信息包括以下各项中的至少一项:所述至少一个计算机指令的名称、所述至少一个计算机指令的地址、所述至少一个计算机指令的进入状态、所述至少一个计算机指令的输入变元、所述至少一个计算机指令的退出状态、所述至少一个计算机指令的时间和所述至少一个计算机指令的返回值。
8.根据权利要求1所述的方法,其中所述至少一个计算机指令包括至少一个二进制计算机指令,并且所述至少一个二进制计算机指令包括函数、系统调用、线程间通信调用和进程间通信调用中的至少一种。
9.根据权利要求1所述的方法,还包括:
在多个计算机应用处周期性地接收包含所述全局时间基准的所述同步消息,所述多个计算机应用中的每个计算机应用实例具有对应的本地时间基准;
关于所述对应的本地时间基准来监视所述多个计算机应用的至少一个计算机指令,以及取回与所述多个计算机应用的所述至少一个计算机指令相关联的信息,以及监视所述多个计算机应用中的至少两个计算机应用之间的至少一个通信,以及取回与所述至少一个通信相关联的信息;以及
将与所述多个计算机应用的所述至少一个计算机指令相关联的取回的所述计算机指令信息和取回的所述通信信息的至少一部分转发给所述验证引擎,其中所述至少一部分促进所述验证引擎处的所述根本原因分析。
10.根据权利要求9所述的方法,其中所述多个计算机应用中的两个或更多个计算机应用位于跨网络被连接的分离的物理机器上。
11.一种用于促进与具有多个层级的一个或多个计算机应用相关联的根本原因分析的系统,其中所述一个或多个计算机应用的所述层级位于跨网络被连接的分离的物理机器上,每个分离的物理机器包括处理器,所述系统包括:
分析引擎,其被配置为:
在一个或多个计算机应用处周期性地接收包含全局时间基准的同步消息,所述一个或多个计算机应用的每个层级具有对应的本地时间基准;以及
响应于接收到所述同步消息,使每个本地时间基准与所述全局时间基准同步;以及
仪器引擎,其被配置为:
关于所述对应的本地时间基准来监视每个层级的至少一个计算机指令;
取回与所述至少一个计算机指令相关联的信息,取回的所述计算机指令信息包括所述至少一个计算机指令的状态和所述至少一个计算机指令的变元;以及
将取回的所述计算机指令信息的至少一部分转发给验证引擎,其中所述至少一部分促进所述验证引擎处的根本原因分析,其中所述至少一部分包括所述状态和所述变元。
12.根据权利要求11所述的系统,其中所述分析引擎还被配置为针对网络抖动来调整所述全局时间基准。
13.根据权利要求11所述的系统,其中所述仪器引擎还被配置为监视所述至少一个计算机指令的至少一个序列和所述至少一个序列的对应的计算机指令信息。
14.根据权利要求11所述的系统,其中所述一个或多个计算机应用包括至少两个计算机应用,所述至少两个计算机应用中的每个计算机应用具有所述至少两个计算机应用的单个计算机应用的不同层级。
15.根据权利要求11所述的系统,还包括在所述验证引擎处将取回的所述计算机指令信息与存储的计算机指令信息比较,以确定与所述至少一个计算机指令相关联的意外行为。
16.根据权利要求11所述的系统,其中为了监视所述至少一个计算机指令,所述仪器引擎还被配置为:
在物理计算机的流水线中截取所述至少一个计算机指令中的一个或多个计算机指令;
执行与所述至少一个计算机指令中的所述一个或多个计算机指令相关联的动态二进制插桩以生成至少一个二进制插桩的指令,以及
在所述物理计算机的高速缓冲存储器中与所述至少一个二进制插桩的指令交换所述至少一个计算机指令中的所述一个或多个计算机指令。
17.根据权利要求11所述的系统,其中取回的所述计算机指令信息包括以下各项中的至少一项:所述至少一个计算机指令的名称、所述至少一个计算机指令的地址、所述至少一个计算机指令的进入状态、所述至少一个计算机指令的输入变元、所述至少一个计算机指令的退出状态、所述至少一个计算机指令的时间和所述至少一个计算机指令的返回值。
18.根据权利要求11所述的系统,其中所述至少一个计算机指令包括至少一个二进制计算机指令,并且所述至少一个二进制计算机指令包括函数、系统调用、线程间通信调用和进程间通信调用中的至少一种。
19.根据权利要求11所述的系统,其中:
所述分析引擎还被配置为:
在多个计算机应用处周期性地接收包含所述全局时间基准的所述同步消息,所述多个计算机应用的每个计算机应用实例具有对应的本地时间基准;并且
所述仪器引擎还被配置为:
关于所述对应的本地时间基准来监视所述多个计算机应用的至少一个计算机指令,以及取回与所述多个计算机应用的所述至少一个计算机指令相关联的信息,以及监视所述多个计算机应用中的至少两个计算机应用之间的至少一个通信,以及取回与所述至少一个通信相关联的信息;以及
将与所述多个计算机应用的所述至少一个计算机指令相关联的取回的所述计算机指令信息和取回的所述通信信息的至少一部分转发给所述验证引擎,其中所述至少一部分促进所述验证引擎处的所述根本原因分析。
20.根据权利要求19所述的系统,其中所述多个计算机应用中的两个或更多个计算机应用位于跨网络被连接的分离的物理机器上。
21.根据权利要求11所述的系统,其中所述分析引擎和所述仪器引擎包括处理器结构,所述处理器结构包括一个或多个处理器。
22.根据权利要求11所述的系统,其中所述分析引擎、所述仪器引擎和所述验证引擎包括处理器结构,所述处理器结构包括一个或多个处理器。
CN201580045505.2A 2014-06-24 2015-06-24 单层或n层应用的自动化根本原因分析 Active CN107077412B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461998321P 2014-06-24 2014-06-24
US61/998,321 2014-06-24
PCT/US2015/037468 WO2015200508A1 (en) 2014-06-24 2015-06-24 Automated root cause analysis of single or n-tiered applications

Publications (2)

Publication Number Publication Date
CN107077412A CN107077412A (zh) 2017-08-18
CN107077412B true CN107077412B (zh) 2022-04-08

Family

ID=53541936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580045505.2A Active CN107077412B (zh) 2014-06-24 2015-06-24 单层或n层应用的自动化根本原因分析

Country Status (6)

Country Link
US (1) US10114726B2 (zh)
EP (1) EP3161638A1 (zh)
CN (1) CN107077412B (zh)
AU (1) AU2015279920B2 (zh)
CA (1) CA2953787C (zh)
WO (1) WO2015200508A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
KR102368170B1 (ko) 2013-09-12 2022-02-25 버섹 시스템즈, 인코포레이션 멀웨어의 자동화된 런타임 검출
CN107077412B (zh) 2014-06-24 2022-04-08 弗塞克系统公司 单层或n层应用的自动化根本原因分析
US10354074B2 (en) 2014-06-24 2019-07-16 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
US11102103B2 (en) * 2015-11-23 2021-08-24 Bank Of America Corporation Network stabilizing tool
US11409870B2 (en) 2016-06-16 2022-08-09 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
US10334079B2 (en) 2016-06-27 2019-06-25 Microsoft Technology Licensing, Llc Orchestrating operations at applications
US10761828B2 (en) 2017-01-06 2020-09-01 Microsoft Technology Licensing, Llc Deviation finder
US10552282B2 (en) 2017-03-27 2020-02-04 International Business Machines Corporation On demand monitoring mechanism to identify root cause of operation problems
US10735262B1 (en) * 2018-04-26 2020-08-04 Intuit Inc. System and method for self-orchestrated canary release deployment within an API gateway architecture
US11328021B2 (en) * 2018-12-31 2022-05-10 Microsoft Technology Licensing, Llc Automatic resource management for build systems
US11580255B2 (en) * 2019-11-11 2023-02-14 Bank Of America Corporation Security tool for n-tier platforms
CN111596721B (zh) * 2020-04-09 2022-05-10 深圳市元征科技股份有限公司 一种数据时间标签的同步方法及设备
US11995146B1 (en) * 2023-08-22 2024-05-28 Nice Ltd. System and method for displaying real-time code of embedded code in a browser-window of a software application

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1703395A2 (en) * 2005-03-15 2006-09-20 Fujitsu Limited Multiprocessor system with a management processor
CN101154258A (zh) * 2007-08-14 2008-04-02 电子科技大学 恶意程序动态行为自动化分析系统与方法
CN102012987A (zh) * 2010-12-02 2011-04-13 李清宝 自动二进制恶意代码行为分析系统

Family Cites Families (159)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215406A (en) 1972-08-22 1980-07-29 Westinghouse Electric Corp. Digital computer monitored and/or operated system or process which is structured for operation with an improved automatic programming process and system
US4466077A (en) 1981-09-25 1984-08-14 International Business Machines Corporation Method and apparatus for division employing associative memory
JPS59216249A (ja) 1983-05-23 1984-12-06 Toshiba Corp 集積回路装置
GB8511995D0 (en) 1985-05-11 1985-06-19 Ross S R Software protection
US5222220A (en) 1989-11-16 1993-06-22 Mehta Hemang S Microprocessor stack built-in guards
JP2839201B2 (ja) 1990-07-30 1998-12-16 株式会社日立製作所 仮想計算機システム
US5235551A (en) 1991-01-08 1993-08-10 Pacific Data Products, Inc. Memory addressing scheme
US5359659A (en) 1992-06-19 1994-10-25 Doren Rosenthal Method for securing software against corruption by computer viruses
US5440723A (en) 1993-01-19 1995-08-08 International Business Machines Corporation Automatic immune system for computers and computer networks
US5630048A (en) 1994-05-19 1997-05-13 La Joie; Leslie T. Diagnostic system for run-time monitoring of computer operations
JP3360933B2 (ja) 1994-06-01 2003-01-07 富士通株式会社 情報処理システムにおける記憶制御方法および記憶制御装置
US5826012A (en) 1995-04-21 1998-10-20 Lettvin; Jonathan D. Boot-time anti-virus and maintenance facility
US5684948A (en) 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US6151618A (en) 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
US5909580A (en) 1996-02-08 1999-06-01 Inprise Corporation Development system and methods with direct compiler support for detecting invalid use and management of resources and memory at runtime
US5850559A (en) 1996-08-07 1998-12-15 Compaq Computer Corporation Method and apparatus for secure execution of software prior to a computer system being powered down or entering a low energy consumption mode
US6314558B1 (en) 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US5873124A (en) 1997-02-06 1999-02-16 Microsoft Corporation Virtual memory scratch pages
US5890005A (en) 1997-06-02 1999-03-30 Nokia Mobile Phones Limited Low power, low interconnect complexity microprocessor and memory interface
US6332165B1 (en) 1997-09-05 2001-12-18 Sun Microsystems, Inc. Multiprocessor computer system employing a mechanism for routing communication traffic through a cluster node having a slice of memory directed for pass through transactions
US5983348A (en) 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
US6178522B1 (en) * 1998-06-02 2001-01-23 Alliedsignal Inc. Method and apparatus for managing redundant computer-based systems for fault tolerant computing
US6553429B1 (en) 1998-06-05 2003-04-22 Microsoft Corporation Fast conditional thunk utility
US6665316B1 (en) 1998-09-29 2003-12-16 Agilent Technologies, Inc. Organization of time synchronization in a distributed system
US6782478B1 (en) 1999-04-28 2004-08-24 Thomas Probert Techniques for encoding information in computer code
US6981176B2 (en) 1999-05-10 2005-12-27 Delphi Technologies, Inc. Secured microcontroller architecture
WO2001022228A1 (en) 1999-09-17 2001-03-29 Nortel Networks Limited System and method for producing a verification system for verifying procedure interfaces
US6745160B1 (en) 1999-10-08 2004-06-01 Nec Corporation Verification of scheduling in the presence of loops using uninterpreted symbolic simulation
WO2001053908A2 (en) 2000-01-18 2001-07-26 Telcordia Technologies, Inc. Method and systems for identifying the existence of one or more unknown programs in a system
JP3552627B2 (ja) 2000-02-04 2004-08-11 インターナショナル・ビジネス・マシーンズ・コーポレーション スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体
US6775780B1 (en) 2000-03-16 2004-08-10 Networks Associates Technology, Inc. Detecting malicious software by analyzing patterns of system calls generated during emulation
US6973577B1 (en) 2000-05-26 2005-12-06 Mcafee, Inc. System and method for dynamically detecting computer viruses through associative behavioral analysis of runtime state
US7539875B1 (en) 2000-06-27 2009-05-26 Microsoft Corporation Secure repository with layers of tamper resistance and system and method for providing same
US6832373B2 (en) 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US7260845B2 (en) 2001-01-09 2007-08-21 Gabriel Kedma Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems
US6848044B2 (en) 2001-03-08 2005-01-25 International Business Machines Corporation Circuits and methods for recovering link stack data upon branch instruction mis-speculation
US20020138554A1 (en) 2001-03-26 2002-09-26 Motorola, Inc. Method for remotely verifying software integrity
JP3702815B2 (ja) 2001-07-12 2005-10-05 日本電気株式会社 プロセッサ間レジスタ継承方法及びその装置
US7421587B2 (en) 2001-07-26 2008-09-02 Mcafee, Inc. Detecting computer programs within packed computer files
US20030188160A1 (en) 2001-08-02 2003-10-02 Singam Sunder Method and system to securely update files via a network
US7257763B1 (en) 2001-08-03 2007-08-14 Netlogic Microsystems, Inc. Content addressable memory with error signaling
GB2378778B (en) 2001-08-13 2005-03-23 Ibm Computer system with heap and card table
EP1246033A1 (de) 2001-08-23 2002-10-02 Siemens Aktiengesellschaft Verfahren zur Überwachung konsistenter Speicherinhalte in redundanten Systemen
US7526654B2 (en) 2001-10-16 2009-04-28 Marc Charbonneau Method and system for detecting a secure state of a computer system
US20030079158A1 (en) 2001-10-23 2003-04-24 Tower James Brian Secured digital systems and a method and software for operating the same
US6832302B1 (en) 2001-10-24 2004-12-14 At&T Corp. Methods and apparatus for detecting heap smashing
US6668313B2 (en) 2001-12-21 2003-12-23 Agere Systems, Inc. Memory system for increased bandwidth
US7076629B2 (en) 2001-12-26 2006-07-11 Bonola Thomas J Method for providing concurrent non-blocking heap memory management for fixed sized blocks
US7168008B2 (en) 2002-01-18 2007-01-23 Mobitv, Inc. Method and system for isolating and protecting software components
ATE263391T1 (de) 2002-03-26 2004-04-15 Soteres Gmbh Verfahren zum schutz der integrität von programmen
US7228426B2 (en) 2002-04-03 2007-06-05 Microsoft Corporation Integrity ordainment and ascertainment of computer-executable instructions with consideration for execution context
US6948091B2 (en) 2002-05-02 2005-09-20 Honeywell International Inc. High integrity recovery from multi-bit data failures
JP2003330736A (ja) 2002-05-08 2003-11-21 Nippon Telegr & Teleph Corp <Ntt> 不正リソース利用防止システム及びその方法並びにプログラム
GB2383444B (en) 2002-05-08 2003-12-03 Gfi Software Ltd System and method for detecting a potentially malicious executable file
US7007159B2 (en) 2002-05-10 2006-02-28 Intel Corporation System and method for loading and integrating a firmware extension onto executable base system firmware during initialization
US7000095B2 (en) 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US7386839B1 (en) 2002-11-06 2008-06-10 Valery Golender System and method for troubleshooting software configuration problems using application tracing
US6996677B2 (en) 2002-11-25 2006-02-07 Nortel Networks Limited Method and apparatus for protecting memory stacks
US20040157639A1 (en) 2002-11-27 2004-08-12 Morris Roy D. Systems and methods of mobile restore
US7058838B2 (en) 2002-12-17 2006-06-06 Hewlett-Packard Development Company, L.P. System and method for synchronizing a plurality of processors in a multiprocessor computer platform employing a global clock counter
US7603704B2 (en) 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US7594111B2 (en) 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US7237172B2 (en) 2002-12-24 2007-06-26 Micron Technology, Inc. Error detection and correction in a CAM
US7043509B2 (en) 2003-02-19 2006-05-09 Sun Microsystems, Inc. Parallel non-contiguous allocation and card parsing
JP4547861B2 (ja) 2003-03-20 2010-09-22 日本電気株式会社 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
CA2426619A1 (en) 2003-04-25 2004-10-25 Ibm Canada Limited - Ibm Canada Limitee Defensive heap memory management
US20050108562A1 (en) 2003-06-18 2005-05-19 Khazan Roger I. Technique for detecting executable malicious code using a combination of static and dynamic analyses
US7322027B2 (en) 2003-06-27 2008-01-22 Microsoft Corporation Detecting termination and providing information related to termination of a computer system process
EP1639435A4 (en) 2003-06-27 2009-12-30 Hewlett Packard Development Co SYSTEM AND METHOD FOR DOWNLOADING UPDATE PACKAGES INTO A MOBILE HAND APPARATUS IN A CARRIER NETWORK
US20040268095A1 (en) 2003-06-30 2004-12-30 Tatiana Shpeisman Efficient implementation of null reference check
US7707548B2 (en) * 2003-07-22 2010-04-27 Verizon Business Global Llc Integration of information distribution systems
US7137038B2 (en) 2003-07-29 2006-11-14 Hitachi Global Storage Technologies Netherlands, B.V. System and method for autonomous data scrubbing in a hard disk drive
US7530103B2 (en) 2003-08-07 2009-05-05 Microsoft Corporation Projection of trustworthiness from a trusted environment to an untrusted environment
CA2533853C (en) 2003-08-11 2013-01-08 Telecom Italia S.P.A. Method and system for detecting unauthorised use of a communication network
AU2003270322A1 (en) 2003-09-05 2005-04-21 Itron, Inc. Synchronizing and controlling software downloads, such as for utility meter-reading data collection and processing
US7467202B2 (en) 2003-09-10 2008-12-16 Fidelis Security Systems High-performance network content analysis platform
US7644441B2 (en) 2003-09-26 2010-01-05 Cigital, Inc. Methods for identifying malicious software
US7290253B1 (en) 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
US7360097B2 (en) 2003-09-30 2008-04-15 Check Point Software Technologies, Inc. System providing methodology for securing interfaces of executable files
JPWO2005036831A1 (ja) 2003-10-07 2006-12-28 富士通株式会社 フレーム中継装置
US7526755B2 (en) 2003-10-08 2009-04-28 Microsoft Corporation Plug-in pre- and postconditions for static program analysis
US7237267B2 (en) 2003-10-16 2007-06-26 Cisco Technology, Inc. Policy-based network security management
CN100391180C (zh) 2003-10-30 2008-05-28 华为技术有限公司 一种以太网二层交换设备绑定硬件地址和端口的方法
US8151117B2 (en) 2003-11-05 2012-04-03 Vocalcomm Group, Llc Detection of items stored in a computer system
US7281225B2 (en) 2003-11-20 2007-10-09 Fujitsu Limited Circuit verification using multiple engines
US7529979B2 (en) * 2003-12-12 2009-05-05 International Business Machines Corporation Hardware/software based indirect time stamping methodology for proactive hardware/software event detection and control
US20050138409A1 (en) 2003-12-22 2005-06-23 Tayib Sheriff Securing an electronic device
US7716495B2 (en) 2003-12-31 2010-05-11 Microsoft Corporation Protection against runtime function attacks
US20100005531A1 (en) 2004-12-23 2010-01-07 Kenneth Largman Isolated multiplexed multi-dimensional processing in a virtual processing space having virus, spyware, and hacker protection features
US7284276B2 (en) 2004-01-22 2007-10-16 Symantec Corporation Return-to-LIBC attack detection using branch trace records system and method
US7730530B2 (en) 2004-01-30 2010-06-01 Microsoft Corporation System and method for gathering exhibited behaviors on a .NET executable module in a secure manner
US7694022B2 (en) 2004-02-24 2010-04-06 Microsoft Corporation Method and system for filtering communications to prevent exploitation of a software vulnerability
US7693975B2 (en) 2004-03-02 2010-04-06 Hewlett-Packard Development Company, L.P. Network device applying kalman filter
US7328323B1 (en) 2004-03-08 2008-02-05 Symantec Corporation Heap buffer overflow exploitation prevention system and method
US7272748B1 (en) 2004-03-17 2007-09-18 Symantec Corporation Method and apparatus to detect and recover from a stack frame corruption
WO2005114955A1 (en) 2004-05-21 2005-12-01 Computer Associates Think, Inc. Systems and methods of computer security
US7490268B2 (en) 2004-06-01 2009-02-10 The Trustees Of Columbia University In The City Of New York Methods and systems for repairing applications
US7207065B2 (en) 2004-06-04 2007-04-17 Fortify Software, Inc. Apparatus and method for developing secure software
US7860096B2 (en) 2004-06-08 2010-12-28 Oracle America, Inc. Switching method and apparatus for use in a communications network
US20050289531A1 (en) 2004-06-08 2005-12-29 Daniel Illowsky Device interoperability tool set and method for processing interoperability application specifications into interoperable application packages
US7526810B2 (en) 2004-06-21 2009-04-28 Ebay Inc. Method and system to verify data received, at a server system, for access and/or publication via the server system
WO2006014554A2 (en) 2004-07-07 2006-02-09 University Of Maryland Method and system for monitoring system memory integrity
US7971255B1 (en) 2004-07-15 2011-06-28 The Trustees Of Columbia University In The City Of New York Detecting and preventing malcode execution
US7603715B2 (en) 2004-07-21 2009-10-13 Microsoft Corporation Containment of worms
US7634812B2 (en) 2004-07-21 2009-12-15 Microsoft Corporation Filter generation
FR2873466A1 (fr) 2004-07-21 2006-01-27 St Microelectronics Sa Procede de programmation d'un controleur de dma dans un systeme sur puce et systeme sur puce associe
EP1619572A1 (en) 2004-07-23 2006-01-25 Texas Instruments Incorporated System and method of identifying and preventing security violations within a computing system
US7430683B2 (en) 2004-09-23 2008-09-30 Intel Corporation Method and apparatus for enabling run-time recovery of a failed platform
CN101065716A (zh) 2004-11-22 2007-10-31 诺基亚公司 用于验证电子设备的平台软件的完整性的方法和设备
US7484239B1 (en) 2004-11-30 2009-01-27 Symantec Corporation Detecting heap and stack execution in the operating system using regions
KR100675836B1 (ko) 2004-12-10 2007-01-29 한국전자통신연구원 Epon 구간내에서의 링크 보안을 위한 인증 방법
US20060126799A1 (en) 2004-12-15 2006-06-15 Microsoft Corporation Fault injection
US7613954B2 (en) 2004-12-21 2009-11-03 National Instruments Corporation Test executive with stack corruption detection
TWI252976B (en) 2004-12-27 2006-04-11 Ind Tech Res Inst Detecting method and architecture thereof for malicious codes
US7774787B2 (en) 2005-01-11 2010-08-10 Microsoft Corporation Method for specifying and verifying multi-threaded object-oriented programs with invariants
US7315871B2 (en) 2005-01-19 2008-01-01 International Business Machines Inc. Corporation Method, system and program product for interning invariant data objects in dynamic space constrained systems
US7290230B2 (en) 2005-03-17 2007-10-30 Fujitsu Limited System and method for verifying a digital design using dynamic abstraction
WO2006110960A1 (en) * 2005-04-22 2006-10-26 National Ict Australia Limited Method for transporting digital media
US7493602B2 (en) 2005-05-02 2009-02-17 International Business Machines Corporation Methods and arrangements for unified program analysis
US7912877B2 (en) 2005-05-20 2011-03-22 Microsoft Corporation Leveraging garbage collection to dynamically infer heap invariants
US7752381B2 (en) 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
US7730536B2 (en) 2005-06-08 2010-06-01 Verizon Business Global Llc Security perimeters
GB0513375D0 (en) 2005-06-30 2005-08-03 Retento Ltd Computer security
US20070027815A1 (en) 2005-07-29 2007-02-01 Symantec Corporation Systems and methods for centralized subscription and license management in a small networking environment
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US20070050848A1 (en) 2005-08-31 2007-03-01 Microsoft Corporation Preventing malware from accessing operating system services
US20070067359A1 (en) 2005-09-21 2007-03-22 Lenovo (Singapore) Pte. Ltd. Centralized system for versioned data synchronization
US20070118646A1 (en) 2005-10-04 2007-05-24 Computer Associates Think, Inc. Preventing the installation of rootkits on a standalone computer
US7809670B2 (en) 2005-12-09 2010-10-05 Microsoft Corporation Classification of malware using clustering that orders events in accordance with the time of occurance
US9390031B2 (en) 2005-12-30 2016-07-12 Intel Corporation Page coloring to associate memory pages with programs
US8108840B2 (en) 2006-01-12 2012-01-31 International Business Machines Corporation Method for enhancing debugger performance of hardware assisted breakpoints
US20070174549A1 (en) 2006-01-24 2007-07-26 Yevgen Gyl Method for utilizing a memory interface to control partitioning of a memory module
US7845005B2 (en) 2006-02-07 2010-11-30 International Business Machines Corporation Method for preventing malicious software installation on an internet-connected computer
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
IL181426A (en) 2007-02-19 2011-06-30 Deutsche Telekom Ag Automatic removal of signatures for malware
US20080215925A1 (en) 2007-03-02 2008-09-04 International Business Machines Corporation Distributed fault injection mechanism
US8336102B2 (en) 2007-06-01 2012-12-18 Microsoft Corporation Delivering malformed data for fuzz testing to software applications
JP4938576B2 (ja) 2007-07-24 2012-05-23 日本電信電話株式会社 情報収集システムおよび情報収集方法
US7971044B2 (en) 2007-10-05 2011-06-28 Qualcomm Incorporated Link stack repair of erroneous speculative update
US8627287B2 (en) 2007-11-29 2014-01-07 Microsoft Corporation Prioritizing quality improvements to source code
US7453910B1 (en) * 2007-12-18 2008-11-18 International Business Machines Corporation Synchronization of independent clocks
US8434151B1 (en) 2008-01-04 2013-04-30 International Business Machines Corporation Detecting malicious software
US8261326B2 (en) 2008-04-25 2012-09-04 International Business Machines Corporation Network intrusion blocking security overlay
US8307191B1 (en) 2008-05-09 2012-11-06 Vmware, Inc. Page fault handling in a virtualized computer system
US9280466B2 (en) 2008-09-09 2016-03-08 Kabushiki Kaisha Toshiba Information processing device including memory management device managing access from processor to memory and memory management method
WO2010067703A1 (ja) 2008-12-08 2010-06-17 日本電気株式会社 データ依存関係解析装置、情報処理装置、データ依存関係解析方法、及びプログラム
KR101269549B1 (ko) 2009-05-08 2013-06-04 한국전자통신연구원 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법
JP2011059930A (ja) 2009-09-09 2011-03-24 Nec Computertechno Ltd 電源ユニット
EP2510474B1 (en) 2009-12-11 2017-10-18 Thomas H. Probert Steganographic messaging system using code invariants
US9230455B2 (en) 2009-12-11 2016-01-05 Digital Immunity Llc Steganographic embedding of executable code
US8464102B2 (en) 2010-12-23 2013-06-11 GM Global Technology Operations LLC Methods and systems for diagnosing hardware and software faults using time-stamped events
US8495581B2 (en) 2011-05-05 2013-07-23 International Business Machines Corporation Code evaluation based on failure prediction
KR20140059227A (ko) 2011-09-09 2014-05-15 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 이벤트들의 시퀀스에서의 시간적 위치에 따른 기준 베이스라인에 기초하여 이벤트들의 평가를 위한 시스템 및 방법
US8788627B2 (en) 2011-09-30 2014-07-22 Apple Inc. Interactive web application framework
US9372991B2 (en) 2012-03-06 2016-06-21 International Business Machines Corporation Detecting malicious computer code in an executing program module
US9201720B2 (en) * 2012-08-13 2015-12-01 Nxp B.V. FlexRay network runtime error detection and containment
KR102368170B1 (ko) 2013-09-12 2022-02-25 버섹 시스템즈, 인코포레이션 멀웨어의 자동화된 런타임 검출
US10354074B2 (en) 2014-06-24 2019-07-16 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
CN107077412B (zh) 2014-06-24 2022-04-08 弗塞克系统公司 单层或n层应用的自动化根本原因分析

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1703395A2 (en) * 2005-03-15 2006-09-20 Fujitsu Limited Multiprocessor system with a management processor
CN101154258A (zh) * 2007-08-14 2008-04-02 电子科技大学 恶意程序动态行为自动化分析系统与方法
CN102012987A (zh) * 2010-12-02 2011-04-13 李清宝 自动二进制恶意代码行为分析系统

Also Published As

Publication number Publication date
AU2015279920B2 (en) 2018-03-29
CA2953787C (en) 2021-07-20
US20170123957A1 (en) 2017-05-04
CN107077412A (zh) 2017-08-18
US10114726B2 (en) 2018-10-30
WO2015200508A1 (en) 2015-12-30
CA2953787A1 (en) 2015-12-30
AU2015279920A1 (en) 2017-02-02
EP3161638A1 (en) 2017-05-03

Similar Documents

Publication Publication Date Title
CN107077412B (zh) 单层或n层应用的自动化根本原因分析
US11113407B2 (en) System and methods for automated detection of input and output validation and resource management vulnerability
JP6949951B2 (ja) コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法
KR102268355B1 (ko) 클라우드 배치 기반구조 검증 엔진
US9870307B2 (en) Regression testing of software services
US8572577B2 (en) Monitoring changes to data within a critical section of a threaded program
Viennot et al. Transparent mutable replay for multicore debugging and patch validation
US9594670B2 (en) Managing software dependencies during software testing and debugging
Cinque et al. Assessing and improving the effectiveness of logs for the analysis of software faults
US11055416B2 (en) Detecting vulnerabilities in applications during execution
Chen et al. {Push-Button} Reliability Testing for {Cloud-Backed} Applications with Rainmaker
Iannillo Dependability assessment of android OS
Yu Understanding and Debugging Complex Software Systems: A Data-Driven Perspective.
Mirgorodskiy Automated problem diagnosis in distributed systems
JP2014206807A (ja) ソフトウェア検査方法及びプログラム
Gabert et al. Staghorn: An Automated Large-Scale Distributed System Analysis Platform

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