Poseidon: Hardware Support for Buffer Overflow Attacks

dc.contributor.advisorAlex G Dean, Committee Memberen_US
dc.contributor.advisorFrank Mueller, Committee Memberen_US
dc.contributor.advisorThomas M Conte, Committee Memberen_US
dc.contributor.advisorGregory T Byrd, Committee Chairen_US
dc.contributor.authorVaidyanathan, Anuradhaen_US
dc.date.accessioned2010-04-02T18:13:06Z
dc.date.available2010-04-02T18:13:06Z
dc.date.issued2003-09-06en_US
dc.degree.disciplineComputer Engineeringen_US
dc.degree.levelthesisen_US
dc.degree.nameMSen_US
dc.description.abstractStack smashing attacks were the most exploited security vulnerability in the past decade, according to CERT. Using a method called stack smashing, a malicious user overflows a buffer in the stack frame, overwriting critical stack state. The return address of the current function, which is saved in the function's stack frame, is overwritten when the buffer overflows. The new return address points to the attacker's code. So, when the function is exited, control is transferred to the attacker's code instead of back to the calling function. A common way to prevent overflow-based stack smashing is to insert bounds checking code or insert sentinel values on the stack, but this requires recompilation. We propose a hardware-based method that does not require recompilation, based on the idea that an attack of this kind produces an unexpected return address. The processor maintains a separate hardware stack, called the shadow stack, and monitors the dynamic instruction stream for subroutine calls and returns. When a call instruction is retired, its return address is pushed on the shadow stack. When a return instruction is retired, the address at the top of the shadow stack is popped and compared to the target of the return instruction. If the addresses differ, then the conventional subroutine call/return semantics have been violated. This may truly be an attack, or it may be a legitimate program construct (e.g., setjmp()/longjmp()) that also violates call/return semantics. Legitimate cases are distinguished from attacks by recording the stack pointer along with the return address at the time of a call: when a subroutine returns, the stack pointer appears consistent in the case of an attack but not in the case of setjmp()/longjmp(). There are three distinct parts to the evaluation of the usefulness and the practicality of this idea. The first part is identifying the generality of this solution. This means that we seek to answer the question: "Do we detect all forms of buffer overflow attacks without raising unnecessary false positives in the case of legal program constructs?" The second part is the actual design details of such a stack and the amount of state that needs to be recorded to facilitate the generality described above. The third part is the actual recovery mechanism that could take the form of exceptions raised that could be further handled by the Operating System. This thesis answers the generality and design questions in entirety while laying a solid basic understanding and initial set of experiments for the recovery scheme that could be utilized.en_US
dc.identifier.otheretd-07302002-140923en_US
dc.identifier.urihttp://www.lib.ncsu.edu/resolver/1840.16/2403
dc.rightsI hereby certify that, if appropriate, I have obtained and attached hereto a written permission statement from the owner(s) of each third party copyrighted matter to be included in my thesis, dissertation, or project report, allowing distribution as specified below. I certify that the version I submitted is the same as that approved by my advisory committee. I hereby grant to NC State University or its agents the non-exclusive license to archive and make accessible, under the conditions specified below, my thesis, dissertation, or project report in whole or in part in all forms of media, now or hereafter known. I retain all other ownership rights to the copyright of the thesis, dissertation or project report. I also retain the right to use in future works (such as articles or books) all or part of this thesis, dissertation, or project report.en_US
dc.subjectsecurityen_US
dc.subjectmicroarchitecutreen_US
dc.subjectbuffer overflowen_US
dc.titlePoseidon: Hardware Support for Buffer Overflow Attacksen_US

Files

Original bundle

Now showing 1 - 1 of 1
No Thumbnail Available
Name:
etd.pdf
Size:
184.06 KB
Format:
Adobe Portable Document Format

Collections