Failure-Oblivious Computing and Boundless Memory Blocks

Memory errors are a common cause of incorrect software execution and security vulnerabilities. We have developed two new techniques that help software continue to execute successfully through memory errors: failure-oblivious computing and boundless memory blocks. The foundation of both techniques is...

Full description

Bibliographic Details
Main Author: Rinard, Martin C.
Format: Article
Language:English
Published: 2005
Subjects:
Online Access:http://hdl.handle.net/1721.1/7505
_version_ 1826206232664342528
author Rinard, Martin C.
author_facet Rinard, Martin C.
author_sort Rinard, Martin C.
collection MIT
description Memory errors are a common cause of incorrect software execution and security vulnerabilities. We have developed two new techniques that help software continue to execute successfully through memory errors: failure-oblivious computing and boundless memory blocks. The foundation of both techniques is a compiler that generates code that checks accesses via pointers to detect out of bounds accesses. Instead of terminating or throwing an exception, the generated code takes another action that keeps the program executing without memory corruption. Failure-oblivious code simply discards invalid writes and manufactures values to return for invalid reads, enabling the program to continue its normal execution path. Code that implements boundless memory blocks stores invalid writes away in a hash table to return as the values for corresponding out of bounds reads. he net effect is to (conceptually) give each allocated memory block unbounded size and to eliminate out of bounds accesses as a programming error. We have implemented both techniques and acquired several widely used open source servers (Apache, Sendmail, Pine, Mutt, and Midnight Commander).With standard compilers, all of these servers are vulnerable to buffer overflow attacks as documented at security tracking web sites. Both failure-oblivious computing and boundless memory blocks eliminate these security vulnerabilities (as well as other memory errors). Our results show that our compiler enables the servers to execute successfully through buffer overflow attacks to continue to correctly service user requests without security vulnerabilities.
first_indexed 2024-09-23T13:26:11Z
format Article
id mit-1721.1/7505
institution Massachusetts Institute of Technology
language English
last_indexed 2024-09-23T13:26:11Z
publishDate 2005
record_format dspace
spelling mit-1721.1/75052019-04-12T08:40:30Z Failure-Oblivious Computing and Boundless Memory Blocks Rinard, Martin C. Memory Errors Buffer Overflow Attacks Failure-Oblivious Computing Acceptability-Oriented Computing Memory errors are a common cause of incorrect software execution and security vulnerabilities. We have developed two new techniques that help software continue to execute successfully through memory errors: failure-oblivious computing and boundless memory blocks. The foundation of both techniques is a compiler that generates code that checks accesses via pointers to detect out of bounds accesses. Instead of terminating or throwing an exception, the generated code takes another action that keeps the program executing without memory corruption. Failure-oblivious code simply discards invalid writes and manufactures values to return for invalid reads, enabling the program to continue its normal execution path. Code that implements boundless memory blocks stores invalid writes away in a hash table to return as the values for corresponding out of bounds reads. he net effect is to (conceptually) give each allocated memory block unbounded size and to eliminate out of bounds accesses as a programming error. We have implemented both techniques and acquired several widely used open source servers (Apache, Sendmail, Pine, Mutt, and Midnight Commander).With standard compilers, all of these servers are vulnerable to buffer overflow attacks as documented at security tracking web sites. Both failure-oblivious computing and boundless memory blocks eliminate these security vulnerabilities (as well as other memory errors). Our results show that our compiler enables the servers to execute successfully through buffer overflow attacks to continue to correctly service user requests without security vulnerabilities. Singapore-MIT Alliance (SMA) 2005-01-05T21:31:47Z 2005-01-05T21:31:47Z 2005-01 Article http://hdl.handle.net/1721.1/7505 en Computer Science (CS); 43489 bytes application/pdf application/pdf
spellingShingle Memory Errors
Buffer Overflow Attacks
Failure-Oblivious Computing
Acceptability-Oriented Computing
Rinard, Martin C.
Failure-Oblivious Computing and Boundless Memory Blocks
title Failure-Oblivious Computing and Boundless Memory Blocks
title_full Failure-Oblivious Computing and Boundless Memory Blocks
title_fullStr Failure-Oblivious Computing and Boundless Memory Blocks
title_full_unstemmed Failure-Oblivious Computing and Boundless Memory Blocks
title_short Failure-Oblivious Computing and Boundless Memory Blocks
title_sort failure oblivious computing and boundless memory blocks
topic Memory Errors
Buffer Overflow Attacks
Failure-Oblivious Computing
Acceptability-Oriented Computing
url http://hdl.handle.net/1721.1/7505
work_keys_str_mv AT rinardmartinc failureobliviouscomputingandboundlessmemoryblocks