CN104220992A - 用于确定软件的正确的执行的系统和方法 - Google Patents

用于确定软件的正确的执行的系统和方法 Download PDF

Info

Publication number
CN104220992A
CN104220992A CN201280072088.7A CN201280072088A CN104220992A CN 104220992 A CN104220992 A CN 104220992A CN 201280072088 A CN201280072088 A CN 201280072088A CN 104220992 A CN104220992 A CN 104220992A
Authority
CN
China
Prior art keywords
real
trace
benchmark
time
events
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.)
Granted
Application number
CN201280072088.7A
Other languages
English (en)
Other versions
CN104220992B (zh
Inventor
D·W·格劳罗克
J·沃克
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104220992A publication Critical patent/CN104220992A/zh
Application granted granted Critical
Publication of CN104220992B publication Critical patent/CN104220992B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • 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/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/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Abstract

实施例提供关于软件的正确操作的确信水平。实施例创建软件的基准和实时测量,并将比较测量以判断软件是否正在正确地操作。应用提供商可以在目标软件应用中包括“跟踪元素”。当产生应用时,检测跟踪元素,并提供踪迹事件,踪迹事件共同地提供表示正确的应用执行的“基准踪迹”。提供商向用户提供应用和基准踪迹。用户实时地操作应用,以基于应用仍具有产生踪迹事件(共同地形成“实时”踪迹)的踪迹元素,产生“实时踪迹”。比较器比较基准和实时踪迹。如果踪迹在彼此的预先确定的范围内,则用户具有软件正在正确地操作的确信水平。此处还包括了其他实施例。

Description

用于确定软件的正确的执行的系统和方法
背景
软件可能由于多种原因(包括“恶意软件”和“软件腐烂”)而停止正确地运行。恶意软件是计算机系统上的问题的来源,它呈现各种形式,带有无限的攻击向量。不管形式和向量,恶意软件的最终结果是原始软件不能正确地工作。“腐烂”(也称为“软件老化”)涉及在某个时间长度之后软件停止正确地运行的情况。原因可能是资源消耗、缺陷、或瞬时硬件故障,诸如杂散的高能粒子撞击芯片。无论腐烂的原因是什么,最终结果都是软件停止正确地运行。
考虑恶意软件和腐烂的范围较宽的形式,软件社区面临着向软件用户提供一个软件实际上正在正确地执行的确信的挑战。尽管可以确保软件的正确的加载(例如,通过诸如受信任的执行技术之类的特征),但是,在软件被加载之后,获取关于该软件的实际执行的可靠的信息是具有挑战性的。
附图简述
本发明的各实施例的特征和优点将从所附权利要求书、下面的对一个或多个示例实施例的详细描述,以及对应的图形,变得显而易见,其中:
图1包括在本发明的一个实施例中用于判断软件是否正确地操作的系统。
图2包括本发明的一个实施例中的踪迹事件的示意结构。
图3-7解决了本发明的各实施例中的来自各种软件架构的预期踪迹输出。
图8包括与本发明的各实施例一起使用的系统。
具体实施方式
在下面的描述中,阐述了很多具体细节,但是,本发明的各实施例可以在没有这些具体细节的情况下实施。没有详细示出已知的电路、结构,以及技术,以便避免使对此描述的理解变得模糊。“实施例”、“各实施例”等等表示所描述的各实施例可包括特定特征、结构或特性,但是,每一个实施例都可以不一定包括该特定特征、结构或特征。一些实施例可以具有为其他实施例描述的某个,全部特征或没有一个特征。“第一”、“第二”、“第三”等等描述共同的对象,并表示正在引用相同对象的不同的实例。这样的形容词不暗示如此描述的对象必须处于给定序列,无论是在时间上、在空间上,在排序上,或以任何其他方式。
实施例提供关于软件的正确操作的确信水平。实施例创建软件的基准和实时测量,并比较测量结果以判断软件是否正在正确地操作。应用提供商可以包括在目标软件应用中的“跟踪元素”(此处也被称为“断言”)。当生产、开发、测试、装运或以别的方式与应用一起协作时,检测跟踪元素,并提供踪迹事件(例如,指令计数(IC)),共同地提供表示适当的应用执行的“基准踪迹”。然后,提供商向用户提供仍包括跟踪元素以及基准踪迹的应用。用户实时地操作应用,以基于应用仍具有产生踪迹事件(共同地形成“实时”踪迹)的跟踪元素,产生“实时踪迹”。然后,比较器比较基准和实时踪迹。如果踪迹在彼此的预先确定的范围内,则用户具有软件正在正确地操作的确信水平。
这种确信水平具有许多应用,诸如,例如,恶意软件检测器和证据提供商,供公司的信息技术(IT)组和各种各样的用户使用。更准确地说,这种确信水平具有下列应用:密码处理(例如,密码数据只能被密码处理器访问,并由密码处理器使用的确信)、在线银行(例如,处理用户的银行帐户信息的唯一软件进程是授权的银行软件的确信)、在线游戏(例如,个人未欺骗并且所提供的软件正在正确地执行游戏的确信)、数字权限管理(DRM)(例如,在DRM软件中正在实施DRM规则的确信)、健康记录(例如,根据合适的策略,遵循对健康记录的访问的授权的确信)、财务软件(例如,知道传输和自动交易两者都正确地发生)、云计算(例如,需要运行云应用的软件正在正确地运行)等等。
图1包括在本发明的一个实施例中用于判断软件是否正确地操作的系统。系统100组合了两个过程:(1)踪迹收集,以及(2)实时踪迹和基准踪迹之间的比较。例如,在框110中,软件提供商(例如,软件开发人员和/或能对源代码进行访问的某人)对“目标”软件103(此处有时被称为代码、应用等等))进行插桩,以生成踪迹事件(使用嵌入在代码中的跟踪元素或“断言”),然后,例如,当软件准备发货给用户时,从所生成的一个或多个踪迹事件创建基准踪迹106(存储在缓冲器105中)。在装运之后,在框111中,实时运行的或执行的软件生成踪迹事件(使用仍嵌入在装运的软件中的跟踪元素或断言),以生成由一个或多个踪迹事件共同地构成的实时踪迹116(存储在缓冲器115中)。然后,在框120中,比较功能(此处被称为“比较器”)将实时踪迹116与基准踪迹106进行比较,如果踪迹在预定的可接受的量内匹配,则用户可以具有软件103如供应商预期它那样执行的确信水平(130)。否则,用户没有这样的确信(125)。
用于生成踪迹事件的机制是变化的。在一个实施例中,使用诸如系统可见事件关系关结(SVEN)之类的系统。SVEN是允许踪迹的创建的硬件机制(在,例如,www*videon-central*corn,在提交时可用)。在一个实施例中,当希望获得正确操作的确信时,SVEN被软件供应商用来创建基准踪迹(框110和106)和实时踪迹(框111和116)。SVEN处理断言,以生成共同地在SVEN缓冲器105中形成踪迹的SVEN事件。为使SVEN操作,软件103可以包括SVEN断言。供应商或任何其他方将断言编译到代码103中,它们甚至在生产发布时都保持存在。SVEN断言(框110,111)可以生成遵循诸如在图2中发现的格式(下面进一步地讨论)之类的固定格式的SVEN事件。软件103断言SVEN事件(框110,111),并且关结(nexus)收集事件,并将它置于缓冲器中(当涉及基准踪迹时为缓冲器105,当涉及实时踪迹时为缓冲器115)。
缓冲器105、115可以是允许SVEN事件的恒定输入的循环缓冲器。缓冲器105、115可以包括完整性保护,以确保只有SVEN才将项目放置到缓冲器中。由于敏感数据的暴露的威胁,对缓冲器的读取需要保护。
在一个实施例中,缓冲器105、115可以被包括在“被盗窃的物理存储器”中,其中,BIOS将预留被盗窃的存储器区域,并通过范围寄存器指出位置。范围寄存器将允许只对向缓冲器的SVEN写入进行硬件保护。实施例可以要求SVEN是能够向缓冲器写入的唯一代理。
SVEN可以创建信息的缓冲器105,115,一次一个事件。事件可以是32字节尺寸,并且内容可以是事件特定的。图2示出了SVEN事件200的示例布局。值得注意的是,“指令计数”(IC)包括自从最后一次SVEN调用以来发生的指令的计数。此外,还请注意,“时间戳”条目允许将SVEN事件排序为事件的排序的流。在某些实施例中,时间戳足以用于排序,并可以被用作踪迹以代替IC。然而,在其他实施例中,IC确定踪迹值。此外,SVEN事件200还可以包括启动SVEN事件的线程的IC以作为首部的一部分。正如软件不能控制时间戳,软件可能也不能控制IC。在一个实施例中,SVEN事件尺寸是32字节。
在一个实施例中,IC包括涉及单一线程的各种属性(例如,IC只来自于启动线程,没有其他执行线程影响计数),无中断(例如,IC不包括来自环0、安全模式管理(SMM),或任何其他中断服务的任何指令),无负荷影响(例如,如果其他操作正在在设备上发生,则IC不响应于增大的负荷而改变)。
各实施例可以在各种应用中“对进行插桩”(例如,嵌入跟踪元素或断言)。例如,实施例可以插桩“输入解析器”,输入解析器可能会导致安全问题,因此,是用于插桩的好的候选。对输入的不正确的处理可使攻击者将恶意软件插入到应用中。适当地执行解析器会急剧地降低恶意软件将信息插入到应用中的能力。如此,各实施例可以提供正确的解析器执行的证据。如果各实施例可以检测不正确的行为,则这样做将使应用更好地保卫其本身免遭恶意软件的侵害。
可以使用实施例来插桩“心跳应用”。这样的应用每隔一定的时间间隔检查特定条件的证据。一个示例是定期检查防病毒(AV)程序的执行的心跳应用。如果心跳应用没有检测到AV应用,则心跳应用将关于检测不到AV执行的信息通知用户、管理控制台,等等。这样的插桩可以使人确定心跳应用的健康以及程序是否正在正确地工作。
实施例可以专注于检测软件腐烂。腐烂会在程序的各个部分发生。插桩可以在关键区域或程序的某些部分或整个这样的程序中执行。
用于插桩的其他区域包括加密功能等等。
尽管上面的几段讨论了对软件进行插桩,以产生基准和实时踪迹(将参考图3-7进一步讨论插桩),现在注意力暂时转向如何比较那些值。用于进行这样的比较的软件应用(在图1的框120中被称为“比较器”)可以与目标软件103配对。在一个实施例中,由适当地插桩的并定义的软件产生的踪迹将不能透露有关密钥或其他这样的敏感数据的信息。如此,基准和运行时踪迹的产生和暴露不必是受访问保护的(但是,在其他实施例中可以)。此外,在一个实施例中,对框120的比较器的使用没有限制,如此,比较器可以在没有任何授权的情况下工作。这可以简化比较器的代码和比较器的分配。在一个实施例中,比较器可以访问基准和运行时踪迹,但是不需要对任何一个踪迹的写访问。在一个实施例中,可以阻止比较器向涉及任一踪迹的任何缓冲器(例如,缓冲器105,115)的写入。在一个实施例中,比较器可以具有验证任一流程的完整性的功能,但是在其他实施例中,比较器没有这样的能力。
关于基准踪迹106,可以由软件提供商(例如,软件程序员、经销商,或软件的用户)提供基准踪迹。基准踪迹表示正确地起作用的程序的执行。如上文所提及的,在某些实施例中,,比较器120不验证基准踪迹106的提供方(providence)和完整性。然而,在这样的情况下,软件提供商可以在基准踪迹上提供数字签名,该数字签名将允许比较器的调用者验证基准踪迹106的提供方和完整性。在某些实施例中,软件提供商之外的实体可以创建基准踪迹(例如,当软件在使基准踪迹的创建者不准确的特殊环境中运行时)。
在一个实施例中,比较器120不涉及运行时踪迹116的收集。比较器不验证运行时踪迹的提供方或完整性。相反,在一些实施例中,比较器的调用者负责验证运行时踪迹的提供方和完整性。在一个实施例中,收集实时踪迹116并将它提交到比较器的生态系统必须正确地匹配运行时踪迹与基准,验证基准和运行时两者的完整性,然后,传播比较器报告。
在一个实施例中,比较器120可以联机和/或离线工作。在联机模式下,比较器监控实时踪迹,并“尽可能快地”对检测到的异常作出响应。在脱机模式下,比较器审阅预先记录的实时踪迹,并提供踪迹匹配或不匹配的裁决。在一个实施例中,比较器可以比较存储在两个缓冲器(例如,缓冲器105,115)或者甚至单一缓冲器中的两个踪迹。缓冲器是动态的,也可以是静态的。比较器可以在与收集运行时踪迹的平台相同的平台或不同的平台上操作。在一个实施例中,比较器(例如,离线比较器)可以作为环3应用来操作(基于特许环层次结构,其中,较低层或环有更多特权)。
然而,在某些实施例中(例如,与运行时踪迹的收集同步地工作的在线比较器),比较器120可以在特殊环境中执行。这样的环境可以使,例如,比较器安全地通知管理控制台,而不会有截取,或执行应用的新加载,而无需重新启动平台。在这样的情况下,比较器可以与目标软件103隔离。例如,比较器和目标软件可以在可以完全地与彼此分开的不同的地址空间中运行。示例将包括分别对于比较器120和目标软件103的两个环3进程或两个分离的虚拟机(VM)。当目标软件是基本组件(例如,环0或虚拟机监视器(VMM))时,该架构可以提供用于比较器的执行的位置。
在一个实施例中,比较器120可以访问运行时缓冲器115。随着目标软件不断地利用额外的事件填充缓冲器(例如,由于遇到插桩的跟踪元素或断言导致的输出),比较器可以读取缓冲器并比较实时踪迹与基准踪迹。比较器的对缓冲器的访问可以使得目标软件或诸如恶意软件之类的其他软件都不会干扰比较器的缓冲器访问(例如,由于将对缓冲器的访问的隔离到仅指定的功能的隔离机制的使用)。此外,比较器还可以具有对缓冲器的读取访问,但是,任何写访问都会被架构减轻。如此,在一个实施例中,仅某些实体(例如,SVEN硬件)可以将事件(例如,SVEN踪迹事件)写入到缓冲器中。
在一个实施例中,使目标软件103不会察觉到(例如,通过虚拟化)比较器何时执行比较。在比较器按日程表来操作的各实施例中,任何调度都会在目标软件的视界之外发生。
在一个实施例中,比较器(例如,120)可以在两个踪迹之间执行直接比较,以产生关于踪迹是否匹配的“是”或“否”的回答。然而,在其他实施例中,比较器可以产生导致“置信水平”的结果。例如,比较器可以对于完美匹配的IC产生“完成”评价,对于在彼此的10%内的IC产生“高”,以及对于彼此偏离超过10%的IC产生“低”。任何报告都要服从安全性(例如,数字签名)等等。
进一步地,比较器120可以在提供受保护的执行位置的隔离的环境(例如,可信平台模块)内操作。执行保证能够在没有干扰的情况下操作的能力。此保证提供执行比较器的位置,以便比较器与所有其他平台进程隔离。
图3-7解决了来自各种软件架构的预期踪迹输出。在一个实施例中,这些输出生成通过比较器120比较的基准和实时踪迹106、116。为便于说明,预期的踪迹只示出了过滤的信息量,但是,在某些实施例中,典型的首部信息仍可以存在于每一事件中。
图3包括带有只使用软件断言而没有相关联的硬件踪迹数据的功能的“直的代码(straight code)”。线303和306指出调用“断言”的插入的踪迹事件(参见“DEVH”条目)。换言之,当代码的执行连接那些断言时,这些“断言”共同地生成基准和实时踪迹106、116。作为行303,306中的两个不同的断言的结果,以及所讨论的“直的代码”(例如,无循环)的事实,在时间戳(TS)45.86和00.02处只有两个预期的踪迹事件。如上文所指出的,在各实施例中,使用了示出自从最后一个断言以来“增量”或指令计数变化的IC。在图3的情况下,有2580和1256的IC。比较器将会以此信息作为基准踪迹。然后,将生成(110,106)实时踪迹,并将它们与基准踪迹进行比较(120)。在没有外部硬件使用的情况下,每次图3的代码都应该以同样的方式运行,如此,出口处的IC应该是恒定值。入口IC可能不同,因为它将取决于如何调用功能。比较器应该看见IC值中的很小的可变性,并且应该相应地判断(例如,“完成”、“高”、“低”级别的完整性)。甚至进入IC应该几乎相同。
图4包括带有外部服务的“直的代码”。这种类型的函数没有控制流程变化,但是调用外部服务。在此示例中,在行403、406、408、410有四个踪迹断言,有四个对应的踪迹事件。然而,有两个不同的预期的踪迹:“预期的踪迹1”和“预期的踪迹2”。具体而言,这是直的比较。序列必须存在,或者函数不适当地执行。外部函数(“ExternalABC”)可以,或可以不具有断言。“预期的踪迹1”示出了当外部函数没有断言时的结果。“预期的踪迹2”示出了当外部函数有断言(例如,SVEN断言)时的结果。在“预期的踪迹1”中,后断言示出了包括函数调用的开销以及由“外部ABC”执行的所有操作的计数25890。在“预期的踪迹2”中,后断言示出了相同值(258900),但是内部操作示出了那些指令的细分。后处理可以轻松地显示与“外部ABC”的出口处的增量。不管怎样,都有相同指令数量。
图5包括带有循环的代码。循环在代码中是常见的,并提供反复地执行相同操作的方式。循环也是由于诸如缓冲器溢出之类的错误而通常发生攻击的一个区域。在此示例中,在行503、504、507以及512有断言,但是,由于循环而存在超过四个的踪迹事件。在一个实施例中,如果代码断言要查找若干个迭代,则基准踪迹将为单一迭代提供指令计数,比较器可以确保每一迭代都使用正确数量的指令。如果循环包括提前退出检查,则贯穿代码的该路径也可以提供踪迹断言。如果循环计数溢出,则这是指出代码不正确地操作的问题的直接证据。值得注意的是,在图5中,对于计数0,IC比剩余迭代更大。在此情况下,循环的第一迭代计数循环前面的指令以及循环构造的设置。循环的所有随后的迭代都计数从循环的底部到顶部的指令。这与其他迭代对照,说明了对于计数0的不同的IC。
图6包括带有使代码作出决定的IF语句的代码。在行603、605、608、613以及616有断言。由于由IF语句必然导致的差异,比较有点复杂。取决于代码的复杂性,软件提供商可能希望仅插桩IF相关的代码的各个部分。如果代码路径被寻址,并存储为基准踪迹,那么踪迹之间的比较是直接的。然而,如果代码路径不在基准中,则比较可以返回“未知”的裁决。各实施例可以以各种方式处理分支。例如,实施例可以将转移指示器以及额外的断言放置在目标代码中,以指出采取哪一个分支。另一实施例可以创建基准,以便基准了解两个路径,比较具有选择任一路径的方式。
实施例包括基于所述恶意软件执行超出从所述第一基准跟踪事件扩展到所述第二基准跟踪事件的指令计数的指令数量,来检测恶意软件活动;其中,所述恶意软件至少部分地被包括在所述应用中并位于所述第一和第二断言之间。结果,实施例限制恶意软件的计算能力。例如,如果恶意软件希望隐藏而不被检测到,则恶意软件必须在两个踪迹事件之间的多个指令内操作。如此,恶意软件具有对两个踪迹事件之间的可能的工作量的计算限制。
图7包括带有硬件交互的代码。代码在行703、704以及708具有断言。这里,硬件交互是针对硬件资源R1(例如,寄存器)的。此示例示出了组合了踪迹数据(例如,SVEN数据)与OMAR硬件交互的实施例。OMAR是有效率地将几百个内部片上系统(SoC)信号的踪迹收集到主机存储器中的硅特征(例如,包括在某些消费电子产品平台上)。踪迹断言指出代码将访问哪些资源。所产生的踪迹包含资源的标识和使用。比较是直接的,但是,通常将包括前和后断言,以跟踪何时发生资源访问。
各实施例可以以许多不同的系统类型来实现。现在请参看图8,示出了根据本发明的一实施例的系统的框图,该系统可以在台式机、膝上型计算机、移动因特网设备、移动计算节点、智能电话、手机、无线电台、固定计算节点等等中发现。多处理器系统800是点对点互连系统,并包括通过点对点互连850耦合的第一处理器870和第二处理器880。处理器870和880中的每一个都可以是多核处理器。术语“处理器”可以是指处理来自寄存器和/或存储器的电子数据以将该电子数据转换为可以存储在寄存器和/或存储器中的其他电子数据的任何器件或器件的一部分。第一处理器870可以包括存储器控制器中枢(MCH)和点对点(P-P)接口。类似地,第二处理器880可以包括MCH和P-P接口。MCH可以将处理器耦合到相应的存储器,即,存储器832和存储器834,它们可以是本地附接到相应的处理器的主存储器(例如,动态随机存取存储器(DRAM))的某些部分。第一处理器870和第二处理器880可以分别通过P-P互连来耦合到芯片组890。芯片组890可以包括P-P接口。此外,芯片组890还可以通过接口耦合到第一总线816。各种输入/输出(I/O)设备814以及总线桥接器818可以耦合到第一总线816,总线桥接器818将第一总线816耦合到第二总线820。在一个实施例中,各种设备可以耦合到第二总线820,包括,例如,键盘/鼠标822、通信设备826和诸如磁盘驱动器或可以包括代码830的其他大容量存储设备之类的数据存储单元828。代码可以被包括在一个或多个存储器中,包括存储器828、832、834、通过网络耦合到系统800的存储器,等等。进一步地,音频I/O 824可以耦合到第二总线820。
各实施例可以以代码来实现,并可以存储在在其上存储了指令的至少一个存储介质上,指令可以被用来对系统进行编程以执行指令。存储介质可以包括,但不仅限于,任何类型的磁盘,包括软盘、光盘、固态驱动器(SSD)、光盘只读存储器(CD-ROM)、光盘可重写(CD-RW),以及磁光盘、诸如只读存储器(ROM)之类的半导体器件、诸如DRAM、和静态随机存取存储器(SRAM)之类的随机访问存储器(RAM)、可擦除编程只读存储器(EPROM)、闪存、电可擦除编程只读存储器(EEPROM)、磁卡或光卡,或适于存储电子指令的任何其他类型的介质。
此处参考诸如指令、函数、过程、数据结构、应用、配置设置、代码等等之类的数据描述了本发明的各实施例。当数据被机器访问时,机器可以通过执行任务、定义抽象数据类型、建立低级别的硬件上下文,和/或执行其他操作来作出响应,如此处更详细地描述的。数据可以存储在易失性和/或非易失性数据存储中。术语“代码”或“程序”涵盖较大的范围组件和构造,包括应用、驱动程序、进程、例程、方法、模块,以及子程序,并可以引用任何指令的集合,指令在由处理系统执行时,执行所需操作。另外,替换实施例可以包括使用少于所公开的全部操作的进程、使用额外的操作的进程、使用不同的顺序的相同操作的进程,以及其中组合,细分,或以别的方式改变此处所公开的单个操作的进程。
在一个实施例中,术语“控制逻辑”的使用包括诸如晶体管、寄存器之类的硬件,或诸如可编程逻辑器件(835)之类的其他硬件。然而,在另一个实施例中,逻辑还包括软件或代码(831)。这样的逻辑可以与诸如固件或微代码(836)之类的硬件集成。处理器或控制器可以包括用于表示本领域内已知的各种控制逻辑中的任何一种的控制逻辑,如此,可以实现为微处理器、微控制器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可编程逻辑器件(PLD)等等。
有时,诸如SVEN、OMAR等等之类的术语和原则用于说明目的,但是,各实施例不仅限于使用SVEN、OMAR或任何其他技术或系统。断言和踪迹可以使用各个软件和硬件调试工具来实现,诸如,但不仅限于,来自Mobile Industry Processor Interface(MIPI)(www*mipi*org)的系统跟踪协议(STP),及由MIPI所定义的其他调试接口。此外,术语“应用”还应该广泛地解释以包括用户应用、操作系统、驱动程序,以及许多其他形式的软件、代码,以及程序,如上文所定义的那些术语。此外,上文还使用了术语“提供商”,但是,本发明的各实施例不仅限于任何一方。进一步地,有时,上面的各实施例被说成包括比较基准和实时踪迹值的应用。比较踪迹的比较器不必位于任何特定位置,并可以位于,例如,目标应用(例如,103)中,或通过完全分离的进程位于目标应用之外。
实施例包括由至少一个处理器执行的方法,包括:接收具有第一和第二断言的应用的第一和第二基准踪迹事件,所述第一和第二基准踪迹事件分别对应于所述第一和第二断言;在接收到所述第一和第二基准踪迹事件之后,接收通过执行所述应用所生成的并且分别对应于所述第一和第二断言的第一和第二实时踪迹事件;以及,将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较。实施例包括通过所述第一和第二断言,生成,(a)所述第一和第二基准踪迹事件,以及(b)所述第一和第二实时踪迹事件。实施例包括确定第一和第二基准踪迹事件中的一个和第一和第二实时踪迹事件中的一个之间的差异。实施例包括将所述差异与预定值进行比较,以判断所述应用是否正在正确地操作。在一个实施例中,所述第一和第二基准踪迹事件分别包括第一和第二基准指令计数,所述第一和第二实时踪迹事件分别包括第一和第二实时指令计数。在一个实施例中,将所述第一和第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较包括将所述第一和第二基准指令计数分别与所述第一和第二实时指令计数进行比较。在一个实施例中,所述第一和第二断言中的至少一个被包括在有分支的代码部分的一个分支内。在一个实施例中,所述第一和第二断言中的每一个都被包括代码部分的单一循环内。在一个实施例中,所述第一和第二基准踪迹事件分别包括第一和第二基准时间戳,所述第一和第二实时踪迹事件分别包括第一和第二实时时间戳;以及,将所述第一和第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较包括将所述第一和第二基准时间戳分别与所述第一和第二实时时间戳进行比较。实施例包括实时地将第一和第二基准踪迹事件分别与第一和第二实时踪迹事件进行比较。实施例包括基于将第一和第二基准踪迹事件分别与第一和第二实时踪迹事件进行比较,检测恶意软件活动。在一个实施例中,将所述第一和第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较包括从位于远程的计算节点接收基于将所述和第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较的评估。在一个实施例中,所述第一和第二基准踪迹首先是由第一计算平台上的第一方所生成的,所述第一和第二实时踪迹事件首先是由第二计算平台上的第二方所生成的。实施例包括在第一计算节点上执行的所述应用;比较器逻辑模块将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较;以及,所述比较器逻辑模块在所述第一计算节点和远程耦合到所述第一计算节点的第二计算节点中的一个上执行。在一个实施例中,比较器逻辑模块将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较;以及,所述比较器逻辑在第一安全环境中执行,所述应用在与所述第一安全环境隔离的第二安全环境中执行。实施例包括基于所述恶意软件执行超出从所述第一基准踪迹事件扩展到所述第二基准踪迹事件的指令计数的指令的数量,来检测恶意软件活动;其特征在于,所述恶意软件至少部分地被包括在所述应用中并位于所述第一和第二断言之间。
在一个实施例中,设备包括:至少一个存储器和耦合到所述至少一个存储器的至少一个处理器,以执行操作,包括:确定具有第一和第二断言的应用的第一和第二基准踪迹事件,所述第一和第二基准踪迹事件分别对应于所述第一和第二断言;确定分别对应于所述第一和第二断言的第一和第二实时踪迹事件;以及,基于所述第一和第二基准踪迹事件和所述第一和第二实时踪迹事件之间的比较,判断所述应用是否正确地操作。在一个实施例中,所述第一和第二基准踪迹事件分别包括第一和第二基准指令计数,所述第一和第二实时踪迹事件分别包括第一和第二实时指令计数。在一个实施例中,操作包括:确定所述第一和第二基准踪迹事件中的一个和所述第一和第二实时踪迹事件中的一个之间的差异;以及,将所述差异与预定值进行比较,以判断所述应用是否正在正确地操作。
上文所描述的设备的所有任选特征也可相对于此处描述的方法或处理而被实现。尽管是参考数量有限的实施例来描述本发明的,但是,那些精通本技术的人将从其中理解很多修改和变体。所附权利要求书涵盖落在本发明的真正的精神和范围内的所有这样的修改和变体。

Claims (21)

1.一种由至少一个处理器执行的方法,包括:
接收具有第一和第二断言的应用的第一和第二基准踪迹事件,所述第一和第二基准踪迹事件分别对应于所述第一和第二断言;
在接收到所述第一和第二基准踪迹事件之后,接收通过执行所述应用所生成的并且分别对应于所述第一和第二断言的第一和第二实时踪迹事件;以及
将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较。
2.如权利要求1所述的方法,其特征在于,包括通过所述第一和第二断言,生成(a)所述第一和第二基准踪迹事件以及(b)所述第一和第二实时踪迹事件。
3.如权利要求1所述的方法,其特征在于,包括确定所述第一和第二基准踪迹事件中的一个和所述第一和第二实时踪迹事件中的一个之间的差异。
4.如权利要求3所述的方法,其特征在于,包括将所述差异与预定值进行比较,以判断所述应用是否正在正确地操作。
5.如权利要求1所述的方法,其特征在于,所述第一和第二基准踪迹事件分别包括第一和第二基准指令计数,并且所述第一和第二实时踪迹事件分别包括第一和第二实时指令计数。
6.如权利要求5所述的方法,其特征在于,将所述第一和第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较包括将所述第一和第二基准指令计数分别与所述第一和第二实时指令计数进行比较。
7.如权利要求1所述的方法,其特征在于,所述第一和第二断言中的至少一个被包括在有分支的代码部分的一个分支内。
8.如权利要求1所述的方法,其特征在于,所述第一和第二断言中的每一个都被包括代码部分的单一循环内。
9.如权利要求1所述的方法,其特征在于:
所述第一和第二基准踪迹事件分别包括第一和第二基准时间戳,所述第一和第二实时踪迹事件分别包括第一和第二实时时间戳;以及
将所述第一和第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较包括将所述第一和第二基准时间戳分别与所述第一和第二实时时间戳进行比较。
10.如权利要求1所述的方法,其特征在于,包括实时地将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较。
11.如权利要求1所述的方法,其特征在于,包括基于将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较,来检测恶意软件活动。
12.如权利要求1所述的方法,其特征在于,将所述第一和第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较包括:从位于远程的计算节点接收基于将所述和第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较的评估。
13.如权利要求1所述的方法,其特征在于,所述第一和第二基准踪迹事件首先是由第一计算平台上的第一方所生成的,所述第一和第二实时踪迹事件首先是由第二计算平台上的第二方所生成的。
14.如权利要求1所述的方法,其特征在于:
所述应用在第一计算节点上执行;
比较器逻辑模块将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较;以及
所述比较器逻辑模块在所述第一计算节点和远程耦合到所述第一计算节点的第二计算节点中的一个上执行。
15.如权利要求1所述的方法,其特征在于:
比较器逻辑模块将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较;以及
所述比较器逻辑在第一安全环境中执行,所述应用在与所述第一安全环境隔离的第二安全环境中执行。
16.如权利要求1所述的方法,其特征在于,包括基于所述恶意软件执行超出从所述第一基准踪迹事件扩展到所述第二基准踪迹事件的指令计数的指令数量,来检测恶意软件活动;
其中所述恶意软件至少部分地被包括在所述应用中并位于所述第一和第二断言之间。
17.至少一个机器可读介质,所述至少一个机器可读介质包括指令,当在计算设备上被执行时,所述指令导致所述计算设备执行如权利要求1到16中任一项所述的方法。
18.一种设备,包括用于执行权利要求1到16中的任何一项所述的装置。
19.一种设备,包括:
至少一个存储器和耦合到所述至少一个存储器的至少一个处理器,用于执行操作,所述操作包括:
确定具有第一和第二断言的应用的第一和第二基准踪迹事件,所述第一和第二基准踪迹事件分别对应于所述第一和第二断言;
确定分别对应于所述第一和第二断言的第一和第二实时踪迹事件;以及
基于所述第一和第二基准踪迹事件和所述第一和第二实时踪迹事件之间的比较,判断所述应用是否正确地操作。
20.如权利要求19所述的设备,其特征在于,所述第一和第二基准踪迹事件分别包括第一和第二基准指令计数,所述第一和第二实时踪迹事件分别包括第一和第二实时指令计数。
21.如权利要求19所述的设备,其特征在于,所述操作包括:
确定所述第一和第二基准踪迹事件中的一个和所述第一和第二实时踪迹事件中的一个之间的差异;以及
将所述差异与预定值进行比较,以判断所述应用是否正在正确地操作。
CN201280072088.7A 2012-03-29 2012-03-29 用于确定软件的正确的执行的系统和方法 Expired - Fee Related CN104220992B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/031303 WO2013147814A1 (en) 2012-03-29 2012-03-29 System and method for determining correct execution of software

Publications (2)

Publication Number Publication Date
CN104220992A true CN104220992A (zh) 2014-12-17
CN104220992B CN104220992B (zh) 2017-05-17

Family

ID=49260875

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280072088.7A Expired - Fee Related CN104220992B (zh) 2012-03-29 2012-03-29 用于确定软件的正确的执行的系统和方法

Country Status (4)

Country Link
US (1) US9514028B2 (zh)
EP (1) EP2831738A4 (zh)
CN (1) CN104220992B (zh)
WO (1) WO2013147814A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110399725A (zh) * 2019-06-18 2019-11-01 深圳壹账通智能科技有限公司 漏洞处理方法及装置、电子设备和计算机可读存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9628507B2 (en) * 2013-09-30 2017-04-18 Fireeye, Inc. Advanced persistent threat (APT) detection center
US10114960B1 (en) * 2014-03-20 2018-10-30 Amazon Technologies, Inc. Identifying sensitive data writes to data stores
US20150379268A1 (en) * 2014-06-27 2015-12-31 Prabhat Singh System and method for the tracing and detection of malware
US10778805B2 (en) 2017-07-18 2020-09-15 International Business Machines Corporation Identifying application preemptive requests
US11556649B2 (en) * 2019-12-23 2023-01-17 Mcafee, Llc Methods and apparatus to facilitate malware detection using compressed data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040163079A1 (en) * 2003-02-13 2004-08-19 Path Communications, Inc. Software behavior pattern recognition and analysis
US7043718B1 (en) * 2002-02-15 2006-05-09 Lsi Logic Corporation System real-time analysis tool
US20080034255A1 (en) * 2006-08-01 2008-02-07 Takehiko Nagano Program failure analysis system, failure analysis method, and emulator device
US7379999B1 (en) * 2003-10-15 2008-05-27 Microsoft Corporation On-line service/application monitoring and reporting system

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5257358A (en) * 1989-04-18 1993-10-26 Nec Electronics, Inc. Method for counting the number of program instruction completed by a microprocessor
US5388233A (en) * 1993-04-30 1995-02-07 Intel Corporation Method and apparatus for counting instruction types using bit masks and a programmable bit map
JP3638411B2 (ja) 1997-08-27 2005-04-13 富士通株式会社 メモリ分散型並列計算機による連立一次方程式の計算処理方法および並列計算機
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
JP2000339188A (ja) * 1999-05-27 2000-12-08 Harness Syst Tech Res Ltd プログラム実行異常検出装置
US6789256B1 (en) 1999-06-21 2004-09-07 Sun Microsystems, Inc. System and method for allocating and using arrays in a shared-memory digital computer system
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
US20040268097A1 (en) * 2003-06-26 2004-12-30 International Business Machines Corporation Instruction sampling in a microprocessor
US7284237B2 (en) * 2003-11-26 2007-10-16 Sap Aktiengesellschaft Testing flow control at test assertion level
EP1538509A1 (fr) * 2003-12-04 2005-06-08 Axalto S.A. Procédé de sécurisation de l'éxécution d'un programme contre des attaques par rayonnement
US20050204155A1 (en) * 2004-03-09 2005-09-15 Nec Laboratories America, Inc Tamper resistant secure architecture
JP4983142B2 (ja) * 2006-08-09 2012-07-25 富士通株式会社 プログラム監視方法、コンピュータ、および異常監視用プログラム
US7428473B2 (en) * 2007-02-07 2008-09-23 Honeywell International Inc. Health monitoring in a system of circumvention and recovery
US20090019318A1 (en) 2007-07-10 2009-01-15 Peter Cochrane Approach for monitoring activity in production systems
US8176477B2 (en) * 2007-09-14 2012-05-08 International Business Machines Corporation Method, system and program product for optimizing emulation of a suspected malware
US8572736B2 (en) * 2008-11-12 2013-10-29 YeeJang James Lin System and method for detecting behavior anomaly in information access
EP2262259A1 (en) * 2009-06-08 2010-12-15 Nagravision S.A. Method for monitoring execution of data processing program instructions in a security module
US8571834B2 (en) * 2010-01-08 2013-10-29 International Business Machines Corporation Opcode counting for performance measurement
US8140901B2 (en) * 2009-11-30 2012-03-20 International Business Machines Corporation Validation of processors using a self-generating test case framework
US20110131396A1 (en) * 2009-12-01 2011-06-02 Xmos Limited Timing analysis
US8713370B2 (en) * 2011-08-11 2014-04-29 Apple Inc. Non-intrusive processor tracing
US9558103B2 (en) * 2011-08-25 2017-01-31 Hewlett Packard Enterprise Development Lp System and method to indicate code block execution
US8640243B2 (en) * 2012-03-22 2014-01-28 International Business Machines Corporation Detecting malicious computer code in an executing program module
US9092214B2 (en) * 2012-03-29 2015-07-28 Intel Corporation SIMD processor with programmable counters externally configured to count executed instructions having operands of particular register size and element size combination

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7043718B1 (en) * 2002-02-15 2006-05-09 Lsi Logic Corporation System real-time analysis tool
US20040163079A1 (en) * 2003-02-13 2004-08-19 Path Communications, Inc. Software behavior pattern recognition and analysis
US7379999B1 (en) * 2003-10-15 2008-05-27 Microsoft Corporation On-line service/application monitoring and reporting system
US20080034255A1 (en) * 2006-08-01 2008-02-07 Takehiko Nagano Program failure analysis system, failure analysis method, and emulator device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110399725A (zh) * 2019-06-18 2019-11-01 深圳壹账通智能科技有限公司 漏洞处理方法及装置、电子设备和计算机可读存储介质

Also Published As

Publication number Publication date
EP2831738A1 (en) 2015-02-04
EP2831738A4 (en) 2015-11-18
WO2013147814A1 (en) 2013-10-03
CN104220992B (zh) 2017-05-17
US20140143608A1 (en) 2014-05-22
US9514028B2 (en) 2016-12-06

Similar Documents

Publication Publication Date Title
US9146833B2 (en) System and method for correct execution of software based on a variance between baseline and real time information
Le Goues et al. Specification mining with few false positives
US9021592B2 (en) Source code analysis of inter-related code bases
CN104220992A (zh) 用于确定软件的正确的执行的系统和方法
Li et al. A novel approach for software vulnerability classification
US20190361788A1 (en) Interactive analysis of a security specification
US20210004470A1 (en) Automatic Generation Of Patches For Security Violations
Bandeira et al. Non-intrusive fault injection techniques for efficient soft error vulnerability analysis
Filus et al. Software vulnerabilities in TensorFlow-based deep learning applications
US20170344746A1 (en) Utilizing likely invariants for runtime protection of web services
Liu et al. KUBO: Precise and Scalable Detection of User-triggerable Undefined Behavior Bugs in OS Kernel.
Calvagna et al. Automated conformance testing of Java virtual machines
US9003236B2 (en) System and method for correct execution of software based on baseline and real time information
US8510713B1 (en) Method and system for validating a disassembler
Rowe Confining adversary actions via measurement
Xu et al. Silent Bugs Matter: A Study of {Compiler-Introduced} Security Bugs
US20120131669A1 (en) Determining whether method of computer program is a validator
Munir et al. Pre-deployment Analysis of Smart Contracts--A Survey
Ernst et al. Towards rapid composition with confidence in robotics software
Weigel et al. Kernel vulnerability factor and efficient hardening for histogram of oriented gradients
Reinhardt et al. Assurance of claims and evidence for aviation systems
Omotosho et al. Evaluating the Hardware Performance Counters of an Xtensa Virtual Prototype
US20240119161A1 (en) One or more devices providing improved security for any database including distributed applications and smart contracts
Beuster et al. Formal security policy models for smart card evaluations
Huang et al. Comprehensive Memory Safety Validation: An Alternative Approach to Memory Safety

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170517

Termination date: 20210329