CN106687973B - 用于防御基于返回导向编程(rop)的攻击的方法和系统 - Google Patents
用于防御基于返回导向编程(rop)的攻击的方法和系统 Download PDFInfo
- Publication number
- CN106687973B CN106687973B CN201680002571.6A CN201680002571A CN106687973B CN 106687973 B CN106687973 B CN 106687973B CN 201680002571 A CN201680002571 A CN 201680002571A CN 106687973 B CN106687973 B CN 106687973B
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- replaceable
- group
- pair
- 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
Links
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
-
- 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/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/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- 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/30181—Instruction operation extension or modification
-
- 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
-
- 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/2123—Dummy operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明的实施例提供用于防御ROP攻击的方法和系统。所述方法包括:在二进制文件中识别可替换指令对,所述可替换指令对包含用于将第一组寄存器推动到栈存储器上的第一指令以及用于使所述第一组寄存器从所述栈存储器弹出的第二指令;产生用于所述可替换指令对的等效指令对,所述等效指令对包含用于将第二组寄存器推动到所述栈存储器上的第一等效指令以及用于使所述第二组寄存器从所述栈存储器弹出的第二等效指令,其中所述第二组寄存器包含所述第一组寄存器以及所述可替换指令对不使用的至少一个额外寄存器;以及分别用所述第一等效指令和所述第二等效指令覆盖所述第一指令和所述第二指令。
Description
技术领域
本发明大体上涉及返回导向编程(Return Oriented Programming,ROP)缓解策略,且更确切地说,涉及用于防御自动编码机/高级精简指令集计算(Reduced InstructionSet Computing,RISC)机器(Advanced Reduced Instruction Set Computing Machine,ARM)架构上运行的移动计算机系统中的基于ROP的攻击的方法和系统。
背景技术
ROP是使攻击者能够在不注入代码的情况下实现恶意目标的高级软件开发技术。基于ROP的攻击技术广泛用于软件和系统开发中以避开不可执行的存储和代码签名等现代安全防御技术。基于ROP的攻击技术可以应用于各种计算机系统中,例如,在X86平台上操作的桌上型计算机系统和在ARM架构上运行的移动计算机系统,例如,苹果手机操作系统(iPhone operating system,iOS)和谷歌安卓操作系统。
已提出多种缓解策略来保护X86平台免受基于ROP的攻击,例如,内存地址随机化机制(Address Space Layout Randomization,ASLR)和指令随机化。然而,不存在能够应用于在ARM架构上运行的移动计算机系统的有效ROP缓解策略。
发明内容
为了提供一种用于防御计算机系统上的基于ROP的攻击的有效ROP缓解策略,尤其是用于防御ARM架构上运行的移动计算机系统上的基于ROP的攻击的有效ROP缓解策略,本发明的实施例提供一种用随机化等效指令对执行指令对上的指令替换的新颖指令随机化技术。
根据本发明的一个方面,提供一种用于防御ROP攻击的方法。所述方法包括:
从二进制文件中识别可替换指令对,所述可替换指令对包含用于将第一组寄存器推动到栈存储器上的第一指令以及用于使第一组寄存器从栈存储器弹出的第二指令,其中第一组寄存器包含至少一个通用寄存器;
产生用于可替换指令对的等效指令对,所述等效指令对包含用于将第二组寄存器推动到栈存储器上的第一等效指令以及用于使第二组寄存器从栈存储器弹出的第二等效指令,其中第二组寄存器包含第一组寄存器以及可替换指令对不使用的至少一个额外寄存器;以及
分别用第一等效指令和第二等效指令覆盖第一指令和第二指令。
在本发明的一个实施例中,通过以下操作产生等效指令对:基于用于可替换指令对的可选通用寄存器组确定用于可替换指令对的替代指令对组;以及从所确定的替代指令对组中选择随机替代指令对作为等效指令对。在本发明的另一实施例中,通过以下操作产生等效指令对:从用于可替换指令对的可选通用寄存器组中选择至少一个额外寄存器;以及基于选定的至少一个额外寄存器产生等效指令对。在本发明的这两个实施例中,可选通用寄存器组根据可替换指令对的指令类型来确定,所述可选通用寄存器组不被所述可替换指令对使用。
在本发明的一个实施例中,二进制文件包括在将加载到计算机系统中的压缩应用文件中,所述方法进一步包括:解开压缩应用文件以定位来自解开后的应用文件的二进制文件;以及在通过用所产生的等效指令对覆盖二进制文件中所识别的可替换指令对来修改解开后的应用文件之后,重新打包修改后的应用文件。
在本发明的另一实施例中,在从二进制文件中识别可替换指令对之前,所述方法进一步包括:如果将映射到存储器中的文件具有二进制格式,那么确定将在文件映射过程期间映射到存储器中的文件为二进制文件;以及将二进制文件映射到存储器中。
根据本发明的另一方面,提供一种用于防御ROP攻击的系统。所述系统包括:处理器以及存储器,存储器与处理器可通信地耦合,用于存储可由处理器执行以致使处理器执行以下操作的指令:
从二进制文件中识别可替换指令对,所述可替换指令对包含用于将第一组寄存器推动到栈存储器上的第一指令以及用于使第一组寄存器从栈存储器弹出的第二指令,其中第一组寄存器包含至少一个通用寄存器,
产生用于可替换指令对的等效指令对,所述等效指令对包含用于将第二组寄存器推动到栈存储器上的第一等效指令以及用于使第二组寄存器从栈存储器弹出的第二等效指令,其中第二组寄存器包含第一组寄存器以及可替换指令对不使用的至少一个额外寄存器,以及
分别用第一等效指令和第二等效指令覆盖第一指令和第二指令。
根据本发明的另一方面,提供一种非暂时性计算机可读存储媒体,其具有存储于其上的指令,所述指令如果由计算机系统执行将致使计算机系统执行上述用于防御ROP攻击的方法。
通过本发明的实施例中提供的ROP缓解策略,在ARM架构上运行的应用程序和系统能够成功地免受基于ROP的攻击。不需要将额外的指令和控制流传递引入到二进制文件中,因此指令的长度和相关二进制文件的大小将保持不变,且不需要从别处恢复控制流。
附图说明
将参考附图详细描述本发明,在附图中:
图1是说明根据本发明第一实施例的用于防御基于ROP的攻击的方法的流程图;
图2A说明根据第一实施例的一个实例的从其识别可替换指令对的二进制文件的一部分;
图2B说明其中用等效指令对覆盖图2A中的可替换指令对的二进制文件的一部分。
图3A示出根据第一实施例的另一实例的在可替换指令对之间插入的基于sp的寻址指令;
图3B示出在用等效指令对覆盖图3A中的可替换指令对之后的修改后的基于sp的寻址指令;
图3C示出图3B中的基于sp的寻址指令中的偏移值修改;以及
图4是说明根据本发明第二实施例的用于防御基于ROP的攻击的方法的流程图。
具体实施方式
在以下描述中,阐述许多特定细节以便提供对本发明的各种说明性实施例的透彻理解。然而,本领域熟练技术人员将理解,可以在不具有这些具体细节中的一些或全部的情况下实践本发明的实施例。应理解,本文中所用的术语仅仅是出于描述特定实施例的目的,并且并不打算限制本发明的范围。在附图中,相同参考标号在若干视图中始终指代相同或相似功能性或特征。
本发明的实施例提供一种用于计算机系统的ROP缓解策略,所述计算机系统具体来说是在ARM架构上运行的移动计算机系统。此策略能够显著减小计算机系统上的基于ROP的攻击的可能性。
图1是说明根据本发明第一实施例的防御基于ROP的攻击的方法100的流程图。在此实施例中,方法100应用于重写目标应用程序以供移动计算机系统执行,以防止对手成功地在此目标应用程序上执行基于ROP的攻击。
在块101中,解开目标应用程序以定位其中的至少一个二进制文件。
在实施例的一个实例中,移动计算机系统配备有谷歌安卓操作系统,目标应用程序是安卓应用程序,例如,命名为FEReader的电子书阅读器。在此实例中,使用用于解开和重新打包安卓应用程序的安卓安装包(Android PacKage,APK)工具来解开目标应用程序。应注意,在实施例的其它实例中,可使用其它工具来解开目标应用程序,这取决于目标应用程序的类型。
在块102中,从二进制文件中识别可替换指令对。可替换指令对包含用于将第一组寄存器推动/存储到栈存储器上的PUSH指令以及用于使第一组寄存器从栈存储器弹出/移除的POP指令。
参考图2A,其说明根据第一实施例的一个实例的从其识别可替换指令对的二进制文件的一部分。如图2A中示出,在换行符共享库中识别可替换指令对,其中PUSH指令是set_linebreaks_utf16:000015cc push{r4,r5,r6,r7,lr};POP指令是00001600 pop{r4,r5,r6,r7,pc}。在前述两个指令中,r4、r5、r6、r7是通用寄存器;lr是当PUSH指令完成时专用于保持存储器地址恢复的链接寄存器;pc是程序计数器,其也是专用寄存器,用于保持将被执行的下一指令的存储器地址。根据前述PUSH指令和POP指令,在此实例中,第一组寄存器包含将通过此可替换指令对推动和弹出的四个通用寄存器r4、r5、r6、r7。
应注意,由可替换指令对使用的通用寄存器的数目可以变化并且由可替换指令对使用的第一组寄存器包含至少一个通用寄存器。
在块103中,产生将用于覆盖可替换指令对的等效指令对。等效指令对包含等效PUSH指令和等效POP指令。等效PUSH指令用于将第二组寄存器推动/存储到栈存储器中;等效POP指令用于使第二组寄存器从栈存储器弹出/移除。第二组寄存器包含第一组寄存器以及不在第一组寄存器内且选自可选通用寄存器组的至少一个额外寄存器。
根据可替换指令对的指令集类型确定可选通用寄存器组。具体来说,可选通用寄存器组包含可用于可替换指令对的指令集类型的通用寄存器中的至少一个,通用寄存器r0和被可替换指令对使用的那些寄存器除外。通常,可选通用寄存器组包含可用于可替换指令对的指令集类型的所有通用寄存器,通用寄存器r0和被可替换指令对使用的那些寄存器除外。如果可替换指令对的指令集类型是THUMB指令集,那么总共存在八个可用的通用寄存器r0至r7。如果可替换指令对的指令集类型是ARM指令集,那么总共存在十二个可用的通用寄存器r0至r11。
在此实施例中,可以通过以下操作产生等效指令对:根据可选通用寄存器组产生用于可替换指令对的替代指令对组;随后从替代指令对组中选择随机指令对作为等效指令对。应注意,替代指令对组包含至少一个替代指令对。
或者,可以通过以下操作产生等效指令对:从可选通用寄存器组中选择至少一个额外寄存器,随后使用选定的额外寄存器产生等效指令对。
在如图2A中示出的实例中,可替换指令对的指令集类型是THUMB指令集,因此可用的通用寄存器包含r0至r7。由于r4至r7已被可替换指令对使用,因此可以从r1至r3中选择至少一个额外寄存器。表1展出在图2A的实例中的用于可替换指令对的所有替代指令对。
表1
在块104中,用所产生的等效指令对覆盖可替换指令对。具体来说,用所产生的等效指令对的等效PUSH指令覆盖可替换指令对的PUSH指令,所述PUSH指令用于将第一组寄存器推动/存储到栈存储器上,所述等效PUSH指令用于将第二组寄存器推动/存储到栈存储器中。用所产生的等效指令对的等效POP指令覆盖可替换指令对的POP指令,所述POP指令用于使第一组寄存器从栈存储器弹出/移除,所述等效POP指令用于使第二组寄存器从栈存储器弹出/移除。参考图2B,在此实例中,等效指令对包含:push{r1,r2,r3,r4,r5,r6,r7,lr}和pop{r1,r2,r3,r4,r5,r6,r7,pc}用于覆盖图2A中示出的可替换指令对,即,PUSH指令:push{r4,r5,r6,r7,lr}和POP指令:pop{r4,r5,r6,r7,pc}。
在块105中,确定是否在可替换指令对之间,即,在PUSH指令与POP指令之间,插入基于栈指针(stack pointer based,基于sp)的寻址指令。如果在可替换指令对之间插入基于sp的寻址指令,那么流程次序进行到块106;如果不在可替换指令对之间插入基于sp的寻址指令,那么流程次序进行到块107。
在块106中,基于用于可替换指令对中的额外寄存器的数目以及用于可替换指令对中的每个额外寄存器的长度来修改基于sp的寻址指令中的偏移值。
具体来说,在产生用于可替换指令对的等效指令对的步骤中,如果使用n个额外寄存器并且额外寄存器中的每一个具有m字节的长度,那么基于sp的寻址指令中的偏移值将修改为:原始偏移值+m×n。在图3A至3C中示出实施例的一个实例。参考图3A,在可替换指令对之间,即,在PUSH指令push{r4,lr}与POP指令pop{r4,pc}之间,插入基于sp的寻址指令“ldr r1,[sp,#0xC]”。如图3B和3C中示出,仅使用具有4字节长度的一个通用寄存器r6来产生覆盖可替换指令对的等效指令对。因此,基于sp的寻址指令中的偏移值被修改为#0x10=#0xC+#0x4×1。
在块107中,重新打包修改后的目标应用程序。
在第一实施例中,用于防御基于ROP的攻击的方法通过选择待推动和弹出的至少一个额外寄存器而引入指令随机化技术。在目标应用程序的装载过程期间执行此指令随机化技术。在其它实施例中,可以在目标应用程序的执行过程期间执行此指令随机化技术。
根据本发明的第二实施例,在系统的文件映射过程期间执行指令随机化技术。为了实现此,应对系统的文件映射过程进行修改以启用指令随机化能力。
图4说明根据本发明的第二实施例的用于防御基于ROP的攻击的方法400。
在块401中,检查将映射到计算机系统的存储器中的文件以确定所述文件是否为二进制文件。如果待映射文件是二进制文件,那么在将二进制文件映射到存储器中之后,流程次序进行到块402;如果待映射文件不是二进制文件,那么在将文件映射到存储器中之后,流程次序进行到块407,即,继续原始文件映射过程。
在块402中,在二进制文件中识别可替换指令对。可替换指令对包含用于将第一组寄存器推动/存储到栈存储器上的PUSH指令以及用于使第一组寄存器从栈存储器弹出/移除的POP指令。
此步骤类似于在本发明的第一实施例中的块102中示出的步骤,不同之处包含:在第二实施例中,在存储器中的文件图像上执行可替换指令对的识别,而在第一实施例中,在文件系统中的文件上执行可替换指令对的识别。
在块403中,产生将用于覆盖可替换指令对的等效指令对。
在块404中,用等效指令对覆盖可替换指令对。
在块405中,确定是否在可替换指令对之间,即,在PUSH指令与POP指令之间,插入基于栈指针(stack pointer based,基于sp)的寻址指令,如果在可替换指令对之间插入基于sp的寻址指令,那么流程次序进行到块406;如果不在可替换指令对之间插入基于sp的寻址指令,那么流程次序进行到块407。
在块406中,基于用于等效指令对中的至少一个额外寄存器的数目以及用于等效指令对中的每个额外寄存器的长度来修改基于sp的寻址指令中的偏移值。
在第二实施例中,将偏移值的修改更新到存储器。而在第一实施例中,将偏移值的修改更新到目标应用程序中的二进制文件。
块403至块406中示出的步骤中的技术和策略类似于块203至块206中示出的那些技术和策略,因此在第二实施例中不再进行详细描述。
在块407中,继续原始文件映射过程。
上述用于防御基于ROP的攻击的方法可以通过计算机系统执行,所述计算机系统包括处理器以及存储器,存储器与处理器可通信地耦合,用于存储可由处理器执行以致使处理器执行以下操作的指令:在二进制文件中识别可替换指令对,所述可替换指令对包含用于将第一组通用寄存器推动到栈存储器上的第一指令以及用于使第一组通用寄存器从栈存储器弹出的第二指令,其中第一组通用寄存器包含至少一个通用寄存器;产生用于可替换指令对的等效指令对,所述等效指令对包含用于将第二组通用寄存器推动到栈存储器上的第一等效指令以及用于使第二组通用寄存器从栈存储器弹出的第二等效指令,其中第二组通用寄存器包含第一组通用寄存器以及可替换指令对不使用的至少一个额外寄存器;以及用所产生的等效指令对覆盖可替换指令对。
根据本发明的一个实施例,当产生等效指令对时,处理器进一步用于根据用于可替换指令对的可选通用寄存器组确定用于可替换指令对的替代指令对组,并且随后从所确定的替代指令对组中随机选择替代指令对作为等效指令对。根据本发明的另一实施例,当产生等效指令对时,处理器进一步用于从用于可替换指令对的可选通用寄存器组中选择至少一个额外寄存器,并且随后基于选定的至少一个额外寄存器产生等效指令对。
在前述两个实施例中,可选通用寄存器组根据可替换指令对的指令类型来确定,所述可选通用寄存器组不被所述可替换指令对使用,如果可替换指令对是ARM指令对,那么可选通用寄存器组包含可替换指令对不使用的r1至r11中的至少一个。如果可替换指令对是Thumb指令对,那么可选通用寄存器包含可替换指令对不使用的r1至r7中的至少一个。
根据本发明的另一实施例,如果处理器确定在可替换指令对之间插入基于sp的寻址指令;那么处理器进一步用于基于用于等效指令对中的至少一个额外寄存器的数目以及每个额外寄存器的长度来修改基于sp的寻址指令中的偏移值。
在本发明的一个实施例中,二进制文件包括在将加载到计算机系统中的压缩应用文件中,处理器进一步用于:
解开压缩应用文件以定位来自解开后的应用文件的二进制文件;以及在通过用所产生的等效指令对覆盖二进制文件中所识别的可替换指令对来修改解开后的应用文件之后,重新打包修改后的应用文件。
在本发明的另一实施例中,处理器进一步用于:在从二进制文件中识别可替换指令对之前,如果将映射到存储器中的文件具有二进制格式,那么确定将在计算机系统的文件映射过程期间映射到存储器中的文件为二进制文件;以及将二进制文件映射到存储器中。
参考在ARM架构上运行的移动计算机系统描述了前述说明。然而,应了解,本发明的实施例还适合应用于其它平台/操作系统,例如,X86平台,甚至应用于其它安全方向,例如,水印。
如从上文将了解,本发明的实施例提供一种用于防御针对ARM架构上运行的移动计算机系统的基于ROP的攻击的有效方法。本发明的实施例中所揭示的方法能够由想要保护目标应用程序和移动计算机系统免受基于ROP的攻击的任何当事人使用,例如,应用程序开发者、经销商、移动系统开发者以及应用程序的终端用户。对于应用程序经销商,例如,Google Play,其可以在应用程序被下载到用户装置中时执行本发明的方法。对于移动系统开发者,其可以在系统的文件映射过程期间引入用于执行所述方法的若干行额外代码。对于应用程序的终端用户,其可以安装将在目标应用程序的装载过程期间启用本发明的方法的单独应用程序。
本发明的实施例引入一种指令随机化技术,所述指令随机化技术在PUSH指令和POP指令等指令对上执行指令替换,并且用随机化等效指令对覆盖可替换指令对。通过此指令随机化技术,在ARM架构上运行的应用程序和系统能够成功地免受基于ROP的攻击。此外,此指令随机化技术不将额外指令或额外控制流传递引入到二进制文件中,因此指令的长度和二进制文件的大小将保持不变。另外,参考本发明的前述实施例,栈存储器的布局和可替换指令对的内容将同时改变,因此将不需要其它性能代价。
应理解,上文描述的实施例和特征应被视为示例性的且不具有限制性。例如,上述实施例可以彼此组合使用。本领域熟练技术人员根据对本说明书的考量和对本发明的实践将清楚许多其它实施例。因此,本发明的范围应该通过参考所附权利要求书以及此类权利要求书所授予的等效物的完整范围来确定。此外,出于描述明确性的目的使用了某些术语且这些术语不会限制本发明的所揭示实施例。
Claims (19)
1.一种用于防御ROP攻击的方法,其特征在于,所述方法包括:
从二进制文件中识别可替换指令对,所述可替换指令对包含用于将第一组寄存器推动到栈存储器上的第一指令以及用于使所述第一组寄存器从所述栈存储器弹出的第二指令,其中所述第一组寄存器包含至少一个通用寄存器;
产生用于所述可替换指令对的等效指令对,所述等效指令对包含用于将第二组寄存器推动到所述栈存储器上的第一等效指令以及用于使所述第二组寄存器从所述栈存储器弹出的第二等效指令,其中所述第二组寄存器包含所述第一组寄存器以及所述可替换指令对不使用的至少一个额外寄存器;以及
分别用所述第一等效指令和所述第二等效指令覆盖所述第一指令和所述第二指令。
2.根据权利要求1所述的方法,其特征在于,所述产生所述等效指令对的步骤进一步包括:
基于用于所述可替换指令对的可选通用寄存器组确定用于所述可替换指令对的替代指令对组,其中所述可选通用寄存器组根据所述可替换指令对的指令类型来确定,所述可选通用寄存器组不被所述可替换指令对使用;以及
从所确定的替代指令对组中选择随机替代指令对作为所述等效指令对。
3.根据权利要求1所述的方法,其特征在于,所述产生所述等效指令对的步骤进一步包括:
从用于所述可替换指令对的可选通用寄存器组中选择所述至少一个额外寄存器,其中所述可选通用寄存器组根据所述可替换指令对的指令类型来确定,所述可选通用寄存器组不被所述可替换指令对使用;以及
基于选定的至少一个额外寄存器产生所述等效指令对。
4.根据权利要求2或权利要求3所述的方法,其特征在于,如果所述可替换指令对是ARM指令对,那么所述可选通用寄存器组包含所述可替换指令对不使用的r1至r11中的至少一个。
5.根据权利要求2或权利要求3所述的方法,其特征在于,如果所述可替换指令对是Thumb指令对,那么所述可选通用寄存器包含所述可替换指令对不使用的r1至r7中的至少一个。
6.根据权利要求2或权利要求3所述的方法,其特征在于,进一步包括:
确定是否在所述可替换指令对之间插入基于栈指针(stack pointer based,基于sp)的寻址指令;
如果在所述可替换指令对之间插入基于sp的寻址指令,那么基于用于所述等效指令对中的所述至少一个额外寄存器的数目以及每个额外寄存器的长度修改所述基于sp的寻址指令中的偏移值。
7.根据权利要求2或权利要求3所述的方法,其特征在于,所述二进制文件包括在将加载到计算机系统中的压缩应用文件中,所述方法进一步包括:
解开所述压缩应用文件以定位来自所述解开后的应用文件的所述二进制文件;以及
在通过用所产生的等效指令对覆盖所述二进制文件中所识别的所述可替换指令对来修改所述解开后的应用文件之后,重新打包所述修改后的应用文件。
8.根据权利要求2或权利要求3所述的方法,其特征在于,进一步包括:
在从所述二进制文件中识别所述可替换指令对之前,如果将映射到存储器中的文件具有二进制格式,那么确定将在文件映射过程期间映射到所述存储器中的所述文件为所述二进制文件;以及
将所述二进制文件映射到所述存储器中。
9.根据权利要求7所述的方法,其特征在于,所述计算机系统是在ARM架构上运行的移动计算机系统。
10.一种用于防御ROP攻击的系统,其特征在于,所述系统包括:
处理器以及存储器,所述存储器与所述处理器可通信地耦合,用于存储可由所述处理器执行以致使所述处理器执行以下操作的指令:
从二进制文件中识别可替换指令对,所述可替换指令对包含用于将第一组寄存器推动到栈存储器上的第一指令以及用于使所述第一组寄存器从所述栈存储器弹出的第二指令,其中所述第一组寄存器包含至少一个通用寄存器,
产生用于所述可替换指令对的等效指令对,所述等效指令对包含用于将第二组寄存器推动到所述栈存储器上的第一等效指令以及用于使所述第二组寄存器从所述栈存储器弹出的第二等效指令,其中所述第二组寄存器包含所述第一组寄存器以及所述可替换指令对不使用的至少一个额外寄存器,以及
分别用所述第一等效指令和所述第二等效指令覆盖所述第一指令和所述第二指令。
11.根据权利要求10所述的系统,其特征在于,所述处理器进一步用于
根据用于所述可替换指令对的可选通用寄存器组确定用于所述可替换指令对的替代指令对组,其中所述可选通用寄存器组根据所述可替换指令对的指令类型来确定,所述可选通用寄存器组不被所述可替换指令对使用,以及
从所确定的替代指令对组中随机选择替代指令对作为所述等效指令对。
12.根据权利要求10所述的系统,其特征在于,所述处理器进一步用于
从用于所述可替换指令对的可选通用寄存器组中选择所述至少一个额外寄存器,其中所述可选通用寄存器组根据所述可替换指令对的指令类型来确定,所述可选通用寄存器组不被所述可替换指令对使用,以及
基于选定的至少一个额外寄存器产生所述等效指令对。
13.根据权利要求11或权利要求12所述的系统,其特征在于,如果所述可替换指令对是ARM指令对,那么所述可选通用寄存器组包含所述可替换指令对不使用的r1至r11中的至少一个。
14.根据权利要求11或权利要求12所述的系统,其特征在于,如果所述可替换指令对是Thumb指令对,那么所述可选通用寄存器包含所述可替换指令对不使用的r1至r7中的至少一个。
15.根据权利要求11或权利要求12所述的系统,其特征在于,所述处理器进一步用于:
确定是否在所述可替换指令对之间插入基于栈指针(stack pointer based,基于sp)的寻址指令;
如果在所述可替换指令对之间插入基于sp的寻址指令,那么基于用于所述等效指令对中的所述至少一个额外寄存器的数目以及每个额外寄存器的长度修改所述基于sp的寻址指令中的偏移值。
16.根据权利要求11或权利要求12所述的系统,其特征在于,所述二进制文件包括在将加载到计算机系统中的压缩应用文件中,所述处理器进一步用于:
解开所述压缩应用文件以定位来自所述解开后的应用文件的所述二进制文件;以及
在通过用所产生的等效指令对覆盖所述二进制文件中所识别的所述可替换指令对来修改所述解开后的应用文件之后,重新打包所述修改后的应用文件。
17.根据权利要求11或权利要求12所述的系统,其特征在于,所述处理器进一步用于:
在从所述二进制文件中识别所述可替换指令对之前,如果将映射到存储器中的文件具有二进制格式,那么确定将在文件映射过程期间映射到所述存储器中的所述文件为所述二进制文件;以及将所述二进制文件映射到所述存储器中。
18.根据权利要求16所述的系统,其特征在于,所述计算机系统是在ARM架构上运行的移动计算机系统。
19.一种非暂时性计算机可读存储媒体,其特征在于,具有存储于其上的指令,所述指令如果由计算机系统执行致使所述计算机系统执行根据权利要求1至权利要求9中的任一权利要求所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SG10201504066Q | 2015-05-25 | ||
SG10201504066QA SG10201504066QA (en) | 2015-05-25 | 2015-05-25 | Method and system for defense against return oriented programming (rop) based attacks |
PCT/SG2016/050047 WO2016190809A1 (en) | 2015-05-25 | 2016-02-01 | Method and system for defense against return oriented programming (rop) based attacks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106687973A CN106687973A (zh) | 2017-05-17 |
CN106687973B true CN106687973B (zh) | 2019-11-22 |
Family
ID=55398360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680002571.6A Active CN106687973B (zh) | 2015-05-25 | 2016-02-01 | 用于防御基于返回导向编程(rop)的攻击的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20180096139A1 (zh) |
EP (1) | EP3289511B1 (zh) |
CN (1) | CN106687973B (zh) |
SG (1) | SG10201504066QA (zh) |
WO (1) | WO2016190809A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11604873B1 (en) | 2019-12-05 | 2023-03-14 | Marvell Asia Pte, Ltd. | Noisy instructions for side-channel attack mitigation |
US11403101B1 (en) * | 2021-02-25 | 2022-08-02 | Marvell Asia Pte, Ltd. | Introducing noise in threaded execution to mitigate cross-thread monitoring |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663312A (zh) * | 2012-03-20 | 2012-09-12 | 中国科学院信息工程研究所 | 一种基于虚拟机的rop攻击检测方法及系统 |
CN102831339A (zh) * | 2012-07-19 | 2012-12-19 | 北京奇虎科技有限公司 | 一种针对网页的恶意攻击进行防护的方法、装置和浏览器 |
CN104054061A (zh) * | 2012-01-16 | 2014-09-17 | 高通股份有限公司 | 用以禁止返回定向编程的动态执行阻止 |
CN104217157A (zh) * | 2014-07-31 | 2014-12-17 | 珠海市君天电子科技有限公司 | 一种漏洞防利用方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US7080289B2 (en) * | 2001-10-10 | 2006-07-18 | Arm Limited | Tracing multiple data access instructions |
US8839429B2 (en) * | 2011-11-07 | 2014-09-16 | Qualcomm Incorporated | Methods, devices, and systems for detecting return-oriented programming exploits |
US9075693B2 (en) * | 2012-06-27 | 2015-07-07 | Google Inc. | Methods for updating applications |
US9250937B1 (en) * | 2013-11-06 | 2016-02-02 | The Regents Of The University Of California | Code randomization for just-in-time compilers |
-
2015
- 2015-05-25 SG SG10201504066QA patent/SG10201504066QA/en unknown
-
2016
- 2016-02-01 CN CN201680002571.6A patent/CN106687973B/zh active Active
- 2016-02-01 EP EP16705317.2A patent/EP3289511B1/en active Active
- 2016-02-01 WO PCT/SG2016/050047 patent/WO2016190809A1/en active Application Filing
-
2017
- 2017-11-22 US US15/820,857 patent/US20180096139A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104054061A (zh) * | 2012-01-16 | 2014-09-17 | 高通股份有限公司 | 用以禁止返回定向编程的动态执行阻止 |
CN102663312A (zh) * | 2012-03-20 | 2012-09-12 | 中国科学院信息工程研究所 | 一种基于虚拟机的rop攻击检测方法及系统 |
CN102831339A (zh) * | 2012-07-19 | 2012-12-19 | 北京奇虎科技有限公司 | 一种针对网页的恶意攻击进行防护的方法、装置和浏览器 |
CN104217157A (zh) * | 2014-07-31 | 2014-12-17 | 珠海市君天电子科技有限公司 | 一种漏洞防利用方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20180096139A1 (en) | 2018-04-05 |
CN106687973A (zh) | 2017-05-17 |
EP3289511A1 (en) | 2018-03-07 |
WO2016190809A1 (en) | 2016-12-01 |
SG10201504066QA (en) | 2016-12-29 |
EP3289511B1 (en) | 2019-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pappas et al. | Smashing the gadgets: Hindering return-oriented programming using in-place code randomization | |
US9250937B1 (en) | Code randomization for just-in-time compilers | |
US20060253687A1 (en) | Overlapped code obfuscation | |
US8874928B2 (en) | System and method for obfuscating constants in a computer program | |
US9003398B2 (en) | Stochastic method for program security using deferred linking | |
CN106295258B (zh) | 用于多线程后向控制流完整性保护的影子栈实现方法 | |
CN103065069A (zh) | 一种基于壳技术的软件保护方法 | |
US10528729B2 (en) | Methods and systems for defending against cyber-attacks | |
WO2014193523A1 (en) | Intra stack frame randomization for protecting applications against code injection attack | |
Payer et al. | String oriented programming: When ASLR is not enough | |
CN109214180A (zh) | 一种内存代码的校验方法及装置 | |
US8775826B2 (en) | Counteracting memory tracing on computing systems by code obfuscation | |
EP2942727B1 (en) | Return-oriented programming as an obfuscation technique | |
CN109598107A (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
CN108399319A (zh) | 源代码保护方法、应用服务器及计算机可读存储介质 | |
CN106687973B (zh) | 用于防御基于返回导向编程(rop)的攻击的方法和系统 | |
WO2020057603A1 (zh) | 检测堆栈中返回地址被篡改的方法及装置 | |
Müller | ASLR smack & laugh reference | |
US10572666B2 (en) | Return-oriented programming mitigation | |
CN105956425B (zh) | 一种基于smali代码混淆的Android应用保护方法 | |
CN108875321A (zh) | 一种指令集的生成方法、装置和电子设备 | |
CN107506623B (zh) | 应用程序的加固方法及装置、计算设备、计算机存储介质 | |
CN108733990B (zh) | 一种基于区块链的文件保护方法及终端设备 | |
US10282224B2 (en) | Dynamic register virtualization | |
Nurmukhametov et al. | Application of compiler transformations against software vulnerabilities exploitation |
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 |