Pointguard: method and system for protecting programs against pointer corruption attacks
First Claim
1. A method of protecting a computer program against pointer corruption attacks, the method comprising the steps of:
- encrypting a value of a pointer each time the value of the pointer is modified; and
decrypting the encrypted value of the pointer before use each time the pointer is read.
21 Assignments
0 Petitions
Accused Products
Abstract
To protect computer programs against security attacks that attempt to corrupt pointers within the address space of the program, the value of a pointer is encrypted each time the pointer is initialized or modified, and then the value is decrypted before use, i.e., each time the pointer is read. Preferably, the encrypting and decrypting steps are effected by instructions generated by a compiler during compilation of the program. One convenient method of implementing the encrypting and decrypting steps is by XOR'"'"'ing the pointer with a predetermined encryption key value, which could be specially selected or selected at random.
93 Citations
10 Claims
-
1. A method of protecting a computer program against pointer corruption attacks, the method comprising the steps of:
-
encrypting a value of a pointer each time the value of the pointer is modified; and
decrypting the encrypted value of the pointer before use each time the pointer is read. - View Dependent Claims (2, 3, 4, 5, 6, 7, 9)
-
-
8. A method according to claim I wherein instructions to implement said encryption and decryption steps are inserted by a compiler in the context of an architecture-dependent representation by transforming instructions to load pointer values from memory into registers to add the decryption instructions, and transform the saving of pointer values from registers to memory to add the encryption instructions.
-
10. A method of protecting a computer program against pointer corruption attacks while employing a shared library, the method comprising the steps of:
-
in the library, responsive to a function call, exporting at least two versions of the called function, including a first version and a second version, wherein one of the first and second versions effects pointer protection by encrypting a value of a pointer each time the value of the pointer is modified; and
decrypting the encrypted value of the pointer each time the pointer is read.
-
Specification