• Documents
  • Authors
  • Tables
  • Log in
  • Sign up
  • MetaCart
  • DMCA
  • Donate

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations

Safemem: Exploiting ecc-memory for detecting memory leaks and memory corruption during production runs. (2005)

by F Qin, S Lu, Y Zhou
Venue:In HPCA,
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 85
Next 10 →

Panorama: Capturing system-wide information flow for malware detection and analysis

by Heng Yin, Dawn Song, Manuel Egele, Christopher Kruegel, Engin Kirda - In Proceedings of the 14th ACM Conferences on Computer and Communication Security (CCS’07 , 2007
"... Malicious programs spy on users ’ behavior and compromise their privacy. Even software from reputable vendors, such as Google Desktop and Sony DRM media player, may perform undesirable actions. Unfortunately, existing techniques for detecting malware and analyzing unknown code samples are insufficie ..."
Abstract - Cited by 195 (28 self) - Add to MetaCart
Malicious programs spy on users ’ behavior and compromise their privacy. Even software from reputable vendors, such as Google Desktop and Sony DRM media player, may perform undesirable actions. Unfortunately, existing techniques for detecting malware and analyzing unknown code samples are insufficient and have significant shortcomings. We observe that malicious information access and processing behavior is the fundamental trait of numerous malware categories breaching users ’ privacy (including keyloggers, password thieves, network sniffers, stealth backdoors, spyware and rootkits), which separates these malicious applications from benign software. We propose a system, Panorama, to detect and analyze malware by capturing this fundamental trait. In our extensive experiments, Panorama successfully detected all the malware samples and had very few false positives. Furthermore, by using Google Desktop as a case study, we show that our system can accurately capture its information access and processing behavior, and we can confirm that it does send back sensitive information to remote servers in certain settings. We believe that a system such as Panorama will offer indispensable assistance to code analysts and malware researchers by enabling them to quickly comprehend the behavior and innerworkings of an unknown sample.
(Show Context)

Citation Context

...ecution, and emulation is only used when tainted data is being processed by the CPU [20]. Exploring finer-grained hardware protection provided by ECC may further improve the performance significantly =-=[30]-=-. Recently, Qin et. al. explored several optimizations on dynamic binary instrumentation to minimize the run-time overhead [31]. 6. DISCUSSION In this section, we discuss several potential evasion tec...

BugNet: Continuously recording program execution for deterministic replay debugging

by Satish Narayanasamy, Gilles Pokam, Brad Calder - In ISCA , 2005
"... Significant time is spent by companies trying to reproduce and fix the bugs that occur for released code. To assist developers, we propose the BugNet architecture to continuously record information on production runs. The information collected before the crash of a program can be used by the develop ..."
Abstract - Cited by 182 (16 self) - Add to MetaCart
Significant time is spent by companies trying to reproduce and fix the bugs that occur for released code. To assist developers, we propose the BugNet architecture to continuously record information on production runs. The information collected before the crash of a program can be used by the developers working in their execution environment to deterministically replay the last several million instructions executed before the crash. BugNet is based on the insight that recording the register file contents at any point in time, and then recording the load values that occur after that point can enable deterministic replaying of a program’s execution. BugNet focuses on being able to replay the application’s execution and the libraries it uses, but not the operating system. But our approach provides the ability to replay an application’s execution across context switches and interrupts. Hence, BugNet obviates the need for tracking program I/O, interrupts and DMA transfers, which would have otherwise required more complex hardware support. In addition, BugNet does not require a final core dump of the system state for replaying, which significantly reduces the amount of data that must be sent back to the developer. 1
(Show Context)

Citation Context

...ovides sophisticated watchpoints to debug applications. It associates tags with memory locations, and when these locations are accessed, a specific function is executed to perform monitoring. SafeMem =-=[17]-=- and AccMon [26] are other recent proposals that provide architectural support to catch memory violations dynamically during program execution. Architecture support for efficiently implementing breakp...

Treating bugs as allergies -- a safe method to survive software failures

by Feng Qin, Joseph Tucek, Yuanyuan Zhou - IN SOSP , 2005
"... Many applications demand availability. Unfortunately, software failures greatly reduce system availability. Previous approaches for surviving software failures suffer from several limitations, including requiring application restructuring, failing to address deterministic software bugs, unsafely spe ..."
Abstract - Cited by 107 (6 self) - Add to MetaCart
Many applications demand availability. Unfortunately, software failures greatly reduce system availability. Previous approaches for surviving software failures suffer from several limitations, including requiring application restructuring, failing to address deterministic software bugs, unsafely speculating on program execution, and re-quiring a long recovery time. This paper
(Show Context)

Citation Context

...mory etc., before they cause the program to crash. This type of sensors leverage existing low-overhead dynamic bug detection tools, such as CCured [20], StackGuard [21], and our previous work SafeMem =-=[40]-=-, just to name a few. In our Rx prototype, we have only implemented the first type of sensors. However, we plan to integrate second type of sensors into Rx. Sensors notify the control unit upon softwa...

Practical taint-based protection using demand emulation

by Alex Ho, Michael Fetterman, Christopher Clark, Andrew Warfield, Steven Hand - EUROSYS '06 , 2006
"... Many software attacks are based on injecting malicious code into a target host. This paper demonstrates the use of a wellknown technique, data tainting, to track data received from the network as it propagates through a system and to prevent its execution. Unlike past approaches to taint tracking, w ..."
Abstract - Cited by 91 (0 self) - Add to MetaCart
Many software attacks are based on injecting malicious code into a target host. This paper demonstrates the use of a wellknown technique, data tainting, to track data received from the network as it propagates through a system and to prevent its execution. Unlike past approaches to taint tracking, which track tainted data by running the system completely in an emulator or simulator, resulting in considerable execution overhead, our work demonstrates the ability to dynamically switch a running system between virtualized and emulated execution. Using this technique, we are able to explore hardware support for taint-based protection that is deployable in real-world situations, as emulation is only used when tainted data is being processed by the CPU. By modifying the CPU, memory, and I/O devices to support taint tracking and protection, we guarantee that data received from the network may not be executed, even if it is written to, and later read from disk. We demonstrate near native speeds for workloads where little taint data is present.
(Show Context)

Citation Context

...uctures used by the emulator with the VMM’s would drastically minimize these costs. The basic hardware support assume in our work so far has been page-granularity protection. However some researchers =-=[29, 30]-=- have explored finer granularity hardware protection techniques in which the ECC bits are manipulated in order to reliably protect individual cache lines. We anticipate that using such techniques woul...

Bugbench: Benchmarks for evaluating bug detection tools

by Shan Lu, Zhenmin Li, Feng Qin, Lin Tan, Pin Zhou, Yuanyuan Zhou - In Workshop on the Evaluation of Software Defect Detection Tools , 2005
"... Benchmarking provides an effective way to evaluate different tools. Unfortunately, so far there is no good benchmark suite to systematically evaluate software bug detection tools. As a result, it is difficult to quantitatively compare the strengths and limitations of existing or newly proposed bug d ..."
Abstract - Cited by 68 (4 self) - Add to MetaCart
Benchmarking provides an effective way to evaluate different tools. Unfortunately, so far there is no good benchmark suite to systematically evaluate software bug detection tools. As a result, it is difficult to quantitatively compare the strengths and limitations of existing or newly proposed bug detection tools. In this paper, we share our experience of building a bug benchmark suite called BugBench. Specifically, we first summarize the general guidelines on the criteria for selecting representative bug benchmarks, and the metrics for evaluating a bug detection tool. Second, we present a set of buggy applications collected by us, with various types of software bugs. Third, we conduct a preliminary study on the application and bug characteristics in the context of software bug detection. Finally, we evaluate several existing bug detection tools including Purify, Valgrind, and CCured to validate the selection of our benchmarks.
(Show Context)

Citation Context

... [5, 23, 32] use real buggy applications for evaluation, which makes the proposed tools much more convincing. Unfortunately, based on our previous experience of evaluating our own bug detection tools =-=[18, 24, 32, 33]-=-, finding real applications with real bugs is a time-consuming process, especially since many bug report databases are not well documented for our purposes, i.e., they only report the symptoms but not...

Triage: Diagnosing production run failures at the users site

by Joseph Tucek, Shan Lu, Chengdu Huang, Spiros Xanthos, Yuanyuan Zhou - In Proc. of 21st SOSP , 2007
"... Diagnosing production run failures is a challenging yet important task. Most previous work focuses on offsite diagnosis, i.e. development site diagnosis with the programmers present. This is insufficient for production-run failures as: (1) it is difficult to reproduce failures offsite for diagnosis; ..."
Abstract - Cited by 66 (4 self) - Add to MetaCart
Diagnosing production run failures is a challenging yet important task. Most previous work focuses on offsite diagnosis, i.e. development site diagnosis with the programmers present. This is insufficient for production-run failures as: (1) it is difficult to reproduce failures offsite for diagnosis; (2) offsite diagnosis cannot provide timely guidance for recovery or security purposes; (3) it is infeasible to provide a programmer to diagnose every production run failure; and (4) privacy concerns limit the release of information (e.g. coredumps) to programmers. To address production-run failures, we propose a system, called Triage, that automatically performs onsite software failure diagnosis at the very moment of failure. It provides a detailed diagnosis report, including the failure nature, triggering conditions, related code and variables, the fault propagation chain, and potential fixes. Triage achieves this by leveraging lightweight reexecution support
(Show Context)

Citation Context

...ons, etc. Unique to Triage, though, is the need to monitor execution history for subtle software faults. More sophisticated techniques such as program invariant monitoring or memory safety monitoring =-=[31, 25]-=- can be employed as long as they impose low overhead. In addition to detecting failures, lightweight monitoring can be also used to collected some global program execution history such as branch histo...

Memtracker: Efficient and programmable support for memory access monitoring and debugging

by Guru Venkataramani, Brandyn Roemer - In High Performance Computer Architecture, 2007. HPCA 2007. IEEE 13th International Symposium on, Vol., Iss., Feb. 2007 , 2007
"... Memory bugs are a broad class of bugs that is becoming increasingly common with increasing software complexity, and many of these bugs are also security vulnerabilities. Unfortunately, existing software and even hardware approaches for finding and identifying memory bugs have considerable performanc ..."
Abstract - Cited by 55 (4 self) - Add to MetaCart
Memory bugs are a broad class of bugs that is becoming increasingly common with increasing software complexity, and many of these bugs are also security vulnerabilities. Unfortunately, existing software and even hardware approaches for finding and identifying memory bugs have considerable performance overheads, target only a narrow class of bugs, are costly to implement, or use computational resources inefficiently. This paper describes MemTracker, a new hardware support mechanism that can be configured to perform different kinds of memory access monitoring tasks. MemTracker associates each word of data in memory with a few bits of state, and uses a programmable state transition table to react to different events that can affect this state. The number of state bits per word, the events to which MemTracker reacts, and the transition table are all fully programmable. Mem-Tracker’s rich set of states, events, and transitions can be used to implement different monitoring and debugging checkers with minimal performance overheads, even when frequent state updates are needed. To evaluate MemTracker, we map three different checkers onto it, as well as a checker that combines all three. For the most demanding (combined) checker, we observe performance overheads of only 2.7 % on average and 4.8 % worst-case on SPEC 2000 applications. Such low overheads allow continuous (always-on) use of MemTrackerenabled checkers even in production runs. 1.
(Show Context)

Citation Context

...wdowns of 2X to 30X (i.e., up to 30 times) have been reported for Valgrind [10, 19]. Architectural support has been proposed to reduce performance overheads for detecting some memory-related problems =-=[4, 11, 14, 21, 22, 23, 24]-=-. In general, these schemes allow loads and stores to be intercepted directly without inserting instrumentation instructions around them. After an access is intercepted, a checker still needs to perfo...

Vulnerability-Specific Execution Filtering for Exploit Prevention on Commodity Software.

by James Newsome , David Brumley , Dawn Song , 2006
"... Abstract ..."
Abstract - Cited by 55 (8 self) - Add to MetaCart
Abstract not found
(Show Context)

Citation Context

...memory pages to be read-only) to be notified of writes to tainted memory. Moreover, when available, we can also use ECC memory to be notified of writes to tainted memory similar to techniques used in =-=[28]-=-. All of these techniques generate a trap when the watched memory is accessed (or memory near the watched memory), allowing our code to untaint the watched location if it has been rewritten by untaint...

Cork: Dynamic memory leak detection for garbage-collected languages

by Maria Jump, Kathryn S. McKinley - IN POPL , 2007
"... A memory leak in a garbage-collected program occurs when the program inadvertently maintains references to objects that it no longer needs. Memory leaks cause systematic heap growth, degrading performance and resulting in program crashes after perhaps days or weeks of execution. Prior approaches for ..."
Abstract - Cited by 44 (2 self) - Add to MetaCart
A memory leak in a garbage-collected program occurs when the program inadvertently maintains references to objects that it no longer needs. Memory leaks cause systematic heap growth, degrading performance and resulting in program crashes after perhaps days or weeks of execution. Prior approaches for detecting memory leaks rely on heap differencing or detailed object statistics which store state proportional to the number of objects in the heap. These overheads preclude their use on the same processor for deployed long-running applications. This paper introduces a dynamic heap-summarization technique based on type that accurately identifies leaks, is space efficient (adding less than 1 % to the heap), and is time efficient (adding 2.3% on average to total execution time). We implement this approach in Cork which utilizes dynamic type information and garbage collection to summarize the live objects in a type points-from graph (TPFG) whose nodes (types) and edges (references between types) are annotated with volume. Cork compares TPFGs across multiple collections, identifies growing data structures, and computes a type slice for the user. Cork is accurate: it identifies systematic heap growth with no false positives in 4 of 15 benchmarks we tested. Cork’s slice report enabled us (non-experts) to quickly eliminate growing data structures in SPECjbb2000 and Eclipse, something their developers had not previously done. Cork is accurate, scalable, and efficient enough to consider using online.
(Show Context)

Citation Context

...source of the heap growth. Previous approaches for finding leaks use heap diagnosis tools that rely on a combination of heap differencing [10, 11, 20] and allocation and/or fine-grain object tracking =-=[7, 8, 9, 13, 19, 24, 25, 28, 29]-=-. These techniques degrade performance by a factor of two or more, incur substantial memory overheads, rely on multiple executions, and/or offload work to a separate processor. Additionally, they yiel...

Precise Memory Leak Detection for Java Software Using Container Profiling ∗

by Guoqing Xu, Atanas Rountev
"... A memory leak in a Java program occurs when object references that are no longer needed are unnecessarily maintained. Such leaks are difficult to understand because static analyses typically cannot precisely identify these redundant references, and existing dynamic analyses for leak detection track ..."
Abstract - Cited by 42 (15 self) - Add to MetaCart
A memory leak in a Java program occurs when object references that are no longer needed are unnecessarily maintained. Such leaks are difficult to understand because static analyses typically cannot precisely identify these redundant references, and existing dynamic analyses for leak detection track and report fine-grained information about individual objects, producing results that are usually hard to interpret and lack precision. We introduce a novel container-based heap-tracking technique, based on the observation that many memory leaks in Java programs occur due to containers that keep references to unused data entries. The novelty of the described work is two-fold: (1) instead of tracking arbitrary objects and finding leaks by analyzing references to unused objects, the technique tracks only containers and directly identifies the source of the leak, and (2) the approach computes a confidence value for each container based on a combination of its memory consumption and its elements ’ staleness (time since last retrieval), while previous approaches do not consider such combined metrics. Our experimental results show that the reports generated by the proposed technique can be very precise: for two bugs reported by Sun and for a known bug in SPECjbb, the top containers in the reports include the containers that leak memory.
(Show Context)

Citation Context

...ces tells the programmer nothing about the hash maps that hold these entries. Research tools for memory leak detection typically focus on heap differencing [3, 4, 14] and fine-grained object tracking =-=[1, 8, 7, 20]-=-. Of existing dynamic techniques, LeakBot [17], Cork [14], and Sleigh [1] represent the state of the art. Both LeakBot and Cork use heap growth as a heuristic, which could result in false positives (g...

Powered by: Apache Solr
  • About CiteSeerX
  • Submit and Index Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2019 The Pennsylvania State University