System and method for program stack security
AssigneeAT&T Intellectual Property II, L.P.
InventorMichael L. Asher
Life of this patent
Estimating the term…
Abstract
A system having a processor receiving a copy of a program and modifying the copy to create a modified program and a memory including a memory stack, the modified program being stored in the memory stack, wherein a first image of the memory stack storing the modified program is different from a second image of the memory stack storing the copy of the program.
Claims14
A method for preventing a buffer overrun attack, comprising:
- receiving a plurality of function return addresses for a program;
- generating a random number used for each function call within the program;
- creating a randomized function return address for each of the function return addresses by identically offsetting each of the function return addresses with only the random number at an installation time of the program;
- and
- storing the randomized function return addresses in a memory stack;
- wherein the offsetting the function return address comprises prior to storing the randomized function return addresses, subtracting the random number from the function return address;
- determining the function return address by performing an inverse operation on the randomized function return address corresponding to the offsetting;
- storing the random number in a fixed memory location thereby preventing the buffer overrun attack.
A method for preventing a buffer overrun attack, comprising:
- searching an executable program file for occurrences of a jump address;
- generating a random number used for each function call in the program;
- identically offsetting each occurrence of jump addresses with only the random number to create randomized jump addresses in a modified executable file at an installation time of the executable program;
- and
- storing the modified executable program file;
- wherein the offsetting the function return address comprises prior to storing the randomized function return addresses, subtracting the random number from the function return address;
- determining the function return address by performing an inverse operation on the randomized function return address corresponding to the offsetting;
- storing the random number in a fixed memory location thereby preventing the buffer overrun attack.
A system for preventing a buffer overrun attack, comprising:
- a memory including a stack portion;
- and
- a processor executing program, wherein, when the processor makes a function call within the program, generating a random number used for each function call within the program;
- the processor stores a plurality of randomized function return addresses in the stack portion of the memory, wherein the processor creates the randomized function return addresses by identically offsetting a plurality of function return addresses only with the random number that is generated when the program is invoked;
- wherein the offsetting the function return address comprises prior to storing the randomized function return addresses, subtracting the random number from the function return address;
- determining the function return address by performing an inverse operation on the randomized function return address corresponding to the offsetting;
- storing the random number in a fixed memory location thereby preventing the buffer overrun attack.
A non-transitory computer readable storage medium with an executable program stored thereon, wherein the executable program instructs a processor to perform operations for preventing a buffer overrun attack, comprising:
- receiving a plurality of function return addresses for a program;
- generating a random number used for each function call within the program;
- creating a randomized function return address for each of the return addresses by identically offsetting each of the function return addresses only with the random number at an installation time of the program;
- and
- storing the randomized function return addresses in a memory stack;
- wherein the offsetting the function return address comprises prior to storing the randomized function return addresses, subtracting the random number from the function return address;
- determining the function return address by performing an inverse operation on the randomized function return address corresponding to the offsetting;
- storing the random number in a fixed memory location thereby preventing the buffer overrun attack.
Dependencies are inferred from the claim text.