A software tool to protect executable files from buffer overflow attacks

Software systems are becoming more vulnerable to security breaches that might cause serious threats to information systems. Amid this evolving trend, one of the well-known and widely spreading security threats is the so called buffer overflow attack. If successful, such an attack executes an arbitrary code with the same access privileges as the attacked process. In this paper, we propose a new approach that aims at remedying the buffer overflow attacks by protecting function return addresses in the stack from being overwritten. Unlike other approaches, our proposed approach aims at detecting and fixing buffer overflow vulnerabilities in the executable files. In retrospect, the work presents a tool that can be used to convert a vulnerable program into a safe version that can be protected against buffer overflow attacks. We used a set of microbenchmarks to verify the operation of the developed tool and to assess the processing time overhead.

[1]  Angelos D. Keromytis,et al.  A Dynamic Mechanism for Recovering from Buffer Overflow Attacks , 2005, ISC.

[2]  John Wilander,et al.  A Comparison of Publicly Available Tools for Static Intrusion Prevention , 2002 .

[3]  Daniel M. Roy,et al.  A dynamic technique for eliminating buffer overflow vulnerabilities (and other memory errors) , 2004, 20th Annual Computer Security Applications Conference.

[4]  Michael Shuey,et al.  StackGhost: Hardware Facilitated Stack Protection , 2001, USENIX Security Symposium.

[5]  Steve J. Chapin,et al.  Type-Assisted Dynamic Buffer Overflow Detection , 2002, USENIX Security Symposium.

[6]  Jun Xu,et al.  Architecture Support for Defending Against Buffer Overflow Attacks , 2002 .

[7]  Tzi-cker Chiueh,et al.  RAD: a compile-time solution to buffer overflow attacks , 2001, Proceedings 21st International Conference on Distributed Computing Systems.

[8]  Frank Piessens,et al.  ValueGuard: Protection of Native Applications against Data-Only Buffer Overflows , 2010, ICISS.

[9]  Sahel Alouneh,et al.  Stack Memory Buffer Overflow Protection based on Duplication and Randomization , 2013, EUSPN/ICTH.

[10]  Changzhen Hu,et al.  Defeating buffer overflow attacks via virtualization , 2014, Comput. Electr. Eng..

[11]  André Zúquete STACKFENCES: A Run-Time Approach for Detecting Stack Overflows , 2004, ICETE.

[12]  Daniel C. DuVarney,et al.  Automatic Synthesis of Filters to Discard Buffer Overflow Attacks: A Step Towards Realizing Self-Healing Systems , 2005, USENIX Annual Technical Conference, General Track.

[13]  Hee Beng Kuan Tan,et al.  Techniques for Defending from Buffer Overflow Vulnerability Security Exploits , 2011 .

[14]  Carla E. Brodley,et al.  SmashGuard: A Hardware Solution to Prevent Security Attacks on the Function Return Address , 2006, IEEE Transactions on Computers.

[15]  John Johansen,et al.  PointGuard™: Protecting Pointers from Buffer Overflow Vulnerabilities , 2003, USENIX Security Symposium.

[16]  Crispan Cowan,et al.  StackGuard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks , 1998, USENIX Security Symposium.

[17]  Wouter Joosen,et al.  Instruction-level countermeasures against stack-based buffer overflow attacks , 2009, VDTS '09.

[18]  Navjot Singh,et al.  Transparent Run-Time Defense Against Stack-Smashing Attacks , 2000, USENIX Annual Technical Conference, General Track.

[19]  Tzi-cker Chiueh,et al.  A Binary Rewriting Defense Against Stack based Buffer Overflow Attacks , 2003, USENIX Annual Technical Conference, General Track.

[20]  Gyungho Lee,et al.  Encoding Function Pointers and Memory Arrangement Checking against Buffer Overflow Attack , 2002, ICICS.