Publication | Closed Access
DieHard
402
Citations
41
References
2006
Year
Hardware SecurityEngineeringShared MemoryProgram AnalysisMultiple ReplicasSoftware TestingComputer ArchitectureComputer EngineeringSoftware AnalysisFault ToleranceGarbage CollectionComputer ScienceUnsafe LanguagesPresent DiehardMemory Model (Programming)Memory ManagementFormal VerificationSystem Software
Applications written in unsafe languages such as C and C++ are vulnerable to memory errors that can cause crashes, security vulnerabilities, and unpredictable behavior. The paper introduces DieHard, a runtime system that tolerates memory errors while probabilistically maintaining soundness. DieHard achieves probabilistic memory safety by randomizing object placement in a heap at least twice the required size and, optionally, by running replicated instances with independent seeds and output agreement to reduce error impact. DieHard prevents heap corruption and, as shown analytically and experimentally, reliably resists a wide range of memory errors, including real-world heap-based buffer overflows.
Applications written in unsafe languages like C and C++ are vulnerable to memory errors such as buffer overflows, dangling pointers, and reads of uninitialized data. Such errors can lead to program crashes, security vulnerabilities, and unpredictable behavior. We present DieHard, a runtime system that tolerates these errors while probabilistically maintaining soundness. DieHard uses randomization and replication to achieve probabilistic memory safety by approximating an infinite-sized heap. DieHard's memory manager randomizes the location of objects in a heap that is at least twice as large as required. This algorithm prevents heap corruption and provides a probabilistic guarantee of avoiding memory errors. For additional safety, DieHard can operate in a replicated mode where multiple replicas of the same application are run simultaneously. By initializing each replica with a different random seed and requiring agreement on output, the replicated version of Die-Hard increases the likelihood of correct execution because errors are unlikely to have the same effect across all replicas. We present analytical and experimental results that show DieHard's resilience to a wide range of memory errors, including a heap-based buffer overflow in an actual application.
| Year | Citations | |
|---|---|---|
Page 1
Page 1