CN116028945A - 防止执行注入的恶意代码的保护 - Google Patents
防止执行注入的恶意代码的保护 Download PDFInfo
- Publication number
- CN116028945A CN116028945A CN202211120853.XA CN202211120853A CN116028945A CN 116028945 A CN116028945 A CN 116028945A CN 202211120853 A CN202211120853 A CN 202211120853A CN 116028945 A CN116028945 A CN 116028945A
- Authority
- CN
- China
- Prior art keywords
- computer
- memory
- executable instructions
- code
- computer program
- 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
Images
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
- G06F21/54—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 by adding security routines or objects to programs
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/32—User authentication using biometric data, e.g. fingerprints, iris scans or voiceprints
-
- 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
- G06F21/602—Providing cryptographic facilities or services
-
- 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
-
- 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/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- 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/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2125—Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00086—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
- G11B20/0021—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving encryption or decryption of contents recorded on or reproduced from a record carrier
- G11B20/00485—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving encryption or decryption of contents recorded on or reproduced from a record carrier characterised by a specific kind of data which is encrypted and recorded on and/or reproduced from the record carrier
- G11B20/00492—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving encryption or decryption of contents recorded on or reproduced from a record carrier characterised by a specific kind of data which is encrypted and recorded on and/or reproduced from the record carrier wherein content or user data is encrypted
- G11B20/005—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving encryption or decryption of contents recorded on or reproduced from a record carrier characterised by a specific kind of data which is encrypted and recorded on and/or reproduced from the record carrier wherein content or user data is encrypted wherein only some specific parts of the content are encrypted, e.g. encryption limited to I-frames
Abstract
本公开涉及防止执行注入的恶意代码的保护。一种计算机实现的方法,包括由处理单元接收由计算机可执行指令使用的操作数的输入值。所述方法进一步包括通过所述处理单元通过加密所述输入值来产生加密值,以及将所述加密值存储在存储器中。响应于执行计算机可执行指令的请求,处理单元将计算机可执行指令解码成机器可执行代码并解密经加密值以供机器可执行代码使用。在执行机器可执行代码时,处理单元通过对执行的结果进行加密来生成加密结果,将加密结果存储在存储器中。
Description
背景技术
本发明总体上涉及计算机技术,特别是计算机安全,以及通过程序数据的加密防止执行注入的恶意代码的技术。
如今,计算装置(诸如台式计算机、膝上型计算机、平板计算机、电话等)已变得普遍存在。这样的计算装置被用于几乎所有事物,诸如通信、文字处理、银行业务、电子商务、电子学习、浏览、娱乐、记录保存、保健、以及若干其他领域和应用。照此,计算装置能够访问用户期望保护和安全的敏感和私有数据。虽然各种计算机安全措施是可用的,但是期望改进计算机安全。
发明内容
根据本发明的一个或多个实施例,一种计算机实现的方法包括:通过处理单元接收由计算机可执行指令使用的操作数的输入值。所述方法进一步包含通过由所述处理单元加密所述输入值而产生加密值且将所述加密值存储在存储器中。响应于来自所述处理单元的请求,执行所述计算机可执行指令,将所述计算机可执行指令解码成机器可执行代码,并解密所述加密值以供所述机器可执行代码使用。在执行机器可执行代码时,处理单元通过对执行的结果进行加密来生成加密结果并且将加密结果存储在存储器中。
根据本发明的一个或多个实施例,一种系统包括存储器和与存储器耦合的一个或多个处理单元,一个或多个处理单元被配置为执行用于保护免于执行注入的恶意代码的方法。所述方法包括接收由计算机可执行指令使用的操作数的输入值。所述方法进一步包括通过加密所述输入值来产生加密值,以及将所述加密值存储在存储器中。响应于执行计算机可执行指令的请求,计算机可执行指令被解码成机器可执行代码,并且加密值被解密以供机器可执行代码使用。在执行机器可执行代码时,通过对执行的结果进行加密来生成加密结果,并且将加密结果存储在存储器中。
根据本发明的一个或多个实施例,一种计算机程序产品包括计算机可读存储器,所述计算机可读存储器具有存储在其上的计算机可执行指令,所述计算机可执行指令在被处理器执行时使得所述处理器执行一种用于防止执行所注入的恶意代码的方法。所述方法包括接收由计算机可执行指令使用的操作数的输入值。所述方法进一步包括通过加密所述输入值来产生加密值,以及将所述加密值存储在存储器中。响应于执行计算机可执行指令的请求,计算机可执行指令被解码成机器可执行代码,并且加密值被解密以供机器可执行代码使用。在执行机器可执行代码时,通过对执行的结果进行加密来生成加密结果,并且将加密结果存储在存储器中。
还可至少由系统、计算机程序产品和机器、以及其他类型的实现来提供上述特征。
通过本发明的技术实现了附加技术特征和优点。在本文中详细描述了本发明的实施例和方面,并且这些实施例和方面被认为是所要求保护的主题的一部分。为了更好的理解,参考详细说明和附图。
附图说明
在说明书结尾处的权利要求中特别指出并明确要求保护本文所述的独占权利的细节。从以下结合附图进行的详细描述中,本发明的实施例的前述和其他特征和优点将变得显而易见,在附图中:
图1描绘了根据本发明的一个或多个实施例的对计算机的示例恶意代码攻击;
图2描绘了根据本发明的一个或多个实施例的系统;
图3描绘了根据本发明的一个或多个实施例的程序数据和代码的实例;
图4描绘了根据本发明的一个或多个实施例的防止执行注入的恶意代码的方法的流程图;
图5描绘了根据本发明的一个或多个实施例的防止恶意代码攻击的示例场景;
图6描绘了根据本发明的一个或多个实施例的防止恶意代码攻击的示例场景;
图7描绘了根据本发明的一个或多个实施方式的防止恶意代码攻击的另一个示例场景;以及
图8描绘了根据本发明的一个或多个实施例的计算系统。
此处所描绘的图是说明性的。在不偏离本发明的精神的情况下,可以对这里所描述的图或操作有许多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。而且,术语“耦接”及其变形描述了在两个元件之间具有通信路径并且并不暗示元件之间的直接连接,在它们之间没有介入元件/连接。所有这些变型被认为是说明书的一部分。
在附图和以下公开的实施方式的详细说明中,附图中示出的各种元件设置有两位或三位参考标号。除了次要例外,每个参考标号的最左边的数字对应于首先示出了其元件的附图。
具体实施方式
本文描述了通过程序数据的加密防止执行注入的恶意代码来提高计算机的安全性的技术方案。本发明的实施例解决了提供计算机安全的技术挑战。本发明的各实施例便于阻止在运行时已经被修改的潜在地恶意的计算机程序的执行。本发明的实施例基于计算技术。本发明实施例通过对程序数据进行加密,防止执行注入的恶意代码,为恶意代码攻击的技术挑战提供了实际应用。
恶意代码是被设计成创建或利用计算装置中的弱点的有害计算机编程脚本。威胁行为者准备恶意代码以引起对计算装置的不希望的改变、损坏或正在进行的访问。恶意代码可能导致后门、安全漏洞、信息和数据窃取、以及对文件和计算装置的其他潜在损坏。在一些实例中,恶意代码还可用于对用户造成财务危害。本发明的实施例解决了这样的技术挑战并便于保护免于在计算装置上成功执行的恶意代码,并且进而防止损坏。本文中,计算装置也被称为计算机。计算机可以是具有一个或多个处理单元的任何类型的电子装置,例如,台式计算机、膝上型计算机、平板计算机、电话、可穿戴式、智能锁、车辆信息娱乐系统或任何其他类型的电子装置。
图1描绘了根据本发明的一个或多个实施例的计算机上的恶意代码攻击的示例。可见,计算机容易被恶意代码以若干不同方式攻击(10)。例如,已知的恶意代码攻击是“缓冲区溢出攻击”。为了利用缓冲区溢出,攻击者向计算机发送包含恶意代码的消息。该消息包括用所插入的恶意代码的地址(即,存储器位置)覆盖地址指针(即,对存储器位置的引用)的代码(即,计算机可执行指令)。在适当的情况下,重写的指针被复制到计算机的处理单元(即,处理器)的程序计数器中。处理单元随后执行恶意代码。这样的缓冲器溢出攻击和其他恶意代码攻击为攻击者创建从计算机获得敏感信息、使计算机不稳定和/或打开计算机以用作分布式拒绝服务(DoS)攻击中的源节点的方式。缓冲器溢出攻击是常见的、易于利用、难以消除,且在成功时可能高度损坏。
在缓冲器溢出攻击的情况下,所利用的是程序中的数据缓冲器意在基于缓冲器的大小具有某些界限。“缓冲器”表示计算机的存储器的一部分,通常为连续的存储器位置,其被分配以存储在程序执行期间使用的程序数据。此处,“程序”是在计算机上执行的计算机程序(即,软件)。“程序数据”包括在程序执行期间使用的变量或其他类型的中间数据。在一些类型的程序(例如,不使用即时编译编程语言编写的程序)中,缓冲器溢出攻击更典型。通常,在这种程序中,如果违反所分配的缓冲器的边界(无检查),则可以读取/写入缓冲器外部的存储器的区段。缓冲器溢出弱点允许攻击者注入恶意代码。缓冲器过读弱点允许攻击者读取任意量的存储器,潜在地泄露敏感数据。
如图1所示,已知几种类型的恶意代码攻击(10)。可以利用面向返回的编程(ROP)攻击来发现和利用执行特定功能的“小工具”(“Gadgets”)。或者,攻击者可通过破坏程序链接表(PLT)和/或全局偏移表(GOT)来破坏程序的执行。“堆喷射”(“Heap spraying”)是另一种类型的恶意代码攻击(10),其使程序分配存储器中的缓冲器并用计算机可执行指令喷射缓冲器。这允许攻击者在进程的堆(即,执行程序的实例)中构造小工具,随后是面向跳转的编程(JOP)攻击。应当理解,图1中所示的恶意代码攻击(10)的类型是示例性的并且存在或可以开发若干其他类型的恶意代码攻击(10)。本发明的实施方式适用于任何此类型的恶意代码攻击(10),并且不限于图1中或本文中描述的那些攻击。
已经开发了若干现有的恶意代码预防技术(15)来解决此类恶意代码攻击的技术挑战。例如,存储程序的代码的存储器可以被标记为仅RX(读、执行),而存储程序数据的数据存储器被标记为仅RW(读、写)。因此,存储器是W或X,潜在地防止通过缓冲器溢出注入代码被执行。
在另一种现有技术(15)中,堆叠可以用于检测堆叠的修改。如果攻击者修改栈以返回到某个恶意代码,则栈溢出保护(Canary)被破坏,并且程序检测到栈崩溃。在又一现有技术(15)中,系统库(例如,libc库)具有足够的ROP小工具来完成图灵化。但攻击者需要知道这些小工具的地址以利用恶意代码攻击。为了防止攻击者知道地址,地址空间布局随机化(ASLR)用于随机化库的地址空间。如果可执行文件被编译为独立于位置的可执行文件(PIE),则过程的不同段也是独立于位置的。
然而,如在图1中可见,现有的恶意代码防止技术(15)不能防止所有类型的恶意代码攻击(10)。进一步,恶意代码防止技术(15)本身需要计算资源作为执行程序的开销,这可导致程序减慢。特别地,在所部署的不同类型的恶意代码预防技术(15)的情况下,程序的执行可基本上减慢。
本发明实施例解决了利用恶意代码攻击计算机的技术挑战。本发明的实施例有助于防止若干类型的恶意代码攻击的成功执行。进一步,本发明的实施例还解决了与现有恶意代码预防技术(15)相关联的技术挑战。对于本领域内的技术人员而言,依据本发明一个或多个实施例提供的技术方案的优点将显而易见。
除了程序数据处于处理单元的指令执行管线的“执行”阶段时,本发明的实施方式促进加密计算机中的任何类型的程序数据。因此,任何注入的代码(即,作为程序数据注入)处于加密状态并且不能由指令执行管线的“解码”阶段正确处理。以这种方式,本发明的一个或多个实施例有助于代码页(程序和库)是现在能够成功执行的唯一代码页。包括代码(即,恶意代码)的任何“程序数据”不能被正确地解密,并且因此不能被计算机执行。
以此方式,本发明的一个或多个实施例防止利用编译程序中的弱点。此外,本发明的一个或多个实施例还防止解释程序被恶意攻击。JIT喷射不能利用使用本发明的一个或多个实施例的计算机完成,因为JIT编译器生成的任何代码将具有加密的程序数据(或攻击者的恶意有效载荷)。攻击者不能使用它来执行指令。类似地,JavaScript中的任何可变数据(即,程序数据)使用本发明的一个或多个实施例被加密,这导致恶意代码在处理器的指令执行管线中执行时是无效的机器指令。
进一步,与基于软件的技术(15)不同,本发明的实施例有助于防止缓冲器过度读取。如本文所描述的,在本发明的一个或多个实施例中,每个执行过程具有不同的加密密钥。进程中的缓冲器过读将不会从另一进程泄漏敏感数据。
图2描绘了根据本发明的一个或多个实施例的系统100。系统100包括执行计算机程序190的计算装置101。计算机程序190可以是软件、库、附件、插件、驱动器或可由计算装置101执行的任何其他计算机程序产品。除其他组件之外,计算装置101使用处理单元102来执行计算机程序190。处理单元102可包括存储器112、指令执行单元114、指令解码单元116和寄存器118以及其他组件。应当理解,处理单元102可包括未示出的附加组件,诸如算术逻辑单元、存储器控制器、时钟等。
在执行时,计算机程序190被加载到存储器112中。存储器112中的计算机程序190被分成程序数据122和代码124。代码124包括作为计算机程序190的一部分的一个或多个计算机可执行指令,并且程序数据122包括由代码124使用的任何中间数据。例如,程序数据122可以包括可变数据、指针内容等。在本发明的一个或多个实施例中,程序数据122可以是由代码124分配的变量。由用户提供/更新值。
图3描述了根据本发明的一个或多个实施方式的程序数据和代码的实例。应当理解,所示的计算机程序190是示例,在本发明的其他实施例中,计算机程序190可以是不同的。计算机程序190可以包括几百行、几千行和甚至更多的行。来自计算机程序190的程序数据122被示为与代码124分开存储。在本发明的一个或多个实施例中,存储在存储器112中的代码124可以是机器代码(即,操作码)而不是高级计算机可执行代码(例如,C/C++、JavaScript等)。“操作码”(或操作代码)有时还可以被称为指令机器代码、指令代码、指令音节、指令包、操作字符串(opstring)等。在计算中,“操作码”是指定处理单元102将要执行的操作的机器语言指令的部分。除了操作码本身之外,计算机可执行指令还以程序数据122的形式指定操作码将处理的操作数。
再次参考图2,程序数据122可以经由一个或多个输入/输出(I/O)源提供。例如,I/O源可以是存储存储器104、网络接口控制器106、I/O装置108(例如,键盘、鼠标、触摸屏等)或任何其他类型的I/O源。
在执行时,指令解码单元对代码124进行解码并且在指令执行单元114中加载解码的机器可执行指令。指令执行单元114访问解码指令包括/引用的程序数据122。指令执行单元114可以从存储器112访问程序数据122,或者将程序数据122加载到一个或多个寄存器118中。
根据本发明的一个或多个实施例,处理单元102包括加密引擎120。加密引擎120负责保护程序数据122。加密引擎120在诸如在编译时间(在即时编译/解释的情况下)或者当计算机程序190被加载到存储器112中以供执行的条件下执行程序数据122的加密操作。向加密引擎120提供程序数据122,程序数据122可以包括要以这种方式加密的任何可变数据、指针内容等。在本发明的一个或多个实施例中,加密引擎识别程序数据122本身。在一些情况下,可以从计算机程序190的元数据(例如,报头信息)识别程序数据122。根据编程语言、编译器、链接器和使用的任何其他工具,识别程序数据122可以变化。现在已知的或将来开发的任何技术可以用于识别计算机程序190中的程序数据122。
进一步,在本发明的一个或多个实施例中,加密引擎120在执行计算机程序190时每当对任何文件、I/O装置或任何其他I/O源调用读取操作时对内容进行加密。加密引擎120还加密由指令执行单元114输出的内容以作为程序数据122的一部分被写入存储器112中。
在本发明的一个或多个实施例中,加密引擎120还负责对加密的程序数据122进行解密。应当注意,在本发明的一些实施例中,加密和解密可以由单独的组件来执行,这些组件可以一起被称为加密引擎120。
当程序数据122正被加载到指令执行单元114中时,执行解密操作。每当调用写入操作以经由I/O源中的一个或多个输出程序数据122的内容时,也执行解密。
在本发明的一个或多个实施例中,加密引擎120是硬件单元,诸如与处理单元102耦合的专用集成电路(ASIC)。替换地或附加地,加密引擎120包括作为处理单元102的一部分的一个或多个硬件组件。在本发明的其他实施例中,加密引擎120可以是硬件和软件的组合。在本发明的一些实施例中,加密引擎120包括由处理单元102执行的计算机可执行指令。
加密引擎120可以使用任何已知技术来执行像安全软件那样的加密/解密、像软件防护扩展(SGX)那样的专用硬件、硬件安全模块(HSM)等。
图4示出了根据本发明的一个或多个实施例的防止执行注入的恶意代码的方法的流程图。方法400包括在402处将计算机程序190加载到存储器112中以供执行。存储器112可以是高速缓冲存储器、随机存取存储器、或在计算机程序190的执行期间使用的任何其他这样的存储器。
加载计算机程序190包括将计算机程序的代码124和程序数据122分开地分配和存储在存储器112中。用于由编译器、链接器、解释器或转换高级编程语言机器可执行代码的任何其他计算机编程工具基于包括在计算机程序中的报头信息来识别计算机程序190的程序代码122。替换地或附加地,可基于操作数对机器可执行代码中的操作代码的使用来识别程序代码。在计算机程序190在执行期间使用解释器(诸如即时解释器)的情况下,可能不存在创建的报头,而是解释器在运行时将计算机程序190中的每行高级代码翻译成操作数和操作代码的组合。在这种情况下,操作数是程序数据124,并且操作码是代码122。
在块404,存储器112中的程序数据122被加密引擎120加密。在本发明的一个或多个实施例中,可以使用加密密钥来执行加密。在本发明的一些实施例中,加密引擎120为每个计算机程序190维护单独的加密密钥。在一些实施例中,计算机程序的加密密钥基于与计算机程序相关联的唯一标识符。例如,与计算机程序190相关联的过程标识符、许可密钥或者任何其他这样的标识符可以被用作加密密钥或者生成加密密钥。在本发明的一些实施例中,每次计算机程序190被加载到存储器112中时生成加密密钥。因此,计算机程序190的单独实例也将具有单独的唯一加密密钥。在本发明的一个或多个实施例中,加密密钥是私有的并且不共享(无需必要的授权)。
在计算机程序190的执行期间,从一个或多个I/O源接收程序数据122中的一个或多个值。用户可经由用户接口(例如,使用文本框、下拉框等)来提供此类值。替换地或附加地,该值可以从存储在存储存储器104中的数据接收,例如在文件、数据库等中。在本发明的一个或多个实施例中,可经由NIC106在通信网络上接收所述值。不管来源如何,程序数据122中的接收值被加密并存储在存储器112中。
代码124未被加密。
在框406处,指令执行单元114请求按照栈指针提取下一指令。栈指针指向代码124中将要执行的下一指令的存储器地址。作为响应,指令解码单元116提取存储器地址的内容(栈指针),并将对应于内容的机器可执行代码加载到指令执行单元114中。指令解码单元116将代码124(即,存储器地址的内容)变换成指令执行单元114可以处理的机器可执行格式(例如,比特序列)。
在框408,加密引擎120解密来自程序数据122的要被指令执行单元114用来执行所加载的指令的值。在本发明的一些实施例中,将解密的内容加载到寄存器118中。替换地或附加地,使得解密的内容可用于存储器112本身中的指令执行单元114。
在框410处执行指令。在框412处,由加密引擎120对来自指令执行的将被输出以存储到存储器112或I/O源中的任中的结果进行加密。输出被存储在存储器112中的加密程序数据122中。在块414,输出值被解密并且经由一个或多个I/O源(例如,存储器104、NIC106等)传送。
本发明的实施例促进存储器(高速缓存)内容的有条件加密或加密,所述有条件加密仅程序的数据内容而不加密代码段。给予程序文件输入、用户输入、网络输入等的任何输入可以包含数据并且不能包含任何代码。这种数据以加密的形式存储在存储器中。系统CPU中的任何操作的输出导致数据(或指针)并且不能包含任何代码。该输出也被加密并存储在存储器中。来自程序文件输出、控制台输出、网络输出等的任何输出在对内容进行解密之后发出。
进一步,在本发明的实施例中,指令获取请求导致解密的数据。指令解码级可访问两种类型的存储器——加密数据和未加密代码。在解码阶段期间读取的一个或多个代码块被照常处理-转换成机器可执行代码并且加载到执行单元中。然而,如果加密数据进入解码阶段,则将导致执行故障,因为加密内容将不形成有效的机器指令。所以,不知道数据加密密钥的攻击者无法注入将被正确解码的恶意代码。因而,本发明的实施例防止依赖于所注入代码的执行的恶意代码攻击,包括:堆喷射,其后是颠覆程序执行;即时(JIT)喷射,其后是颠覆程序执行;JOP,其中跳转进入注入代码;栈代码注入;等等。
此外,本发明的实施例便于保护缓冲器过读取以防止泄漏属于不同进程的敏感数据。如果在系统中运行的每个进程具有用于生成数据加密密钥的签名(如进程ID),即使从不同的进程读出数据,也不能正确地对其进行解密。
图5描绘了根据本发明的一个或多个实施例的防止恶意代码攻击的示例场景。考虑缓冲器溢出/过读弱点存在于加载到存储器112中的计算机程序190中。攻击者可能能够获得对这个弱点的访问并且注入恶意代码。例如,考虑攻击者能够访问一个或多个I/O源。攻击者可以将消息/文件编制为用于计算机的处理,作为程序190的变量504的值。进一步,攻击者通过改变返回地址506以使变量504中的代码被处理器102执行来改变指令执行指针502。恶意代码的执行可导致程序190,进而导致计算装置101被损坏。
函数参数508是被传递到函数的任何参数。在图3的示例中,a是被传递到函数ExampleArithmetic的参数。通常,编程栈具有在执行期间推送的参数值,随后是返回地址,并且最后是函数中的局部变量。在本发明的实施例的情况下,因为程序数据124被加密,所以当填充堆栈时堆栈的内容被加密。函数的局部变量(例如,图3中的c)和函数参数(例如,a)是程序数据124,并且因此被加密。当要以这种方式加密的函数参数被推送到栈时,可以在执行期间识别它们。
本发明的实施例防止恶意代码在这样的场景中执行,这些场景有时被称为栈代码注入攻击。攻击者被假定为不具有对加密引擎120的访问。在本发明的一个或多个实施例中,攻击者作为变量504的一部分注入的恶意代码在存储在程序数据122中之前被加密。所以,当攻击者将栈指针502从代码124改变为程序数据122中的恶意代码的位置时,指令解码单元116由于加密内容而不能对栈指针的内容进行解码。因此,指令解码单元116对加密内容的变换导致无效的机器可执行代码被加载到指令执行单元114中。由此,导致无效指令故障(或任何其他此类故障),从而防止恶意代码被执行。
图7描绘了根据本发明的一个或多个实施方式的防止恶意代码攻击的另一个示例场景。这里所描述的场景是针对计算机程序190,计算机程序190是针对即时(JIT)解释器开发和执行的,例如基于NET的语言、基于JVM的语言等。在所描述的场景中,攻击者将恶意脚本610(即,恶意代码)作为值分配给计算机程序190的变量‘a’。
视图602描绘了在没有由本发明的一个或多个实施例提供的加密的情况下的典型执行。这里,恶意脚本610由JIT解释器重新解释,并且作为代码124的一部分执行,导致危及安全的情况。本发明的一个或多个实施例防止这种折衷,如视图604中所示。这里,JIT编译器/解释器以加密的方式将字节码写入恶意脚本610。所以,指令解码单元116不能将加密的恶意脚本610转换成可由指令执行单元114执行的对应机器代码。因此,导致执行失败,从而防止恶意脚本610被执行。
本发明的实施例便于加密存储器中的所有可变数据、指针地址和缓冲器。这样的程序数据仅在要被处理时被解密。以此方式,总是对从攻击者进入计算装置101的任何恶意代码进行加密。如果这种加密数据被强制到指令解码单元中,则导致故障,从而防止恶意代码的执行。
图7描绘了根据本发明的一个或多个实施方式的处理单元的框图。处理单元102可尤其包括指令获取单元701、指令解码操作数获取单元116、指令执行单元114、存储器访问单元704、回写单元705和一组寄存器118。在本发明的一个或多个实施例中,处理单元102还包括加密引擎120,该加密引擎可以是硬件安全模块或任何其他加密模块。
在本发明的一个或多个实施例中,处理单元102可以是处理单元中的若干计算机处理器之一,例如中央处理单元(CPU)、图形处理单元(GPU)、张量处理单元(TPU)、或计算机系统的任何其他处理单元。替换地或附加地,处理单元102可以是作为一个或多个处理单元的一部分的计算核。
指令获取单元701负责组织将从存储器获取并以适当顺序执行的程序指令并且将它们转发至指令执行单元114。指令解码操作数获取单元116促进在将指令转发至指令执行单元114之前解析指令和操作数,例如,地址解析、预取等。指令执行部114按照该指令进行运算。存储器访问单元704促进访问与处理单元102耦合的存储器装置中的特定位置。存储器装置可以是高速缓存存储器、易失性存储器、非易失性存储器等。回写单元705促进将寄存器118的内容记录到存储器装置中的一个或多个位置。
需要说明的是,在本发明一个或多个实施例中,在不影响本文所述技术方案的特征的情况下,处理单元的各个组成部件可以有所不同。在本发明的一些实施例中,处理单元102的组件可以组合、分离或不同于在此描述的那些组件。
现在转向图8,根据实施例总体上示出了计算机系统1500。计算机系统1500可以是用于执行要求执行屏蔽的移位添加操作的一个或多个功能的目标计算系统。计算机系统1500可以是包括和/或采用利用不同通信技术的任何数量和组合的计算装置和网络的电子计算机框架,如本文所描述的。计算机系统1500可以是容易扩展的、可扩展的和模块化的,具有改变成不同服务或独立于其他特征来重新配置某些特征的能力。计算机系统1500可以是例如服务器、台式计算机、膝上型计算机、平板计算机或智能电话。在一些示例中,计算机系统1500可以是云计算节点。计算机系统1500可在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。一般而言,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统1500可在其中任务由通过通信网络链接的远程处理装置执行的分布式云计算环境中实践。在分布式云计算环境中,程序模块可以位于包括存储器存储装置的本地和远程计算机系统存储介质中。
如图8所示,计算机系统1500具有一个或多个中央处理单元(CPU)1501a、1501b、1501c等。(统称为或一般地称为(一个或多个)处理器1501)。处理器1501可以是单核处理器、多核处理器、计算群集、或任意数量的其他配置。处理器1501(也称为处理电路)经由系统总线1502耦合到系统存储器1503和不同其他组件。系统存储器1503可以包括只读存储器(ROM)1504和随机存取存储器(RAM)1505。ROM1504耦合到系统总线1502并且可以包括控制计算机系统1500的某些基本功能的基本输入/输出系统(BIOS)。RAM是耦合至系统总线1502以供处理器1501使用的读写存储器。系统存储器1503为操作期间所述指令的操作提供临时存储器空间。系统存储器1503可包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储器系统。
计算机系统1500包括耦合到系统总线1502的输入/输出(I/O)适配器1506和通信适配器1507。I/O适配器1506可以是与硬盘1508和/或任何其他类似组件通信的小型计算机系统接口(SCSI)适配器。I/O适配器1506和硬盘1508在本文中统称为大容量存储1510。
在计算机系统1500上执行的软件1511可被存储在大容量存储1510中。大容量存储1510是可由处理器1501读取的有形存储介质的示例,其中软件1511被存储为用于由处理器1501执行以使计算机系统1500操作的指令,诸如在下文中相对于各个附图所描述的。本文中更详细地论述计算机程序产品和此指令的执行的实例。通信适配器1507将系统总线1502与网络1512互连,网络1512可以是外部网络,使得计算机系统1500能够与其他这样的系统通信。在一个实施例中,系统存储器1503的一部分和大容量存储1510共同存储操作系统,该操作系统可以是任何适当的操作系统,例如来自IBM公司的z/OS或AIX操作系统,以协调图8中所示的不同组件的功能。
附加输入/输出装置被示为经由显示适配器1515和接口适配器1516连接到系统总线1502。在一个实施例中,适配器1506、1507、1515和1516可以连接到经由中间总线桥(未示出)连接到系统总线1502的一个或多个I/O总线。显示器1519(例如,屏幕或显示监视器)通过显示适配器1515连接到系统总线1502,该显示适配器1515可以包括用于改进图形密集型应用的性能的图形控制器和视频控制器。键盘1521、鼠标1522、扬声器1523等可通过接口适配器1516与系统总线1502互连,接口适配器1516可包括例如将多个装置适配器集成到单个集成电路中的超级I/O芯片。用于连接诸如硬盘控制器、网络适配器和图形适配器之类的外围装置的合适的I/O总线通常包括诸如外围组件互连(PCI)之类的公共协议。因此,如图8中配置的,计算机系统1500包括处理器1501形式的处理能力,以及包括系统存储器1503和大容量存储器1510的存储能力、诸如键盘1521和鼠标1522的输入装置、以及包括扬声器1523和显示器1519的输出能力。
在一些实施例中,通信适配器1507可以使用任何合适的接口或协议(诸如互联网小型计算机系统接口等)来发送数据。网络1512可以是蜂窝网络、无线电网络、广域网(WAN)、局域网(LAN)或互联网等。外部计算装置可通过网络1512连接至计算机系统1500。在一些示例中,外部计算装置可以是外部web服务器或云计算节点。
应当理解,图8的框图并不旨在指示计算机系统1500包括图8中所示的所有组件。相反,计算机系统1500可包括图8中未示出的任何合适的更少或额外部件(例如,额外存储器部件、嵌入式控制器、模块、额外网络接口等)。进一步,本文关于计算机系统1500描述的实施例可用任何合适的逻辑来实现,其中如本文所提及的逻辑可包括任何合适的硬件(例如,处理器、嵌入式控制器、或专用集成电路等)、软件(例如,应用等)、固件、或硬件、软件、和固件的任何合适的组合。
本发明可以是任何可能的技术细节集成度的系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
计算机可读存储介质可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储装置、磁存储装置、光存储装置、电磁存储装置、半导体存储装置、或者上述的任意合适的组合。计算机可读存储介质的更具体实例的非详尽列表包含以下各项:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或快闪存储器)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、机械编码装置(例如,穿孔卡或槽中的具有记录于其上的指令的凸起结构),以及前述各项的任何合适组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理装置,或者下载到外部计算机或外部存储装置。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理装置中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理装置内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或者以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者可连接到外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他装置以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他装置上,使得在计算机、其他可编程装置或其他装置上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他装置上执行的指令实现流程图和/或框图中的或多个方框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
已经出于说明的目的呈现了本发明的各种实施方式的描述,但并不旨在是详尽的或者限于所公开的实施方式。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是显而易见的。本文使用的术语被选择来最好地解释实施例的原理、实际应用或优于市场中发现的技术的技术改进,或者使得本领域普通技术人员能够理解本文描述的实施例。
Claims (20)
1.一种计算机实现方法,包括:
通过处理单元接收计算机可执行指令所使用的操作数的输入值;
通过所述处理单元通过加密所述输入值来生成加密值;
通过所述处理单元将所述加密值存储在存储器中;
响应于来自所述处理单元的执行所述计算机可执行指令的请求:
将所述计算机可执行指令解码成机器可执行代码;以及
解密所述加密值以供所述机器可执行代码使用;
通过所述处理单元执行所述机器可执行代码;
通过所述处理单元通过加密所述执行的结果来生成加密结果;以及
通过所述处理单元将所述加密结果存储在所述存储器中。
2.根据权利要求1所述的计算机实现的方法,其中,所述计算机可执行指令以未加密的形式存储在所述存储器中,与被分配给所述操作数的存储器缓冲器分离,并且所述存储器缓冲器的内容被加密。
3.根据权利要求1所述的计算机实现的方法,进一步包括在将包括所述计算机可执行指令的计算机程序加载到所述存储器的过程中识别所述操作数。
4.根据权利要求3所述的计算机实现的方法,其中,所述操作数基于所述计算机程序的元数据来识别。
5.根据权利要求1所述的计算机实现的方法,其中,所述加密使用专用于包括所述计算机可执行指令的计算机程序的加密密钥来执行。
6.根据权利要求1所述的计算机实现的方法,其中,所述加密使用硬件模块来执行。
7.根据权利要求1所述的计算机实现的方法,其中,所述输入值经由输入输出源被分配给所述操作数。
8.一种系统,包括:
存储器;以及
与所述存储器耦合的一个或多个处理单元,所述一个或多个处理单元被配置为执行一种用于防止执行所注入的恶意代码的方法,其中,执行所述方法包括:
接收计算机可执行指令所使用的操作数的输入值;
通过加密所述输入值来生成加密值;
将加密值存储在存储器中;
响应于执行所述计算机可执行指令的请求:
将所述计算机可执行指令解码成机器可执行代码;以及
解密所述加密值以供所述机器可执行代码使用;
执行所述机器可执行代码;
通过加密所述执行的结果来生成加密结果;以及
将加密结果存储在存储器中。
9.根据权利要求8所述的系统,其中,所述计算机可执行指令以未加密的形式存储在所述存储器中,与被分配给所述操作数的存储器缓冲器分离,并且所述存储器缓冲器的内容被加密。
10.根据权利要求8所述的系统,其中,在将包括所述计算机可执行指令的计算机程序加载到所述存储器的过程中识别所述操作数。
11.根据权利要求10所述的系统,其中,所述操作数基于所述计算机程序的元数据来识别。
12.根据权利要求8所述的系统,其中,所述加密使用特定于包括所述计算机可执行指令的计算机程序的加密密钥来执行。
13.根据权利要求8所述的系统,其中,所述加密使用硬件模块执行。
14.根据权利要求8所述的系统,其中,所述输入值通过输入输出源被分配给所述操作数。
15.一种计算机程序产品,包括计算机可读存储器,所述计算机可读存储器具有存储在其上的计算机可执行指令,所述计算机可执行指令在由处理器执行时使所述处理器执行一种用于防止执行注入的恶意代码的方法,其中,执行所述方法包括:
接收计算机可执行指令所使用的操作数的输入值;
通过加密所述输入值来生成加密值;
将所述加密值存储在存储器中;
响应于执行所述计算机可执行指令的请求:
将所述计算机可执行指令解码成机器可执行代码;以及
解密所述加密值以供所述机器可执行代码使用;
执行所述机器可执行代码;
通过加密所述执行的结果来生成加密结果;以及
将加密结果存储在存储器中。
16.根据权利要求15所述的计算机程序产品,其中,所述计算机可执行指令以未加密的形式存储在所述存储器中,与被分配给所述操作数的存储器缓冲器分离,并且所述存储器缓冲器的内容被加密。
17.根据权利要求15所述的计算机程序产品,其中,在将包括所述计算机可执行指令的计算机程序加载到所述存储器期间,识别所述操作数,并且其中,基于所述计算机程序的元数据来识别所述操作数。
18.根据权利要求15所述的计算机程序产品,其中,所述加密使用专用于包括所述计算机可执行指令的计算机程序的加密密钥来执行。
19.根据权利要求15所述的计算机程序产品,其中,所述加密使用硬件模块来执行。
20.根据权利要求15所述的计算机程序产品,其中,所述输入值经由输入输出源被分配给所述操作数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/511,643 | 2021-10-27 | ||
US17/511,643 US20230126908A1 (en) | 2021-10-27 | 2021-10-27 | Protection against executing injected malicious code |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116028945A true CN116028945A (zh) | 2023-04-28 |
Family
ID=86056456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211120853.XA Pending CN116028945A (zh) | 2021-10-27 | 2022-09-15 | 防止执行注入的恶意代码的保护 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230126908A1 (zh) |
JP (1) | JP2023065323A (zh) |
CN (1) | CN116028945A (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3242464A (en) * | 1961-07-31 | 1966-03-22 | Rca Corp | Data processing system |
SE0004913D0 (sv) * | 2000-12-29 | 2000-12-29 | Ericsson Telefon Ab L M | Processor |
JP2003333024A (ja) * | 2002-05-09 | 2003-11-21 | Nec Corp | 暗号化/復号化システム及びその暗号解読防止/改竄防止方法 |
WO2013036946A1 (en) * | 2011-09-09 | 2013-03-14 | Stoneware, Inc. | Method and apparatus for key sharing over remote desktop protocol |
JP2013250739A (ja) * | 2012-05-31 | 2013-12-12 | Fujitsu Ltd | 情報処理装置、情報処理方法およびプログラム |
US10210323B2 (en) * | 2016-05-06 | 2019-02-19 | The Boeing Company | Information assurance system for secure program execution |
-
2021
- 2021-10-27 US US17/511,643 patent/US20230126908A1/en active Pending
-
2022
- 2022-09-15 CN CN202211120853.XA patent/CN116028945A/zh active Pending
- 2022-10-24 JP JP2022170026A patent/JP2023065323A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2023065323A (ja) | 2023-05-12 |
US20230126908A1 (en) | 2023-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11620391B2 (en) | Data encryption based on immutable pointers | |
US9811479B2 (en) | Cryptographic pointer address encoding | |
CN110472440B (zh) | 对ai系统和其它异构系统的安全执行支持的方法和装置 | |
EP3807797B1 (en) | Pointer authentication and dynamic switching between pointer authentication regimes | |
KR101504857B1 (ko) | 보안 시스템에서 랜덤하게 할당된 메모리 범위로 jit를 지원하는 시스템 및 방법 | |
CN107851162B (zh) | 用于对安全i/o的密码引擎进行安全编程的技术 | |
US11263311B2 (en) | Securing virtual-machine software applications | |
CN107408072B (zh) | 用于随机化指令的方法、介质和装置 | |
US10922402B2 (en) | Securing secret data embedded in code against compromised interrupt and exception handlers | |
US20190114401A1 (en) | On device structure layout randomization for binary code to enhance security through increased entropy | |
US20170024230A1 (en) | Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine | |
Boivie et al. | SecureBlue++: CPU support for secure execution | |
Shioji et al. | Code shredding: byte-granular randomization of program layout for detecting code-reuse attacks | |
CN113568680B (zh) | 应用程序的动态链接库保护方法、装置、设备及介质 | |
Mittal et al. | A survey of techniques for improving security of gpus | |
US10303885B2 (en) | Methods and systems for securely executing untrusted software | |
US11341241B2 (en) | Enhancing memory safe programming using a page frame tag mechanism | |
US9411979B2 (en) | Embedding secret data in code | |
Strackx et al. | Salus: Kernel support for secure process compartments | |
Jang et al. | Securing a communication channel for the trusted execution environment | |
US11361070B1 (en) | Protecting devices from remote code execution attacks | |
US20230126908A1 (en) | Protection against executing injected malicious code | |
WO2023031679A1 (en) | Systems and methods for inhibiting exploitations in runtime environments | |
Lee et al. | Ensuring secure application execution and platform-specific execution in embedded devices | |
WO2022044021A1 (en) | Exploit prevention based on generation of random chaotic execution context |
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 |