TY - GEN
T1 - StackOFFence
T2 - ITCC 2005 - International Conference on Information Technology: Coding and Computing
AU - Madan, Bharat B.
AU - Phoha, Shashi
AU - Trivedi, Kishor S.
PY - 2005
Y1 - 2005
N2 - Software coding practices, in the interest of efficiency, often ignore to enforce strict bound checking on buffers, arrays and pointers. This results in software code that is more vulnerable to security intrusions exploiting buffer overflow vulnerabilities. Unfortunately, such attacks form the most common type of security threats to the computer and information systems, making it imperative to find efficient solutions for the buffer overflow vulnerabilities. Typically, an attacker is able to affect a successful intrusion by causing buffer overflow in the stack frame of a function call, thereby causing the valid return address to get overwritten by a malicious value. This allows the attacker to redirect the return from a function call to a malicious piece of code introduced by the attacker. Depending on the nature of the malicious code, the attacker is able to compromise availability, integrity, or confidentiality of a system. Researchers have suggested transforming the return address or even using an entirely separate stack for managing the return addresses. This paper describes a simple technique that ensures the integrity of the return address by pushing on the stack two copies of the return address, a transformed (or encrypted) return address value along with the original one. Before popping the return address, two return address values are compared to detect any malicious activity, thus preventing the exploitation of the stack based buffer overflow vulnerabilities. The proposed modification may be implemented at the CPU architecture level or by simple modification to the compiler's prologue and epilogue code.
AB - Software coding practices, in the interest of efficiency, often ignore to enforce strict bound checking on buffers, arrays and pointers. This results in software code that is more vulnerable to security intrusions exploiting buffer overflow vulnerabilities. Unfortunately, such attacks form the most common type of security threats to the computer and information systems, making it imperative to find efficient solutions for the buffer overflow vulnerabilities. Typically, an attacker is able to affect a successful intrusion by causing buffer overflow in the stack frame of a function call, thereby causing the valid return address to get overwritten by a malicious value. This allows the attacker to redirect the return from a function call to a malicious piece of code introduced by the attacker. Depending on the nature of the malicious code, the attacker is able to compromise availability, integrity, or confidentiality of a system. Researchers have suggested transforming the return address or even using an entirely separate stack for managing the return addresses. This paper describes a simple technique that ensures the integrity of the return address by pushing on the stack two copies of the return address, a transformed (or encrypted) return address value along with the original one. Before popping the return address, two return address values are compared to detect any malicious activity, thus preventing the exploitation of the stack based buffer overflow vulnerabilities. The proposed modification may be implemented at the CPU architecture level or by simple modification to the compiler's prologue and epilogue code.
UR - http://www.scopus.com/inward/record.url?scp=24744469440&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=24744469440&partnerID=8YFLogxK
U2 - 10.1109/itcc.2005.260
DO - 10.1109/itcc.2005.260
M3 - Conference contribution
AN - SCOPUS:24744469440
SN - 0769523153
SN - 9780769523156
T3 - International Conference on Information Technology: Coding and Computing, ITCC
SP - 656
EP - 661
BT - Proceedings ITCC 2005 - International Conference on Information Technology
PB - Institute of Electrical and Electronics Engineers Inc.
Y2 - 4 April 2005 through 6 April 2005
ER -