CN107209827A - 用于跟踪被污染的数据的机制 - Google Patents
用于跟踪被污染的数据的机制 Download PDFInfo
- Publication number
- CN107209827A CN107209827A CN201680008625.XA CN201680008625A CN107209827A CN 107209827 A CN107209827 A CN 107209827A CN 201680008625 A CN201680008625 A CN 201680008625A CN 107209827 A CN107209827 A CN 107209827A
- Authority
- CN
- China
- Prior art keywords
- data
- instruction
- contaminated
- memory cell
- physical memory
- 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
Links
- 230000007246 mechanism Effects 0.000 title abstract description 10
- 238000003860 storage Methods 0.000 claims abstract description 81
- 238000000034 method Methods 0.000 claims description 107
- 230000008569 process Effects 0.000 claims description 74
- 238000013500 data storage Methods 0.000 claims description 11
- 238000013523 data management Methods 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 29
- 238000004891 communication Methods 0.000 description 15
- 230000002159 abnormal effect Effects 0.000 description 9
- 230000002349 favourable effect Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 239000004020 conductor Substances 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000012384 transportation and delivery Methods 0.000 description 3
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011112 process operation Methods 0.000 description 2
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012772 sequence design Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- C—CHEMISTRY; METALLURGY
- C09—DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
- C09J—ADHESIVES; NON-MECHANICAL ASPECTS OF ADHESIVE PROCESSES IN GENERAL; ADHESIVE PROCESSES NOT PROVIDED FOR ELSEWHERE; USE OF MATERIALS AS ADHESIVES
- C09J4/00—Adhesives based on organic non-macromolecular compounds having at least one polymerisable carbon-to-carbon unsaturated bond ; adhesives, based on monomers of macromolecular compounds of groups C09J183/00 - C09J183/16
- C09J4/06—Organic non-macromolecular compounds having at least one polymerisable carbon-to-carbon unsaturated bond in combination with a macromolecular compound other than an unsaturated polymer of groups C09J159/00 - C09J187/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- C—CHEMISTRY; METALLURGY
- C09—DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
- C09J—ADHESIVES; NON-MECHANICAL ASPECTS OF ADHESIVE PROCESSES IN GENERAL; ADHESIVE PROCESSES NOT PROVIDED FOR ELSEWHERE; USE OF MATERIALS AS ADHESIVES
- C09J11/00—Features of adhesives not provided for in group C09J9/00, e.g. additives
- C09J11/02—Non-macromolecular additives
- C09J11/06—Non-macromolecular additives organic
-
- C—CHEMISTRY; METALLURGY
- C09—DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
- C09J—ADHESIVES; NON-MECHANICAL ASPECTS OF ADHESIVE PROCESSES IN GENERAL; ADHESIVE PROCESSES NOT PROVIDED FOR ELSEWHERE; USE OF MATERIALS AS ADHESIVES
- C09J7/00—Adhesives in the form of films or foils
- C09J7/10—Adhesives in the form of films or foils without carriers
-
- C—CHEMISTRY; METALLURGY
- C09—DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
- C09J—ADHESIVES; NON-MECHANICAL ASPECTS OF ADHESIVE PROCESSES IN GENERAL; ADHESIVE PROCESSES NOT PROVIDED FOR ELSEWHERE; USE OF MATERIALS AS ADHESIVES
- C09J7/00—Adhesives in the form of films or foils
- C09J7/30—Adhesives in the form of films or foils characterised by the adhesive composition
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B5/00—Optical elements other than lenses
- G02B5/30—Polarising elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09F—DISPLAYING; ADVERTISING; SIGNS; LABELS OR NAME-PLATES; SEALS
- G09F9/00—Indicating arrangements for variable information in which the information is built-up on a support by selection or combination of individual elements
- G09F9/30—Indicating arrangements for variable information in which the information is built-up on a support by selection or combination of individual elements in which the desired character or characters are formed by combining individual elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Chemical & Material Sciences (AREA)
- Organic Chemistry (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Optics & Photonics (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Abstract
本公开内容在一些方面涉及保护系统和数据免受恶意引起的破坏。通过监视数据以检测和防止潜在的攻击来维护数据完整性。在数据流计算机体系结构或其他合适的体系结构中实现用于跟踪数据是否被污染的机制。在一些方面,在这种体系结构的寄存器文件、存储器管理和指令集内实现污染检查机制。为此,存储在给定物理存储单元中的数据是否被污染的指示与所述物理存储单元一起被存储。例如,寄存器可以包括用于对应污染标志的比特,存储器页可以包括用于对应污染标志的比特,以及输入/输出(I/O)端口可以包括用于对应污染标志的比特。
Description
相关申请的交叉引用
本申请要求于2015年2月5日向美国专利商标局提交的非临时申请No.14/615,321的优先权和权益,其全部内容通过引用并入本文。
技术领域
本公开内容的方面通常涉及数据管理,更具体地但非排他地,涉及跟踪被污染的数据。
背景技术
在计算机体系结构中,需要确保计算机所使用的数据不被损坏(例如,被黑客、恶意程序等损坏)。要保护的数据包括存储在存储器和寄存器中的数据。
比如EDGE(显式数据图执行)体系结构的数据流计算机体系结构可以显式地编码机器指令中的操作之间的数据相关性。EDGE体系结构(例如E2)将指令分组到(例如)具有多达128条指令的执行块中。来自寄存器的存储和加载通常用于在不同的执行块之间传送值。
存在一大类安全漏洞,其具有信任被不正确地审查的外部输入的特点,从而允许攻击者访问非预期的功能。污染跟踪是一种用于动态捕获不可信数据的实例而不管所述不可信数据通过代码的路径如何的已知技术。通常,污染跟踪是离线运行的,例如,在模拟期间。
发明内容
以下呈现本公开内容的一些方面的简要概述,以提供对这些方面的基本理解。该概述不是对本公开内容的所有预期特征的广泛综述,既不旨在确定本公开内容的所有方面的关键或重要元素,也不旨在描述本公开内容的任何或所有方面的范围。其唯一目的是以简化形式呈现本公开内容的一些方面的各种概念,作为稍后呈现的更详细描述的序言。
本公开内容的各个方面提供了用于跟踪数据是否被污染的机制。在一些方面,所述机制是在数据流计算机体系结构(例如,EDGE体系结构)中实现的。在一些方面,利用这种体系结构的寄存器文件、存储器管理和指令集来实现污染检查机制。
对存储在给定物理存储单元中的数据是否被污染的指示与所述物理存储单元一起被存储。例如,污染比特可以与寄存器、存储器页和I/O端口相关联。作为更具体但非排他性的示例,寄存器可以包括用于对应污染标志的比特,存储器页可以包括用于对应污染标志的比特,以及输入/输出(I/O)端口可以包括用于对应污染标志的比特。
通过使用这些污染标志,对数据(或根据该数据导出的其他数据)是否被污染的指示可以跟随所述数据(或所导出的数据)通过计算机的指令执行流程。为此,只要被污染的数据被存储在物理存储单元中,就为所述物理存储单元设置对应的污染标志。相反,只要从物理存储单元读取数据,就执行检查以确定所述数据是否被污染。在实践中,单个污染标志可以被使用来指示一页物理存储单元的被污染的数据。
因此,关键执行操作(例如,系统调用)可以容易地确定被污染的数据是否正被传递到所述操作。如果是这样,所述操作可以引发异常,以防止所述被污染的数据破坏所述操作。
在一方面,本公开内容提供了一种用于数据管理的方法,包括:从第一物理存储单元接收第一数据;确定所述第一数据是否被污染,其中,所述确定是基于所存储的针对所述第一物理存储单元的第一指示的;将基于所述第一数据的第二数据存储在第二物理存储单元中;以及存储针对所述第二物理存储单元的第二指示,其中,所述第二指示指示所述第二数据是否被污染。
本公开内容的另一方面提供了一种被配置为用于数据管理的装置,包括至少一个存储器电路和耦合到所述至少一个存储器电路的处理电路。所述处理电路被配置为:从所述至少一个存储器电路的第一物理存储单元接收第一数据;确定所述第一数据是否被污染,其中,所述确定是基于所存储的针对所述第一物理存储单元的第一指示的;将基于所述第一数据的第二数据存储在所述至少一个存储器电路的第二物理存储单元中;以及存储针对第二物理存储单元的第二指示,其中,所述第二指示指示所述第二数据是否被污染。
本公开内容的另一方面提供了一种被配置用于数据管理的装置。所述装置包括用于从第一物理存储单元接收第一数据的单元;用于确定所述第一数据是否被污染的单元,其中,所述确定是基于所存储的针对所述第一物理存储单元的第一指示的;用于将基于所述第一数据的第二数据存储在第二物理存储单元中的单元;以及用于存储针对所述第二物理存储单元的第二指示的单元,其中,所述第二指示指示所述第二数据是否被污染。
本公开内容的另一方面提供一种存储计算机可执行代码的计算机可读介质,包括用于执行以下操作的代码:从第一物理存储单元接收第一数据;确定所述第一数据是否被污染,其中,所述确定是基于所存储的针对所述第一物理存储单元的第一指示的;将基于所述第一数据的第二数据存储在第二物理存储单元中;以及存储针对所述第二物理存储单元的第二指示,其中,所述第二指示指示所述第二数据是否被污染。
在阅读了下面的详细描述后,将更全面地理解本公开内容的这些和其它方面。在结合附图阅读本公开内容的具体实施方式的以下描述后,本公开内容的其它方面、特征和实现方式对于本领域普通技术人员将变得显而易见。尽管本公开内容的特征可以相对于下面的某些实现方式和附图进行讨论,但是本公开内容的所有实现方式可以包括本文所讨论的有利特征中的一个或多个有利特征。换句话说,尽管一个或多个实现方式可以被论述为具有某些有利特征,但是也可以根据本文所讨论的本公开内容的各种实现方式来使用这些特征中的一个或多个。按照类似的方式,尽管某些实现方式在下面可以被论述为设备、系统或方法实现方式,但是应当理解,这样的实现方式可以在各种设备、系统和方法中实现。
附图说明
图1例示了其中本公开内容的一个或多个方面可以找到应用的数据流计算机体系结构的某些方面。
图2例示了其中本公开内容的一个或多个方面可以找到应用的数据流计算机体系结构中的指令执行的示例。
图3例示了其中本公开内容的一个或多个方面可以找到应用的数据流计算机体系结构中的指令执行的另一示例。
图4例示了根据本公开内容的一些方面的计算机体系结构的示例。
图5例示了根据本公开内容的一些方面的将数据标记为被污染的示例。
图6例示了根据本公开内容的一些方面的跟踪被污染的数据的示例。
图7例示了根据本公开内容的一些方面的污染跟踪过程的示例。
图8例示了根据本公开内容的一些方面的异常处理的示例。
图9例示了根据本公开内容的一些方面的用于清除污染标志的过程的示例。
图10例示了根据本公开内容的一些方面的支持数据跟踪的电子设备的示例性硬件实施方式的方框图。
图11例示了根据本公开内容的一些方面的数据跟踪过程的示例。
图12例示了根据本公开内容的一些方面的图11中的数据跟踪过程的附加方面的示例。
图13例示了根据本公开内容的一些方面的图11中的数据跟踪过程的附加方面的示例。
图14示出了根据本公开内容的一些方面的图11中的数据跟踪过程的附加方面的示例。
具体实施方式
以下结合附图阐述的详细描述旨在作为各种配置的描述,并非旨在表示可以实践本文所述的概念的唯一配置。所述详细描述包括目的是提供对各种概念的透彻理解的具体细节。然而,对于本领域技术人员将显而易见的是,可以在没有这些具体细节的情况下实践这些概念。在一些情况下,以方框图形式示出了公知的结构和组件,以便避免混淆这些概念。
本公开内容在一些方面涉及跟踪来自潜在的不可信源(例如,外部源)的值,因为所述值由程序操纵。可以通过适当地标记存储器页和寄存器来定义安全和不安全的数据源和数据宿。例如,将存储来自不可信源(例如来自I/O设备)的数据的每个存储单元标记为被污染。当所述数据从一个指令或操作传递到另一个指令或操作时,该标志继续存在。因此,在整个执行过程中的所述数据的任何实例的存储单元都将被标记为被污染。
任何按照不安全方式使用被污染的值的尝试都会产生用于中断执行流的异常情况。例如,内核可以通过要求在未被污染的存储器页或寄存器中传递参数来确保仅仅未被污染的值被传递给系统调用。
为了例示的目的,将在数据流计算机体系结构(例如,EDGE体系结构)的上下文中描述本公开内容的各个方面。然而,应当理解,本文的教导不限于这样的实现方式,并且本文的教导可以用于其他计算机体系结构。
数据流体系结构
图1是数据流计算机体系结构100的简化示例,其中,编译器102将代码编译成存储在存储器106中的执行块104集合,以供中央处理单元(CPU)108执行。如图所示,每个执行块包括若干指令。例如,EDGE体系结构可以将指令分组到具有128条或更多条指令的执行块中。
数据流计算机体系结构并行地执行指令,由此只要给定指令的输入准备就绪,就可以执行所述给定指令。在实际的系统中,数据流计算机体系结构可以支持大量的并行执行(例如,一百个或更多个)。通过使用这样的体系结构,可以实现处理效率的提高,从而提高系统性能和/或降低系统功率消耗。
图2例示了简化的执行树200,所述执行树例示了只要指令各自的输入(例如,操作数)准备就绪就执行所述指令。在该示例中,指令1向指令2提供输入202,并向指令3提供输入204。因此,一旦指令3接收到输入204,就可以执行指令3。相比之下,在指令2从指令3接收到其另一输入206之前,指令2不执行。一旦指令4从指令2接收到输入208,指令4就执行。类似地,一旦指令6从指令5接收到输入210,就可以执行指令6,而在指令8接收到来自指令6的输入212和来自指令7的其另一输入216二者之前,指令8不执行。然而,在从指令3接收到输入214之前,指令7不提供输入216。
为了支持这种执行方案,数据流计算机体系结构针对每个执行块采用相对大量的寄存器。例如,可以为执行块中的每个指令临时分配一对寄存器。按照这种方式,一旦指令的操作数变得可用,就可以存储它直到所述指令的任何其他操作数变得可用。通过使用为每个指令分配的寄存器,可以存储所述操作数,而不影响其他指令(并且引申开来不影响其他块)。
因此,数据流计算机体系结构可以显式地编码机器指令中的操作之间的数据相关性。例如,比如Microsoft的E2的EDGE体系结构可以使用图3中例示的(伪)指令来添加两个值。
第一指令302,i0,从存储器中的地址1读取值,并将所述结果作为第一操作数分派给第三指令306,i2。类似地,第二指令304,i1,从地址2读取值,并将所述结果作为第二操作数分派给指令i2。当两个操作数都到达时,指令i2可以执行加法运算,并且(在这种情况下)将结果发送到第四指令308,i3。
除了向指定的指令发送值之外,EDGE体系结构还经常定义一个或多个广播通道,所述广播通道可以被多个指令使用来接收操作数。来自寄存器的存储和加载通常用于在不同的执行块之间传送值。因此,EDGE体系结构将经由寄存器以及存储器页在执行块之间传递数据。
污染检查机制
本公开内容在一些方面涉及在比如EDGE体系结构的数据流体系结构的寄存器文件、指令集以及存储器管理内实现的污染检查机制。指令被收集到例如具有多达128条指令的原子块中。指令具有0个、1个、2个或更多个操作数,并将其结果显式地发送到0个、1个、2个或更多个目的地。目的地可以包括但不限于在同一执行块、广播通道或通用寄存器中的其他指令的操作数。
每个目的地,无论类型如何,都存储它接收的值,直到所述值被所有潜在的消耗指令使用为止。这通过以实现方式相关的方式将每个目的地(包括命名寄存器)映射到寄存器文件中的物理寄存器来实现。
图4例示了实现这种体系结构的系统400的简化示例。系统400包括CPU 402、包括大量物理寄存器的寄存器文件404、管理包括多个定义的存储器页的物理存储器408的存储器管理单元(MMU)406以及物理输入/输出(I/O)端口410。
图中还例示了用于在系统的组件之间传送信息的各种通道。例如,通道(例如,信令总线)420用于在CPU 402、寄存器文件404、MMU 406(并且因此存储器408)和I/O端口410之间传送信息。此外,广播通道422可以用于向实现该通道的寄存器传送信息和从所述寄存器传送信息。
根据本文的教导,在一些实现方式中,污染标志被添加到机器的寄存器文件中的每个物理寄存器。例如,为寄存器414中之一指示污染标志412(例如,一个比特)。此外,在一些实现方式中,修改由CPU 402执行的每个指令的逻辑,使得如果任何操作数具有其污染标志设置,则在目的地设置污染标志。
而且,根据本文的教导,在一些实现方式中,污染标志还被添加到由存储器管理单元硬件(通常在转译后备缓冲区(TLB)中)中管理的每个页表项中。例如,为存储器页418中之一指示污染标志416(例如,一个比特)。如果存储器读取指令访问与具有所述污染标志设置的页面相交的地址,则在其目的地设置污染标志。
如果所述污染标志被设置在存储器存储指令的操作数上,并且所述存储器地址与未被污染的页相交,则所述页被标记为被污染。可替换地,可以执行陷阱指令。这种陷阱指示可以由操作环境处理的安全异常。
如果所述体系结构支持特定的I/O指令,则将所有输入指令的目的地标记为被污染。同样,具有被污染的操作数的输出指令可以导致执行陷阱。
根据本文的教导,可以定义若干指令以支持污染跟踪。例如,可以定义两个用户模式指令TAINT和UNTAINT。TAINT将操作数复制到0、1、2等个目的地,并且另外设置其污染标志。UNTAINT类似地操作,但不设置目的地的污染标志。
此外,可以定义附加的用户模式指令TAINTED。该指令生成布尔结果:如果所述操作数被污染,则为TRUE,否则,为FALSE。
被污染的值可以在直接寻址模式和间接寻址模式两者下进行跟踪。在间接寻址模式下,寄存器或存储器中的值可以用作存储器中的另一个值的地址。当在这种模式下使用被污染的值来读取存储器时,所读取的值被标记为被污染(即使源页表项未被污染)。当用于写入存储器时,目的地页表项被标记为被污染。
对于所有其他MMU操作,页表和TLB中的污染标志的操作可以在管理程序模式下执行。
通过使用所公开的污染跟踪机制,可以跟踪来自外部并且因此来自潜在不可信源的值,因为它们由程序操纵。任何按照不安全的方式使用被污染的值的尝试都会产生用于中断执行流的异常情况。可以通过适当地标记存储器页来定义安全和不安全的数据源和数据宿。例如,内核可以通过要求在未被污染的存储器页或寄存器中传递参数来确保仅仅未被污染的值被传递给系统调用。
图5例示了识别被污染的值的示例。这里,从I/O端口506读取指令504的操作数502。指令504基于操作数502生成输出508。由于来自I/O端口506的数据固有地不被信任,所以为输出508被存储到的寄存器或存储器页510设置512污染标志T,以指示所存储的值被污染。
图6例示了跟踪被污染的值的示例。这里,从寄存器或存储器页606读取指令604的操作数602。还读取608寄存器或存储器页606的污染标志T(假设被设置)。指令604基于操作数602生成输出610,并将输出610存储在另一个寄存器或存储器页612中。另外,为寄存器或存储器页612设置614污染标志T,以指示所存储的值被污染。
考虑到上述情况,现在将参照图7-9来描述根据本文的教导可以采用的若干操作示例。为了例示的目的,图7-9的操作(或本文讨论或教导的任何其他操作)可以被描述为由特定组件执行。然而,这些操作可以由其他类型的组件执行,并且可以在其他实现方式中使用不同数量的组件来执行。而且,应当明白,在给定的实现方式中,可以不采用本文描述的操作中的一个或多个操作。例如,一个实体可以执行所述操作的子集,并将这些操作的结果传递给另一个实体。
图7例示了可以被执行以跟踪数据是否被污染的若干操作700。
在块702处,指令的操作数(例如,唯一操作数或最后一个操作数)准备就绪。例如,所述操作数可以已被另一个指令输出。
在块704处,由于所述指令的操作数中的每个操作数都可用,因此调用所述指令。
在块706处,所述指令取回(或以其他方式获取)所述操作数。
在块708处,所述指令调用用于确定所述操作数是否被污染的另一指令(TAINTED指令)。
在块710处,所述TAINTED指令向所述调用指令返回操作数是否被污染的指示。
在块712处,执行所述指令操作(例如,ADD运算或某个其它指定的操作),并且生成输出。
在块714处,所述指令调用另一条指令(TAINT指令或UNTAINT指令),所述另一指令用于将所述输出复制到存储器(例如,到寄存器或存储器页中的单元),并将对应的污染标志设置为适当的值(例如,设置或不设置)。
在指令具有若干输入(操作数)的情形下,可以针对每个操作数执行与图7中描述的操作相似的操作。在这种情况下,当这些操作数中的最后一个操作数准备就绪(块702)时,调用所述指令(块704),于是所述指令取回这些操作数中的每一个(块706)。对于每个操作数,调用“TAINTED”指令来确定该操作数是否被污染(块708)。因此,对于每个操作数,接收所述操作数是否被污染的指示(块710)。然后执行所述指令操作并生成输出(块712)。该输出被复制到存储器,并且所述对应的污染标志被设置为适当的值(块714)。在这种情形下,如果所述操作数中的任何一个在块710处被指示为被污染,则所述输出被认为是被污染的。
图8例示了可以在接收到被污染的数据时由函数或其他操作执行的若干操作800。例如,操作800可以由处理与被污染的操作数相关联的系统调用的内核执行。
在块802处,接收数据。
在块804处,进行所述数据被指示为是被污染的确定。例如,可以设置存储所述数据的寄存器的污染标志。
在块806处,调用异常。例如,可以执行陷阱以防止执行与所述被污染的数据相关联的任何指令。
图9例示了可以由函数或其他操作来执行以去除数据的污染指示的若干操作900。例如,可以通过能够确定数据是否实际被污染的过程来执行操作900。
在块902处,接收数据。
在块904处,进行所述数据被指示为是被污染的确定。例如,可以设置存储所述数据的寄存器的污染标志。
在块906处,处理所述数据以确定所述数据是否实际被污染。
在块908处,如果所述数据没有被污染,则清除所述数据的污染标志。
示例性电子设备
图10是被配置为支持根据本公开内容的一个或多个方面的数据跟踪操作的装置1000的例示。装置1000包括通信接口1002、存储介质1004、用户接口1006、存储器设备1008和处理电路1010。
这些组件可以经由信令总线或其他合适的组件(通常由图10中的连接线表示)彼此耦合和/或被置为彼此电通信。取决于处理电路1010的具体应用和整体设计约束,所述信令总线可以包括任何数量的互连总线和桥接器。所述信令总线将各种电路链接在一起,使得通信接口1002、存储介质1004、用户接口1006和存储器设备1008中的每一个耦合到处理电路1010和/或与处理电路1010电通信。所述信令总线还可以链接比如定时源、外围设备、电压调节器和电源管理电路的各种其它电路(未示出),这些电路在本领域中是公知的,并且因此将不再进一步描述。
通信接口1002可以适于促进装置1000的无线通信或非无线通信。例如,通信接口1002可以包括适于促进相对于网络中的一个或多个通信设备的双向信息传送的电路和/或程序设计。通信接口1002可以耦合到一个或多个可选天线1012,以用于无线通信系统内的无线通信。通信接口1002可以配置有一个或多个独立的接收机和/或发射机,以及一个或多个收发机。在所示示例中,通信接口1002包括发射机1014和接收机1016。
存储器设备1008可以表示一个或多个存储器设备。如图所示,存储设备1008可以保持污染信息1018以及由装置1000使用的其他信息。在一些实现方式中,存储器设备1008和存储介质1004被实现为公共存储器组件。存储器设备1008还可以用于存储由处理电路1010或装置1000的某个其他组件操纵的数据。
存储介质1004可以表示用于存储程序设计(比如处理器可执行代码或指令(例如,软件、固件)、电子数据、数据库,或其他数字信息)的一个或多个计算机可读、机器可读和/或处理器可读设备。存储介质1004还可以用于存储当执行程序设计时由处理电路1010操纵的数据。存储介质1004可以是可由通用或专用处理器访问的任何可用介质,包括便携式或固定存储设备、光学存储设备以及能够存储、包含或携带程序设计的各种其他介质。
作为示例而非限制,存储介质1004可以包括磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,压缩盘(CD)或数字通用盘(DVD))、智能卡、快闪存储器设备(例如,卡、棒或键驱动器)、随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、寄存器、可移动盘以及用于存储可以由计算机访问和读取的软件和/或指令的任何其他适合的介质。存储介质1004可以体现在制造品(例如,计算机程序产品)中。作为示例,计算机程序产品可以包括包装材料中的计算机可读介质。鉴于上述,在一些实现方式中,存储介质1004可以是非暂时性的(例如,有形的)存储介质。
存储介质1004可以耦合到处理电路1010,使得处理电路1010可以从存储介质1004读取信息和向存储介质1004写入信息。即,存储介质1004可以耦合到处理电路1010,使得存储介质1004至少可由处理电路1010访问,包括其中至少一个存储介质集成到处理电路1010的示例和/或其中至少一个存储介质与处理电路1010分离的示例(例如,驻留在装置1000中、在装置1000外部、分布在多个实体上等)。
由存储介质1004存储的程序设计在由处理电路1010执行时,使得处理电路1010执行本文所述的各种功能和/或过程操作中的一个或多个。例如,存储介质1004可以包括被配置为用于调整处理电路1010的一个或多个硬件块处的操作的操作,以及被配置为使用通信接口1002进行使用它们各自的通信协议的无线通信的操作。
处理电路1010通常适于处理,包括对存储在存储介质1004上的这种程序设计的执行。如本文所使用的,术语“程序设计”应被广义地解释为包括但不限于指令、指令集、数据、代码、代码段、程序代码、程序、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、可执行程序、执行线程、过程、函数等,无论是被称为软件、固件、中间件、微代码、硬件描述语言还是其他。
处理电路1010被布置为获得、处理和/或发送数据,控制数据访问和存储,发出命令以及控制其它期望的操作。在至少一个示例中,处理电路1010可以包括被配置为实现由适当介质提供的期望程序设计的电路。例如,处理电路1010可以被实现为被配置为执行可执行程序设计的一个或多个处理器、一个或多个控制器和/或其他结构。处理电路1010的示例可以包括被设计为执行本文所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑组件、分立门或晶体管逻辑、分立硬件组件或其任何组合。通用处理器可以包括微处理器以及任何常规的处理器、控制器、微控制器或状态机。处理电路1010还可以被实现为计算组件的组合,比如DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP内核、ASIC和微处理器,或任何其他数量的不同配置。处理电路1010的这些示例用于例示,并且也可以考虑在本公开内容的范围内的其他合适的配置。
根据本公开内容的一个或多个方面,处理电路1010可以适于执行本文所述的装置中的任何或全部装置的特征、过程、功能、操作和/或例程中的任何或全部。如本文所使用的,关于处理电路1010的术语“适于”可以指处理电路1010是被配置、使用、实现和/或编程以执行根据本文所述的各种特征的特定过程、功能、操作和/或例程中的一个或多个。
根据装置1000的至少一个示例,处理电路1010可以包括用于接收数据的模块1020、用于确定数据是否被污染的模块1022、用于存储的模块1024、用于调用指令的模块1026、用于调用异常的模块1028以及用于执行操作的模块1030中的一个或多个。
用于接收数据的模块1020可以包括适于执行与例如从物理存储单元接收数据有关的若干功能的电路和/或程序设计(例如,用于接收存储在存储介质1004上的数据的代码1032)。在一些实现方式中,用于接收数据的模块1020识别存储器设备1008中的值的存储单元,并且调用对该单元的读取。用于接收数据的模块1020通过例如直接从装置的组件(例如,接收机1016、存储器设备1008或某个其他组件)获得该数据而获得所接收的数据。在一些实现方式中,用于接收数据的模块1020处理所接收的信息。然后,用于接收数据的模块1020输出所接收的信息(例如,将所述信息存储在存储器设备1008中或将所述信息发送到装置1000的另一组件)。
用于确定数据是否被污染的模块1022可以包括适于执行与例如读取与存储在物理数据存储器中的值相关联的污染标志(或某个其他指示符)有关的若干功能的电路和/或程序设计(例如,用于确定存储在存储介质1004上的数据是否被污染的代码1034)。在获得所述标志或指示符后,用于确定数据是否被污染的模块1022将对应的指示发送给设备1000的另一组件。
用于存储的模块1024可以包括适于执行与例如将数据和/或污染指示存储在物理存储单元中有关的若干功能的电路和/或程序设计(例如,存储在存储介质1004上的用于存储的代码1036)。在获得(例如,由指令生成的)所述数据或指示后,用于存储的模块1024将所述信息传递到装置1000的另一组件(例如,将所述指示存储在存储器设备1008中)。
用于调用指令的模块1026可以包括适于执行与例如调用用于确定数据是否被污染的指令(例如,调用TAINTED指令)或调用用于存储数据和指示的指令(例如,调用TAINT指令或UNTAINT指令)有关的若干功能的电路和/或程序设计(例如,用于调用存储在存储介质1004上的指令的代码1038)。用于调用指令的模块1026确定哪个指令要被调用以及所述指令的任何对应操作数。然后,用于调用指令的模块1026使得执行所述指令(例如,内核可以调用系统调用)。
用于调用异常的模块1028可以包括适于执行与例如调用用于停止与被污染的值相关联的执行的异常有关的若干功能的电路和/或程序设计(例如,用于调用存储在存储介质1004上的异常的代码1040)。用于调用异常的模块1028确定所接收的值被污染。用于调用异常的模块1028然后确定指令是否要被调用以导致异常,以及所述指令的任何对应操作数(如果适用)。用于调用异常的模块1028随后使得所述异常被调用(例如,通过设置陷阱或生成中断信号)。
用于执行操作的模块1030可以包括适于执行与例如执行用于确定数据是否被污染的操作有关的若干功能的电路和/或程序设计(例如,用于执行存储在存储介质1004上的操作的代码1042)。在一些实现方式中,用于执行操作的模块1030识别所述数据的源并确定所述源是否是可信的。用于执行操作的模块1030然后生成所述数据是否被污染的指示并输出所述指示(例如,将所述值存储在存储器设备1008中或将所述指示发送到装置1000的另一组件)。
如上所述,存储介质1004所存储的程序设计在由处理电路1010执行时,使得处理电路1010执行本文所述的各种功能和/或过程操作中的一个或多个。例如,存储介质1004可以包括用于接收数据的代码1032、用于确定数据是否被污染的代码1034、用于存储的代码1036、用于调用指令的代码1038、用于调用异常的代码1040以及用于执行操作的代码1042中的一个或多个。
示例性过程
图11例示了根据本公开内容的一些方面的用于数据跟踪的过程1100。过程1100可以发生在处理电路(例如,图10的处理电路1010)内,所述处理电路可以位于电子设备或某个其它合适的装置中。当然,在本公开内容的范围内的各个方面,过程1100可以由能够支持数据跟踪操作的任何合适的装置来实现。在一些方面,所述方法是在数据流计算机体系结构(例如,EDGE体系结构)中实现的。
在块1102处,从第一存储单元接收第一数据。在一些方面,第一物理存储单元是物理寄存器、物理存储器的页或物理输入/输出(I/O)端口。
在块1104处,进行关于所述第一数据是否被污染的确定。该确定可以是基于所存储的针对所述第一物理存储单元的第一指示(例如,污染标志)。
在块1106处,将基于所述第一数据的第二数据存储在第二物理存储单元中。在一些方面,所述第二数据具有与所述第一数据相同的值。在一些方面,所述第二数据是根据所述第一数据生成的。
在块1108处,存储针对所述第二物理存储单元的第二指示。所述第二指示指示所述第二数据是否被污染。
在一些方面,所述方法由计算机指令执行。在这种情况下,所述第一数据可以是所述计算机指令的操作数,以及所述第二数据可以是所述计算机指令的输出。此外,在一些方面,过程1100还包括从第三物理存储单元接收所述计算机指令的第二操作数;确定所述第二操作数是否被污染,其中,所述第二操作数是否被污染的确定是基于所存储的针对所述第三物理存储单元的第三指示的;以及如果所述第一操作数和所述第二操作数中的至少一个被污染,则确定所述第二数据被污染。
图12例示了根据本公开内容的一些方面的用于数据跟踪的过程1200。过程1200可以发生在处理电路(例如,图10的处理电路1010)内,所述处理电路可以位于电子设备或某个其它合适的装置中。当然,在本公开内容的范围内的各个方面,过程1200可以由能够支持数据跟踪操作的任何合适的装置来实现。
在块1202处,第一指令从存储单元接收第一数据。在一些方面,块1202的操作可以对应于图11的块1102的操作。
在块1204处,调用用于确定所述第一数据是否被污染的第二指令。例如,可以调用TAINTED指令。在一些方面,块1204的操作可以对应于图11的块1104的操作。
在块1206处,对所述第一指令的执行导致生成第二数据。例如,所述第一指令可以生成另一指令的操作数。
在块1208处,调用用于存储所述第二数据以及所述第二数据是否被污染的指示的第三指令。例如,可以调用TAINT指令或UNTAINT指令。在一些方面,块1208的操作可以对应于图11的块1106和1108的操作。
图13例示了根据本公开内容的一些方面的用于数据跟踪的过程1300。过程1300可以发生在处理电路(例如,图10的处理电路1010)内,所述处理电路可以位于电子设备或某个其它合适的装置中。当然,在本公开内容的范围内的各个方面,过程1300可以由能够支持数据跟踪操作的任何合适的装置来实现。
在块1302处,从存储单元接收第二数据。在一些方面,块1302的操作可以对应于图11的块1102的操作。
在块1304处,进行关于所述第二数据是否被污染的确定。例如,可以调用TAINTED指令。在一些方面,块1304的操作可以对应于图11的块1104的操作。
在块1306处,根据所述确定所述第二数据被污染,调用异常。例如,可以执行陷阱。
图14例示了根据本公开内容的一些方面的用于数据跟踪的过程1400。过程1400可以发生在处理电路(例如,图10的处理电路1010)内,所述处理电路可以位于电子设备或某个其它合适的装置中。当然,在本公开内容的范围内的各个方面,过程1400可以由能够支持数据跟踪操作的任何合适的装置来实现。
在块1402处,从存储单元接收第二数据。在一些方面,块1402的操作可以对应于图11的块1102的操作。
在块1404处,执行用于确定所述第二数据是否被污染的操作。例如,可以在这里执行与上面描述的操作类似的污染验证操作。
在块1406处,如果块1404的操作确定所述第二数据没有被污染,则调用用于清除所述第二数据的污染指示(例如,标志)的指令。
结论
附图中例示的组件、步骤、特征和/或功能中的一个或多个可以被重新布置和/或组合成单个组件、步骤、特征或功能,或者体现在若干组件、步骤或功能中。在不脱离本文公开的创新特征的情况下,还可以添加额外的元素、组件、步骤和/或功能。附图中例示的装置、设备和/或组件可以被配置为执行本文所述的方法、特征或步骤中的一个或多个。本文描述的创新算法也可以在软件中有效地实现和/或嵌入在硬件中。
应当理解,所公开的方法中的步骤的特定顺序或层次是示例性过程的例示。可以理解,可以基于设计偏好,对所述方法中的步骤的特定顺序或层次进行重新排列。所附的方法权利要求以样本顺序呈现各个步骤的元素,但并不意味着限于所呈现的特定顺序或层次,除非在此明确地记载。在不脱离本公开内容的情况下,还可以添加或不使用额外的元件、组件、步骤和/或功能。
尽管已经相对于某些实现方式和附图讨论了本公开内容的特征,但是本公开内容的所有实现方式可以包括本文所讨论的有利特征中的一个或多个有利特征。换句话说,尽管一个或多个实现方式可以被论述为具有某些有利特征,但是也可以根据本文所讨论的各种实现方式中的任何一个来使用这些特征中的一个或多个。按照类似的方式,尽管示例性实现方式在本文中已经被作为设备、系统或方法实现方式论述,但是应当理解,这样的实现方式可以在各种设备、系统和方法中实现。
另外,要注意的是,至少一些实现方式已经被描述为过程,所述过程被描绘为流程图、流程图表、结构图或方框图。虽然流程图可以将操作描述为顺序过程,但是所述操作中的许多操作可以并行或同时执行。此外,可以重新安排所述操作的顺序。当过程的操作完成时,终止所述过程。在一些方面,过程可以对应于方法、函数、过程、子例程、子程序等。当过程对应于函数时,其终止对应于所述函数返回到调用函数或主函数。本文描述的各种方法中的一种或多种可以通过程序设计(例如,指令和/或数据)来部分地或完全地实现,所述程序设计可以存储在机器可读、计算机可读和/或处理器可读储存介质中并且由一个或多个处理器、机器和/或设备执行。
本领域技术人员将进一步明白,结合本文公开的实现方式描述的各种例示性逻辑块、模块、电路和算法步骤可以被实现为硬件、软件、固件、中间件、微代码或其任何组合。为了清楚地例示这种可互换性,上面已经在其功能方面一般性地描述了各种例示性组件、块、模块、电路和步骤。这种功能是被实现为硬件还是软件,取决于特定应用和施加在整个系统上的设计约束。
在本公开内容中,词语“示例性”用于表示“用作示例、实例或例示”。本文中被描述为“示例性”的任何实现方式或方面不必被解释为优选于或优于本公开内容的其他方面。同样,术语“方面”不要求本公开内容的所有方面包括所讨论的特征、优点或操作模式。术语“耦合”在本文中用于指代两个物体之间的直接或间接耦合。例如,如果物体A物理地接触物体B,并且物体B接触物体C,则物体A和C仍然可以被认为彼此耦合-即使它们彼此不直接物理地接触。例如,即使第一裸片从未直接物理地接触第二裸片,第一裸片也可以在封装中与第二裸片耦合。术语“电路”和“电路系统”被广泛地使用,并且旨在包括电气设备和导体的硬件实现方式以及信息和指令的软件实现方式,当电气设备和导体的硬件实现方式被连接和配置时,电气设备和导体的硬件实现方式能够执行本公开内容中描述的功能,而不限于电子电路的类型,当信息和指令的软件实现方式由处理器执行时,信息和指令的软件实现方式能够执行本公开内容中描述的功能。
如本文所使用的,术语“确定”包括各种各样的动作。例如,“确定”可以包括计算、运算、处理、导出、调查、查找(例如在表、数据库或其他数据结构中查找)、查明等。此外,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)等。此外,“确定”可以包括解析、选择、选取、建立等。
前述描述被提供来使得本领域任何技术人员能够实践本文所述的各个方面。对于这些方面的各种修改对于本领域技术人员将是显而易见的,并且可以将本文定义的一般性原理应用于其他方面。因此,权利要求不旨在限于本文所示的方面,而是被赋予与文字权利要求一致的全部范围,其中,对单数形式的元素的引用并不意味着“一个且仅有一个”,除非具体如此表述,而是“一个或多个”。除非另有特别说明,术语“一些”是指一个或多个。提及项目列表中的“至少一个”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一个”旨在涵盖:a;b;c;a和b;a和c;b和c;以及a,b和c。本领域普通技术人员已知或以后获知的在整个本公开内容中描述的各个方面的元素的所有结构和功能等同物通过引用明确地并入本文,并且旨在被权利要求所涵盖。此外,无论本文中公开的任何内容是否在权利要求中被明确地记载,这些公开内容都不旨在贡献给公众。不应根据35U.S.C.§112第六段的规定来解释任何权利要求元素,除非使用短语“用于……的单元”明确地记载所述元素或者在方法权利要求的情况下使用短语“用于……的步骤”明确地表述所述元素。
因此,在不脱离本公开内容的范围的情况下,可以在不同的示例和实现方式中实现与本文所述和附图中所示的示例相关联的各种特征。因此,虽然已经在附图中描述和示出了某些具体的结构和布置,但是这些实现方式仅仅是例示性的,而不是限制本公开内容的范围,因为对所述实现方式的各种其它添加和修改以及从所述实施方式中进行删除对于本领域普通技术人员将是显而易见的。因此,本公开内容的范围仅由所附权利要求的文字语言和法定等同物来确定。
Claims (30)
1.一种用于数据管理的方法,包括:
从第一物理存储单元接收第一数据;
确定所述第一数据是否被污染,其中,所述确定是基于所存储的针对所述第一物理存储单元的第一指示的;
将基于所述第一数据的第二数据存储在第二物理存储单元中;以及
存储针对所述第二物理存储单元的第二指示,其中,所述第二指示指示所述第二数据是否被污染。
2.根据权利要求1所述的方法,其中,所述方法是在数据流计算机体系结构中实现的。
3.根据权利要求2所述的方法,其中,所述数据流计算机体系结构是显式数据图执行(EDGE)体系结构。
4.根据权利要求1所述的方法,其中,所述第二数据具有与所述第一数据相同的值,或者所述第二数据是根据所述第一数据生成的。
5.根据权利要求1所述的方法,其中,所述第一物理存储单元和所述第二物理存储单元包括物理寄存器、物理存储器的页或物理输入/输出(I/O)端口中的至少一个。
6.根据权利要求1所述的方法,还包括:调用用于确定所述第一数据是否被污染的指令。
7.根据权利要求1所述的方法,还包括:调用用于存储所述第二数据和所述第二指示的指令。
8.根据权利要求1所述的方法,其中:
所述方法是由计算机指令执行的;
所述第一数据包括所述计算机指令的第一操作数;以及
所述第二数据包括所述计算机指令的输出。
9.根据权利要求8所述的方法,还包括:
从第三物理存储单元接收所述计算机指令的第二操作数;
确定所述第二操作数是否被污染,其中,所述第二操作数是否被污染的所述确定是基于所存储的针对所述第三物理存储单元的第三指示的;以及
如果所述第一操作数和所述第二操作数中的至少一个被污染,则确定所述第二数据被污染。
10.根据权利要求1所述的方法,还包括:
接收所述第二数据;
确定所述第二数据被污染;以及
根据所述确定所述第二数据被污染而调用异常。
11.根据权利要求1所述的方法,还包括:
接收所述第二数据;
执行用于确定所述第二数据是否被污染的操作;以及
如果所述操作确定所述第二数据没有被污染,则调用用于清除所述第二数据的污染指示的指令。
12.一种用于数据管理的装置,包括:
至少一个存储器电路;以及
处理电路,所述处理电路耦合到所述至少一个存储器电路,并且被配置为:
从所述至少一个存储器电路的第一物理存储单元接收第一数据;
确定所述第一数据是否被污染,其中,所述确定是基于所存储的针对所述第一物理存储单元的第一指示的;
将基于所述第一数据的第二数据存储在所述至少一个存储器电路的第二物理存储单元中;以及
存储针对所述第二物理存储单元的第二指示,其中,所述第二指示指示所述第二数据是否被污染。
13.根据权利要求12所述的装置,其中,所述装置是在数据流计算机体系结构中实现的。
14.根据权利要求13所述的装置,其中,所述数据流计算机体系结构是显式数据图执行(EDGE)体系结构。
15.根据权利要求12所述的装置,其中,所述第二数据具有与所述第一数据相同的值,或者所述第二数据是根据所述第一数据生成的。
16.根据权利要求12所述的装置,其中,所述第一物理存储单元和所述第二物理存储单元包括物理寄存器、物理存储器的页或物理输入/输出(I/O)端口中的至少一个。
17.根据权利要求12所述的装置,其中,所述处理电路还被配置为调用用于确定所述第一数据是否被污染的指令。
18.根据权利要求12所述的装置,其中,所述处理电路还被配置为调用用于存储所述第二数据和所述第二指示的指令。
19.根据权利要求12所述的装置,其中:
所述处理电路还被配置为执行计算机指令;
所述第一数据包括所述计算机指令的第一操作数;以及
所述第二数据包括所述计算机指令的输出。
20.根据权利要求12所述的装置,其中,所述处理电路还被配置为:
接收所述第二数据;
确定所述第二数据被污染;以及
根据所述确定所述第二数据被污染而调用异常。
21.根据权利要求12所述的装置,所述处理电路还被配置为:
接收所述第二数据;
执行用于确定所述第二数据是否被污染的操作;以及
如果所述操作确定所述第二数据没有被污染,则调用用于清除所述第二数据的污染指示的指令。
22.一种用于数据管理的装置,包括:
用于从第一物理存储单元接收第一数据的单元;
用于确定所述第一数据是否被污染的单元,其中,所述确定是基于所存储的针对所述第一物理存储单元的第一指示的;
用于将基于所述第一数据的第二数据存储在第二物理存储单元中的单元;以及
用于存储针对所述第二物理存储单元的第二指示的单元,其中,所述第二指示指示所述第二数据是否被污染。
23.根据权利要求22所述的装置,其中,所述装置是在显式数据图执行(EDGE)体系结构中实现的。
24.根据权利要求22所述的装置,其中,所述第一物理存储单元和所述第二物理存储单元包括物理寄存器、物理存储器的页或物理输入/输出(I/O)端口中的至少一个。
25.根据权利要求22所述的装置,还包括:用于调用用于确定所述第一数据是否被污染的指令的单元。
26.根据权利要求22所述的装置,还包括:用于调用用于存储所述第二数据和所述第二指示的指令的单元。
27.一种存储计算机可执行代码的非暂时性计算机可读介质,包括用于以下操作的代码:
从第一物理存储单元接收第一数据;
确定所述第一数据是否被污染,其中,所述确定是基于所存储的针对所述第一物理存储单元的第一指示的;
将基于所述第一数据的第二数据存储在第二物理存储单元中;以及
存储针对所述第二物理存储单元的第二指示,其中,所述第二指示指示所述第二数据是否被污染。
28.根据权利要求27所述的计算机可读介质,其中,所述代码用于显式数据图执行(EDGE)体系结构。
29.根据权利要求27所述的计算机可读介质,其中,所述第一物理存储单元和所述第二物理存储单元包括物理寄存器、物理存储器的页或物理输入/输出(I/O)端口中的至少一个。
30.根据权利要求27所述的计算机可读介质,还包括:用于调用用于确定所述第一数据是否被污染的指令的代码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/615,321 US20160232346A1 (en) | 2015-02-05 | 2015-02-05 | Mechanism for tracking tainted data |
US14/615,321 | 2015-02-05 | ||
PCT/US2016/012874 WO2016126382A1 (en) | 2015-02-05 | 2016-01-11 | Mechanism for tracking tainted data |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107209827A true CN107209827A (zh) | 2017-09-26 |
Family
ID=55273539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680008625.XA Pending CN107209827A (zh) | 2015-02-05 | 2016-01-11 | 用于跟踪被污染的数据的机制 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20160232346A1 (zh) |
EP (1) | EP3254221A1 (zh) |
JP (1) | JP2018508883A (zh) |
CN (1) | CN107209827A (zh) |
WO (1) | WO2016126382A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112307474A (zh) * | 2019-07-29 | 2021-02-02 | Sap欧洲公司 | 附加到字符串的污染信息的管理 |
JP2021082256A (ja) * | 2019-11-20 | 2021-05-27 | ▲広▼州大学 | 動的ステイン分析に基づくメモリ分析方法及び装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11138319B2 (en) * | 2017-10-25 | 2021-10-05 | International Business Machines Corporation | Light-weight context tracking and repair for preventing integrity and confidentiality violations |
US10956157B1 (en) * | 2018-03-06 | 2021-03-23 | Advanced Micro Devices, Inc. | Taint protection during speculative execution |
US10846080B2 (en) | 2018-09-06 | 2020-11-24 | International Business Machines Corporation | Cooperative updating of software |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7870610B1 (en) * | 2007-03-16 | 2011-01-11 | The Board Of Directors Of The Leland Stanford Junior University | Detection of malicious programs |
US20110060889A1 (en) * | 2009-09-09 | 2011-03-10 | Board Of Regents, University Of Texas System | Method, system and computer-accessible medium for providing a distributed predicate prediction |
US7958558B1 (en) * | 2006-05-18 | 2011-06-07 | Vmware, Inc. | Computational system including mechanisms for tracking propagation of information with aging |
US20110145918A1 (en) * | 2009-12-15 | 2011-06-16 | Jaeyeon Jung | Sensitive data tracking using dynamic taint analysis |
US8381192B1 (en) * | 2007-08-03 | 2013-02-19 | Google Inc. | Software testing using taint analysis and execution path alteration |
US20140047538A1 (en) * | 2012-08-08 | 2014-02-13 | Coverity, Inc. | Static tainting anasystem and method for taint analysis of computer program codelysis |
CN103809966A (zh) * | 2012-11-08 | 2014-05-21 | 国际商业机器公司 | 数据流分析方法和装置 |
-
2015
- 2015-02-05 US US14/615,321 patent/US20160232346A1/en not_active Abandoned
-
2016
- 2016-01-11 WO PCT/US2016/012874 patent/WO2016126382A1/en active Application Filing
- 2016-01-11 JP JP2017541027A patent/JP2018508883A/ja active Pending
- 2016-01-11 CN CN201680008625.XA patent/CN107209827A/zh active Pending
- 2016-01-11 EP EP16702461.1A patent/EP3254221A1/en not_active Withdrawn
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958558B1 (en) * | 2006-05-18 | 2011-06-07 | Vmware, Inc. | Computational system including mechanisms for tracking propagation of information with aging |
US7870610B1 (en) * | 2007-03-16 | 2011-01-11 | The Board Of Directors Of The Leland Stanford Junior University | Detection of malicious programs |
US8381192B1 (en) * | 2007-08-03 | 2013-02-19 | Google Inc. | Software testing using taint analysis and execution path alteration |
US20110060889A1 (en) * | 2009-09-09 | 2011-03-10 | Board Of Regents, University Of Texas System | Method, system and computer-accessible medium for providing a distributed predicate prediction |
US20110145918A1 (en) * | 2009-12-15 | 2011-06-16 | Jaeyeon Jung | Sensitive data tracking using dynamic taint analysis |
US20140047538A1 (en) * | 2012-08-08 | 2014-02-13 | Coverity, Inc. | Static tainting anasystem and method for taint analysis of computer program codelysis |
CN103809966A (zh) * | 2012-11-08 | 2014-05-21 | 国际商业机器公司 | 数据流分析方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112307474A (zh) * | 2019-07-29 | 2021-02-02 | Sap欧洲公司 | 附加到字符串的污染信息的管理 |
CN112307474B (zh) * | 2019-07-29 | 2024-02-09 | Sap欧洲公司 | 附加到字符串的污染信息的管理 |
JP2021082256A (ja) * | 2019-11-20 | 2021-05-27 | ▲広▼州大学 | 動的ステイン分析に基づくメモリ分析方法及び装置 |
Also Published As
Publication number | Publication date |
---|---|
US20160232346A1 (en) | 2016-08-11 |
JP2018508883A (ja) | 2018-03-29 |
WO2016126382A1 (en) | 2016-08-11 |
EP3254221A1 (en) | 2017-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3757853B1 (en) | Cryptographic computing using encrypted base addresses and used in multi-tenant environments | |
US11416624B2 (en) | Cryptographic computing using encrypted base addresses and used in multi-tenant environments | |
CN107209827A (zh) | 用于跟踪被污染的数据的机制 | |
US11562063B2 (en) | Encoded inline capabilities | |
US20200302090A1 (en) | Selectively Disabling Configurable Communication Paths of a Multiprocessor Fabric | |
US11669625B2 (en) | Data type based cryptographic computing | |
CN107346401B (zh) | 用于安全地执行程序的信息保障系统 | |
US20220382885A1 (en) | Cryptographic computing using encrypted base addresses and used in multi-tenant environments | |
US20190050604A1 (en) | On-device bitstream validation | |
US11580035B2 (en) | Fine-grained stack protection using cryptographic computing | |
TW201730751A (zh) | 切換影堆疊指標的硬體設備以及方法 | |
US10296765B2 (en) | Multi-level security enforcement | |
US20210342486A1 (en) | Encrypted data processing | |
US10013517B1 (en) | High level programming language core protection for high level synthesis | |
CN107193484A (zh) | 用于数据存储服务的方法和装置 | |
EP4020299A1 (en) | Memory address bus protection for increased resilience against hardware replay attacks and memory access pattern leakage | |
EP4020877A1 (en) | Isa accessible physical unclonable function | |
KR102430335B1 (ko) | 가상화 코드의 난독화를 강화하는 방법 및 그 장치 | |
CN116134421A (zh) | 向多瓦片处理系统流式传输数据 | |
Backes et al. | Computational soundness for Dalvik bytecode | |
US12008374B2 (en) | Cryptographic enforcement of borrow checking | |
Maggi | Automated side channel vulnerability detection and countermeasure application via compiler based techniques | |
Thomborson | Benchmarking Obfuscators of Functionality |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170926 |