Method and apparatus for securing indirect function calls by using program counter encoding
First Claim
1. A method for protecting against manipulation of a code pointer to a library function to be called by a program, the method performed by an apparatus comprising a memory onto which the program is loaded and a processor by which the program is executed, the method comprising:
- inserting, by a static linker, a sequence of instructions for decoding an address of the library function into a PLT (Procedure Linkage Table) entry;
storing, by a dynamic linker, an encoded address of the library function into a GOT (Global Offset Table) entry; and
decoding, by the sequence of instructions for decoding inserted in the PLT entry, the encoded address of the library function stored in the GOT entry, when the address of the library function is loaded into the PC (program counter) register of the processor;
wherein the address of the library function is encoded with one or more encoding keys which is generated after the program is loaded onto the memory.
3 Assignments
0 Petitions
Accused Products
Abstract
A method for securing indirect function calls by using program counter encoding is provided. The method includes inserting a decoding code for an address of a library function stored in a GOT (Global Offset Table) entry into a PLT (Procedure Linkage Table) entry when an object file is built; generating an encoding key corresponding to the decoding code; and encoding the GOT entry corresponding to the library function by using the encoding key when program execution begins.
38 Citations
13 Claims
-
1. A method for protecting against manipulation of a code pointer to a library function to be called by a program, the method performed by an apparatus comprising a memory onto which the program is loaded and a processor by which the program is executed, the method comprising:
-
inserting, by a static linker, a sequence of instructions for decoding an address of the library function into a PLT (Procedure Linkage Table) entry; storing, by a dynamic linker, an encoded address of the library function into a GOT (Global Offset Table) entry; and decoding, by the sequence of instructions for decoding inserted in the PLT entry, the encoded address of the library function stored in the GOT entry, when the address of the library function is loaded into the PC (program counter) register of the processor; wherein the address of the library function is encoded with one or more encoding keys which is generated after the program is loaded onto the memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An apparatus comprising a memory that a program is loaded onto and a processor which executes the program and a method for protecting against manipulation of a code pointer to a library function to be called by the program, the method comprising:
-
inserting, by a static linker, a sequence of instructions for decoding an address of the library function into a PLT (Procedure Linkage Table) entry; storing, by a dynamic linker, an encoded address of the library function into a GOT (Global Offset Table) entry; and decoding, by the sequence of instructions for decoding inserted in the PLT entry, the encoded address of the library function stored in the GOT entry, when the address of the library function is loaded into the PC (program counter) register of the processor; wherein the address of the library function is encoded with one or more encoding keys which is generated after the program is loaded onto the memory. - View Dependent Claims (10, 11, 12, 13)
-
Specification