CN112528240A - Password code-oriented automatic program sensitive data protection method - Google Patents

Password code-oriented automatic program sensitive data protection method Download PDF

Info

Publication number
CN112528240A
CN112528240A CN202011402024.1A CN202011402024A CN112528240A CN 112528240 A CN112528240 A CN 112528240A CN 202011402024 A CN202011402024 A CN 202011402024A CN 112528240 A CN112528240 A CN 112528240A
Authority
CN
China
Prior art keywords
code
sensitive
instruction
buffer area
intermediate language
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
CN202011402024.1A
Other languages
Chinese (zh)
Other versions
CN112528240B (en
Inventor
张媛媛
金宣成
肖轩淦
贾淞淋
李卷孺
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.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
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 Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202011402024.1A priority Critical patent/CN112528240B/en
Publication of CN112528240A publication Critical patent/CN112528240A/en
Application granted granted Critical
Publication of CN112528240B publication Critical patent/CN112528240B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

A method for protecting sensitive data of an automatic program facing to a password code comprises the steps of manually marking original key materials and plaintext ciphertext taints on a program source code in advance through a marking statement, and converting the program source code into an LLVM intermediate language code through an LLVM compiler; performing static sensitive data stream analysis aiming at the password code on the LLVM intermediate language code to obtain a sensitive buffer area in the code and a corresponding code for operating the sensitive buffer area; and determining the distribution of a buffer area to be modified and a memory access instruction which needs to be executed in a high-authority state according to a result output in the static analysis stage, carrying out isolation operation on the basis, linking a required runtime library while compiling the intermediate language obtained by conversion, and finally outputting and compiling the binary program obtained by compilation after final protection. The invention can automatically help to determine the data structures and sensitive data such as the derivative key material, the intermediate buffer zone and the like which need to be protected.

Description

Password code-oriented automatic program sensitive data protection method
Technical Field
The invention relates to a technology in the field of information security, in particular to a password code-oriented automatic program sensitive data protection method.
Background
Protecting sensitive data in a program from being leaked by some malicious attackers through a program memory leak is an important task, especially for some programs using cryptographic operations. Memory corruption vulnerabilities are a typical type of vulnerability in system software currently written by C programs. Such attacks can be further classified as control-flow-oriented attacks and data-flow-oriented attacks, depending on the goal of the memory corruption. If the target of the overwriting is program control flow related data, such as function return addresses, function pointers and the like, the attacker is called as control flow-oriented attack; if the target of overwriting or reading is program non-control flow related data, such as a cryptographic key or identity authentication related data, the attacker is called a data flow-oriented attack, which typically represents, for example, CVE-2014-.
For attacks facing control flow related data, mature and widely applied defense mechanisms are available at present. For attacks facing non-control-flow related data, the current protection schemes are not mature enough.
The protection of the non-control flow related data in the program is realized through memory isolation. The memory isolation can be further divided into inter-process memory isolation and intra-process memory isolation, and the intra-process memory isolation can achieve light-weight high-efficiency fine granularity. For memory isolation within a process, there have been many prior art techniques that provide support for basic primitives of isolation, but the prior art techniques do not enable automated identification of sensitive data. In fact, developers cannot well utilize memory isolation primitives to isolate sensitive data in programs, such as potentially sensitive data generated in cryptographic program logic, because this is a complex and cumbersome task and manual implementation would be extremely prone to omissions or errors.
Disclosure of Invention
Aiming at the defects in the prior art, the invention provides a sensitive data protection method of an automatic program facing to a password code, which can automatically help a password program developer to determine other data structures such as derivative key materials and intermediate buffer zones which need to be protected under the conditions of marking original key materials and inputting plaintext/ciphertext, isolate sensitive data appearing in the life cycle of the whole program in operation through intermediate language code conversion, and finally output a target binary program.
The invention is realized by the following technical scheme:
the invention relates to a password code-oriented automatic program sensitive data protection method, which comprises the steps of manually marking original key materials and plaintext ciphertext taints on a program source code in advance through a marking statement, and then converting the program source code into an LLVM intermediate language code through an LLVM compiler; then, analyzing a static sensitive data stream aiming at the password code on the LLVM intermediate language code to obtain a sensitive buffer area in the code and a corresponding code for operating the sensitive buffer area; and finally, determining the distribution of a buffer area to be modified and a memory access instruction which needs to be executed in a high-authority state according to a result output in the static analysis stage, carrying out isolation operation on the basis, linking a required runtime library while compiling the intermediate language obtained by conversion, and finally outputting and compiling the binary program to obtain the final protected binary program.
The invention relates to a system for realizing the method, which comprises the following steps: preprocessing unit, static analysis unit, intermediate language code conversion unit and binary program output unit facing to the code, wherein: the preprocessing unit is connected with the static analysis unit facing the password code and transmits LLVM byte code files marked with original key materials and plaintext ciphertext taints, the static analysis unit facing the password code is connected with the intermediate language code conversion unit and transmits operation instruction information of a code sensitive buffer area and the sensitive buffer area obtained through analysis, the intermediate language code conversion unit is connected with the binary program output unit and transmits byte code files which are isolated from the sensitive buffer area, and the binary program output unit outputs the binary files obtained through final compilation.
Technical effects
The invention integrally solves the problem that the prior art cannot realize automatic identification and protect sensitive data in the password code. Compared with the prior art, the method and the device can automatically identify and protect the sensitive data in the password code, and isolate the identified sensitive data in a data isolation mode in the process.
Drawings
FIG. 1 is a flow chart of the present invention;
FIG. 2 is a schematic view of spot marking at a pre-treatment stage;
FIG. 3 is a diagram illustrating context modification signature and deduplication according to an embodiment.
Detailed Description
The present embodiment is implemented on the LLVM version 7.0 framework and chooses Intel MPK as the hardware primitive to use. Given target source code containing cryptographic operations, as shown in fig. 1, the present embodiment relates to a method for protecting sensitive data of an automation program oriented to cryptographic codes, including: preprocessing stage, static analysis stage oriented to cipher code, intermediate language code conversion stage and binary program output stage, in which:
as shown in fig. 2, the preprocessing stage is: and correspondingly marking original key materials in the program and input plaintext/ciphertext on the source code, and converting the target source code into an LLVM intermediate language code form through an LLVM compiler.
The mark comprises: the developer marks key taints in the code for the buffer storing the original key material by the # pragmatastertitent, a pre-compiled instruction customized at the Clang front end; the developer marks the exclusive taint of plaintext and ciphertext for the input plaintext/ciphertext buffer in the password operation through the # pragmataster sinktaint. As shown in fig. 2, the key dirty is marked for the input key of the encryption operation, and the plaintext and ciphertext is marked for the input plaintext and muted mutually exclusive.
The static analysis stage for the password code specifically comprises the following steps:
spreading cipher code key taint and mutual exclusion taint: in a cryptographic program, the output ciphertext and the input ciphertext are generally said to be non-sensitive. The secret key taint and the plaintext ciphertext mutual exclusion taint are independently propagated. The variable marked with the key taint is regarded as a variable possibly carrying sensitive data, and the variable marked with the plaintext and ciphertext mutual exclusion taint is regarded as a non-sensitive data variable. The invention carries out abstract interpretation on the program, the cleartext ciphertext mutual exclusion taint can complete taint propagation, and the key taint can stop propagation when propagating to the variable marked with the cleartext ciphertext mutual exclusion taint at the same time, which specifically comprises the following steps: and when an abstract object simultaneously carries the key taint and the plaintext ciphertext mutual exclusion taint, stopping spreading the key taint.
Identifying a sensitive buffer for storing sensitive data: for the buffer with the key dirty, it is considered as a sensitive buffer and needs to be isolated, i.e. the intermediate language instruction and the context information for distributing the variable are recorded.
Identifying sensitive buffer operation codes: whether an abstract object corresponding to an instruction operand carries a key taint or not is analyzed to determine whether the instruction is a sensitive buffer area operation code or not, privilege modification is carried out in a later intermediate language code conversion stage, and a sensitive buffer area in the code and a corresponding code for operating the sensitive buffer area are output.
The sensitive buffer operation code comprises: sensitive buffer allocation code and sensitive buffer access code, wherein: the sensitive buffer area allocation codes are modified in a redistribution mode in an LLVM intermediate language code conversion stage; the sensitive buffer access code is a trusted code which needs to be accessed to the sensitive buffer in the code, and the sensitive buffer after the isolated operation is accessed by a non-privileged instruction, so that the sensitive buffer is broken down.
The intermediate language code conversion stage: determining the allocation of a buffer area to be modified and a memory access instruction which needs to be executed in a high-authority state according to a result output by the static analysis stage, and performing isolation operation on the basis, wherein the method specifically comprises the following steps:
i) function copy and call target replacement: copying an original function for each context to be modified except the entry point function, and performing all subsequent modifications on the newly copied function; after copying, the call relation between functions needs to be maintained;
ii) stack allocation replacement: modifying the sensitive buffer allocation instruction identified by the static analysis stage, allocating the sensitive buffer allocation instruction to a memory page which is supported by a specific hardware primitive and has high authority, namely can be accessed only by the privileged instruction, and releasing the memory page by a corresponding release function;
the modification comprises the allocation and the release of the sensitive information data structure.
iii) instruction privileged: for a sensitive buffer access instruction, modifying the access instruction into a privileged instruction which is supported by a specific hardware primitive and allows access to a high-authority memory;
iv) merging and de-duplicating the same function context as the context modification scheme: in the static analysis stage, the calls of the same function under different call paths are treated as different contexts, so the number of contexts generated in the analysis may be much larger than the number of functions. If a modified function is generated for each context, the program volume is greatly increased, so that the duplication is combined and removed, specifically, a modification scheme corresponding to the context is collected, and the function copy is performed only once without performing multiple copies for the contexts with the same modification scheme. The effect of signature modification deduplication is as exemplified in fig. 3, for example, for there would otherwise be three copies of the xreadline function, it would be reduced to only two copies of the xreadline function.
The modification scheme specifically comprises the following types of modifications: 1) modification type one: a function call instruction of which the target function needs to be modified is called because the call target relates to sensitive data operation; 2) and modification type two: for a calling instruction of a sensitive memory allocation and release function, a high authority is required to be given before the instruction is executed, and the high authority is cancelled after the instruction is executed and replaced by a corresponding sensitive memory allocation/release function; 3) modification type three: a library function call instruction related to accessing a sensitive memory area is endowed with high access authority before calling, and a cancel authority is called; 4) and the modification type is four: memory read and write instructions related to sensitive memory areas, such as load and store instructions in LLVM, require high permission to be given before instruction execution and cancellation permission to be given after instruction execution.
The allocation and release instructions include a stack allocation instruction alloca and heap memory manager functions malloc and free.
The binary program output stage is as follows: and compiling the intermediate language obtained after the isolation operation, and simultaneously linking a required runtime library, and finally outputting and compiling to obtain a final protected binary program.
Through specific practical experiments, the hardware is set as follows: the dual Intel Xeon Gold 5122 processor, 128GB memory, 1TB solid state disk, software settings are as follows: under the environment setting of a Ubuntu 18.04.2LTS (GNU/Linux 4.15.0-45-genetic x86_64) and LLVM 7.0 compiler, the method of the invention is operated on cipher libraries or programs such as ccrypt, OpenSSL, libsodium, libhydrogen and the like, and the result shows that the rewriting of the cipher code to be protected can be completed within 8 minutes at most, and the operation cost of the protected program is not more than 7% at most. The protection effect of the embodiment is verified by further manual analysis and confirmation of the protected output program.
Compared with the prior art that the automatic identification and protection of the potential sensitive data generated in the logic of the password program cannot be realized, the method and the device can effectively and automatically identify and protect the sensitive data of the password program, and the performance overhead of the protected program during running is considerable.
The foregoing embodiments may be modified in many different ways by those skilled in the art without departing from the spirit and scope of the invention, which is defined by the appended claims and all changes that come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.

Claims (7)

1. A method for protecting sensitive data of an automatic program facing to a password code is characterized in that original key materials and plaintext ciphertext taints are marked manually on a program source code in advance through a marking statement, and then the program source code is converted into an LLVM intermediate language code through an LLVM compiler; then, analyzing a static sensitive data stream aiming at the password code on the LLVM intermediate language code to obtain a sensitive buffer area in the code and a corresponding code for operating the sensitive buffer area; and finally, determining the distribution of a buffer area to be modified and a memory access instruction which needs to be executed in a high-authority state according to a result output in the static analysis stage, carrying out isolation operation on the basis, linking a required runtime library while compiling the intermediate language obtained by conversion, and finally outputting and compiling the binary program to obtain the final protected binary program.
2. The method of claim 1, wherein the marking comprises: the method comprises the steps of marking a buffer area for storing original key materials with key taint through a # pragma taintertaint precompiled instruction in a code, and marking plaintext/ciphertext buffer area with plaintext/ciphertext exclusive taint through a # pragma tainer sinktaint in the cryptographic operation.
3. The method for protecting sensitive data of an automation program facing to a password code as claimed in claim 1, wherein the static sensitive data stream analysis for the password code specifically includes:
spreading cipher code key taint and mutual exclusion taint: when an abstract object simultaneously carries the key taint and the plaintext ciphertext mutual exclusion taint, stopping spreading the key taint;
identifying a sensitive buffer for storing sensitive data: regarding the buffer area with the key taint as a sensitive buffer area and needing isolation, namely recording the intermediate language instruction and the context information for distributing the variable;
identifying sensitive buffer operation codes: whether an abstract object corresponding to an instruction operand carries a key taint or not is analyzed to determine whether the instruction is a sensitive buffer area operation code or not, privilege modification is carried out in a later intermediate language code conversion stage, and a sensitive buffer area in the code and a corresponding code for operating the sensitive buffer area are output.
4. The method of claim 1, wherein the code that operates on the sensitive buffer comprises: sensitive buffer allocation code and sensitive buffer access code, wherein: the sensitive buffer area allocation codes are modified in a redistribution mode in an LLVM intermediate language code conversion stage; the sensitive buffer access code is a trusted code which needs to be accessed to the sensitive buffer in the code, and the sensitive buffer after the isolated operation is accessed by a non-privileged instruction, so that the sensitive buffer is broken down.
5. The method for protecting sensitive data of an automation program facing to a cryptographic code as in claim 1 or 4, wherein the isolation operation specifically comprises:
i) function copy and call target replacement: copying an original function for each context to be modified except the entry point function, and performing all subsequent modifications on the newly copied function; after copying, the call relation between functions needs to be maintained;
ii) stack allocation replacement: modifying the sensitive buffer allocation instruction identified by the static analysis stage, allocating the sensitive buffer allocation instruction to a memory page which is supported by a specific hardware primitive and has high authority, namely can be accessed only by the privileged instruction, and releasing the memory page by a corresponding release function;
the modification comprises the allocation and release of a sensitive information data structure;
iii) instruction privileged: for a sensitive buffer access instruction, modifying the access instruction into a privileged instruction which is supported by a specific hardware primitive and allows access to a high-authority memory;
iv) merging and de-duplicating the same function context as the context modification scheme: and collecting a modification scheme corresponding to the context, and only performing one-time function copy on the context with the same modification scheme without performing multiple copies.
6. The method for protecting sensitive data of an automated cryptographic program as claimed in claim 5, wherein said modification scheme comprises the following types of modifications: 1) modification type one: a function call instruction of which the target function needs to be modified is called because the call target relates to sensitive data operation; 2) and modification type two: for a calling instruction of a sensitive memory allocation and release function, a high authority is required to be given before the instruction is executed, and the high authority is cancelled after the instruction is executed and replaced by a corresponding sensitive memory allocation/release function; 3) modification type three: a library function call instruction related to accessing a sensitive memory area is endowed with high access authority before calling, and a cancel authority is called; 4) and the modification type is four: memory read and write instructions related to sensitive memory areas, such as load and store instructions in LLVM, require high permission to be given before instruction execution and cancellation permission to be given after instruction execution.
7. A system for implementing the method of any preceding claim, comprising: preprocessing unit, static analysis unit, intermediate language code conversion unit and binary program output unit facing to the code, wherein: the preprocessing unit is connected with the static analysis unit facing the password code and transmits LLVM byte code files marked with original key materials and plaintext ciphertext taints, the static analysis unit facing the password code is connected with the intermediate language code conversion unit and transmits operation instruction information of a code sensitive buffer area and the sensitive buffer area obtained through analysis, the intermediate language code conversion unit is connected with the binary program output unit and transmits byte code files which are isolated from the sensitive buffer area, and the binary program output unit outputs the binary files obtained through final compilation.
CN202011402024.1A 2020-12-02 2020-12-02 Password code-oriented automatic program sensitive data protection method Active CN112528240B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011402024.1A CN112528240B (en) 2020-12-02 2020-12-02 Password code-oriented automatic program sensitive data protection method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011402024.1A CN112528240B (en) 2020-12-02 2020-12-02 Password code-oriented automatic program sensitive data protection method

Publications (2)

Publication Number Publication Date
CN112528240A true CN112528240A (en) 2021-03-19
CN112528240B CN112528240B (en) 2022-08-09

Family

ID=74997416

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011402024.1A Active CN112528240B (en) 2020-12-02 2020-12-02 Password code-oriented automatic program sensitive data protection method

Country Status (1)

Country Link
CN (1) CN112528240B (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190450A (en) * 2021-05-08 2021-07-30 航天中认软件测评科技(北京)有限责任公司 Automatic software testing system and testing method thereof
CN114282226A (en) * 2021-12-31 2022-04-05 上海交通大学 Single-time multi-bug code detection method and system
CN114282226B (en) * 2021-12-31 2024-05-28 上海交通大学 Single multi-vulnerability code detection method and system

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080163382A1 (en) * 2007-01-03 2008-07-03 International Business Machines Corporation Method and system for protecting sensitive data in a program
CN103729295A (en) * 2013-12-31 2014-04-16 北京理工大学 Method for analyzing taint propagation path
CN105279091A (en) * 2015-11-19 2016-01-27 中国人民大学 According-to-requirement tracking method based on dynamic taint analysis and device thereof
US9477461B1 (en) * 2014-03-12 2016-10-25 Cloud Linux Zug GmbH Systems and methods for generating and applying operating system live updates
CN107358099A (en) * 2017-06-09 2017-11-17 南京邮电大学 Useless change quantity measuring method based on LLVM intermediate representation program microtomies
CN109918903A (en) * 2019-03-06 2019-06-21 西安电子科技大学 A kind of program non-control attack guarding method based on LLVM compiler
US10698668B1 (en) * 2018-05-29 2020-06-30 Amazon Technologies, Inc. Custom code transformations during compilation process
CN111859388A (en) * 2020-06-30 2020-10-30 广州大学 Multi-level mixed vulnerability automatic mining method
CN112016099A (en) * 2020-10-26 2020-12-01 中国人民解放军国防科技大学 Method and system for analyzing static taint among binary program processes

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080163382A1 (en) * 2007-01-03 2008-07-03 International Business Machines Corporation Method and system for protecting sensitive data in a program
CN103729295A (en) * 2013-12-31 2014-04-16 北京理工大学 Method for analyzing taint propagation path
US9477461B1 (en) * 2014-03-12 2016-10-25 Cloud Linux Zug GmbH Systems and methods for generating and applying operating system live updates
CN105279091A (en) * 2015-11-19 2016-01-27 中国人民大学 According-to-requirement tracking method based on dynamic taint analysis and device thereof
CN107358099A (en) * 2017-06-09 2017-11-17 南京邮电大学 Useless change quantity measuring method based on LLVM intermediate representation program microtomies
US10698668B1 (en) * 2018-05-29 2020-06-30 Amazon Technologies, Inc. Custom code transformations during compilation process
CN109918903A (en) * 2019-03-06 2019-06-21 西安电子科技大学 A kind of program non-control attack guarding method based on LLVM compiler
CN111859388A (en) * 2020-06-30 2020-10-30 广州大学 Multi-level mixed vulnerability automatic mining method
CN112016099A (en) * 2020-10-26 2020-12-01 中国人民解放军国防科技大学 Method and system for analyzing static taint among binary program processes

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
李卷儒等: "二进制代码隐秘功能的安全性验证", 《全国计算机安全学术交流会论文集(第二十三卷)》 *
李卷儒等: "二进制代码隐秘功能的安全性验证", 《全国计算机安全学术交流会论文集(第二十三卷)》, 12 October 2018 (2018-10-12) *
汪雷: "基于LLVM中间表示的缺陷静态分析工具实现", 《中国优秀硕士学位论文数据库 信息科技辑》 *
汪雷: "基于LLVM中间表示的缺陷静态分析工具实现", 《中国优秀硕士学位论文数据库 信息科技辑》, no. 4, 15 April 2018 (2018-04-15) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190450A (en) * 2021-05-08 2021-07-30 航天中认软件测评科技(北京)有限责任公司 Automatic software testing system and testing method thereof
CN114282226A (en) * 2021-12-31 2022-04-05 上海交通大学 Single-time multi-bug code detection method and system
CN114282226B (en) * 2021-12-31 2024-05-28 上海交通大学 Single multi-vulnerability code detection method and system

Also Published As

Publication number Publication date
CN112528240B (en) 2022-08-09

Similar Documents

Publication Publication Date Title
Liljestrand et al. {PAC} it up: Towards pointer integrity using {ARM} pointer authentication
US10838758B2 (en) System and method for self-protecting data
Jang et al. SafeDispatch: Securing C++ Virtual Calls from Memory Corruption Attacks.
Sinha et al. A design and verification methodology for secure isolated regions
Younan et al. Runtime countermeasures for code injection attacks against C and C++ programs
US9536111B2 (en) Secure processing unit systems and methods
EP3746921B1 (en) Systems and methods for policy linking and/or loading for secure initialization
Kirth et al. PKRU-Safe: Automatically locking down the heap between safe and unsafe languages
CN103620613A (en) System and method for virtual machine monitor based anti-malware security
TW201941049A (en) Systems and methods for transforming instructions for metadata processing
CN112639778A (en) Pointer authentication and dynamic switching between pointer authentication schemes
WO2008002350A1 (en) Securing software by enforcing data flow integrity
Saito et al. A survey of prevention/mitigation against memory corruption attacks
Payer et al. String oriented programming: When ASLR is not enough
Nyman et al. Hardscope: Thwarting DOP with hardware-assisted run-time scope enforcement
US10089223B1 (en) Memory categorization
Nagarajan et al. Dynamic information flow tracking on multicores
Shen et al. To isolate, or to share? That is a question for Intel SGX
CN112528240B (en) Password code-oriented automatic program sensitive data protection method
WO2016126206A1 (en) Method for obfuscation of code using return oriented programming
Geden et al. RegGuard: Leveraging CPU registers for mitigation of control-and data-oriented attacks
Novković A Taxonomy of Defenses against Memory Corruption Attacks
Huang et al. Fast Out-of-Band Data Integrity Monitor to Mitigate Memory Corruption Attacks
Chen Defending In-process Memory Abuse with Mitigation and Testing
Saito et al. Safe trans loader: mitigation and prevention of memory corruption attacks for released binaries

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