skip to main content
10.1145/2384616.2384648acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Bolt: on-demand infinite loop escape in unmodified binaries

Published:19 October 2012Publication History

ABSTRACT

We present Bolt, a novel system for escaping from infinite and long-running loops. Directed by a user, Bolt can attach to a running process and determine if the program is executing an infinite loop. If so, Bolt can deploy multiple strategies to escape the loop, restore the responsiveness of the program, and enable the program to deliver useful output.

Bolt operates on stripped x86 and x64 binaries, dynamically attaches and detaches to and from the program as needed, and dynamically detects loops and creates program state checkpoints to enable exploration of different escape strategies. Bolt can detect and escape from loops in off-the-shelf software, without available source code, and with no overhead in standard production use.

References

  1. Apache HTTP server project. http://httpd.apache.org.Google ScholarGoogle Scholar
  2. Berkeley lab checkpoint/restart. https://ftg.lbl.gov/projects/CheckpointRestart/.Google ScholarGoogle Scholar
  3. BLCR frequently asked questions. https://upc-bugs.lbl.gov/blcr/doc/html/FAQ.html\# porting.Google ScholarGoogle Scholar
  4. Common Vulnerabilities and Exposures (CVE). http://cve.mitre.org/.Google ScholarGoogle Scholar
  5. GNU awk. http://www.gnu.org/s/gawk/.Google ScholarGoogle Scholar
  6. The libunwind project. http://www.nongnu.org/libunwind/.Google ScholarGoogle Scholar
  7. Linux PAM Modules. https://fedorahosted.org/linux-pam/.Google ScholarGoogle Scholar
  8. PHP. http://www.php.net/.Google ScholarGoogle Scholar
  9. Poppler. http://poppler.freedesktop.org/.Google ScholarGoogle Scholar
  10. Wireshark. http://www.wireshark.org/.Google ScholarGoogle Scholar
  11. Gawk: Infinite loop in sub/gsub. http://lists.gnu.org/archive/html/bug-gnu-utils/2002--10/msg00051.html, 2002.Google ScholarGoogle Scholar
  12. Java VM: Fix bug 4421494 infinite loop while parsing double literal. http://bugs.openjdk.java.net/show_bug.cgi?id=100119, 2009.Google ScholarGoogle Scholar
  13. Poppler: Problem decoding JBIG2Stream stream. https://bugs.freedesktop.org/show_bug.cgi?id=23025, 2009.Google ScholarGoogle Scholar
  14. Wireshark: Bug 5303 - Infinite Loop in ZCL Discover Attributes dissection. http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5303, 2010.Google ScholarGoogle Scholar
  15. Apache: apr_fnmatch infinite loop on pattern "/*/WEB-INF". http://issues.apache.org/bugzilla/show_bug.cgi?id=51219, 2011.Google ScholarGoogle Scholar
  16. PAM: 100% CPU utilization in pam_env parsing. http://bugs.launchpad.net/ubuntu/source/pam/bug/874565, 2011.Google ScholarGoogle Scholar
  17. PHP: Bug 53632 PHP hangs on numeric value 2.2250738585072011e-308. http://bugs.php.net/bug.php?id=53632, 2011.Google ScholarGoogle Scholar
  18. Working Draft, Standard for Programming Language C+. riptsize www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf, 2011.Google ScholarGoogle Scholar
  19. E. Albert, P. Arenas, M. Codish, S. Genaim, G. Puebla, and D. Zanardini. Termination analysis of Java bytecode. In FMOODS, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. A. Bradley, Z. Manna, and H. Sipma. Termination of polynomial programs. In VMCAI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. D. L. Bruening. Efficient, transparent, and comprehensive runtime code manipulation. PhD thesis, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. J. Burnim, N. Jalbert, C. Stergiou, and K. Sen. Looper: Lightweight detection of infinite loops at runtime. In ASE, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. M. Carbin, D. Kim, S. Misailovic, and M. Rinard. Proving acceptability properties of relaxed nondeterministic approximate programs. In PLDI, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. M. Carbin, S. Misailovic, M. Kling, and M. Rinard. Detecting and escaping infinite loops with Jolt. In ECOOP, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. M. Colón and H. Sipma. Practical methods for proving program termination. In CAV, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. B. Cook, A. Podelski, and A. Rybalchenko. Terminator: beyond safety. In CAV, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. V. Dallmeier, A. Zeller, and B. Meyer. Generating fixes from object behavior anomalies. In ASE, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. A. Gupta, T. Henzinger, R. Majumdar, A. Rybalchenko, and R. Xu. Proving non-termination. In POPL, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. J. Hollingsworth, B. Miller, and J. Cargille. Dynamic program instrumentation for scalable performance tools. In SHPCC, 1994.Google ScholarGoogle ScholarCross RefCross Ref
  30. H. Jula, P. Tozun, and G. Candea. Communix: A framework for collaborative deadlock immunity. In DSN, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. H. Jula, D. Tralamazza, C. Zamfir, and G. Candea. Deadlock immunity: enabling systems to defend against deadlocks. In OSDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. M. Kling. Escaping infinite loops using Bolt. MEng. Thesis, MIT CSAIL, January 2012.Google ScholarGoogle Scholar
  33. C. Le Goues, M. Dewey-Vogt, S. Forrest, and W. Weimer. A systematic study of automated program repair: Fixing 55 out of 105 bugs for$8 each. In ICSE, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. C.-K. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney, S. Wallace, V. Reddi, and K. Hazelwood. Pin: Building customized program analysis tools with dynamic instrumentation. In PLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. S. Misailovic, D. Kim, and M. Rinard. Parallelizing sequential programs with statistical accuracy tests. Transactions on Embedded Computing Systems (to appear), 2012.Google ScholarGoogle Scholar
  36. S. Misailovic, D. M. Roy, and M. C. Rinard. Probabilistically accurate program transformations. In SAS, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. S. Misailovic, S. Sidiroglou, H. Hoffmann, and M. C. Rinard. Quality of service profiling. In ICSE, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. H. Nguyen and M. Rinard. Detecting and eliminating memory leaks using cyclic memory allocation. In ISMM, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. J. H. Perkins, S. Kim, S. Larsen, S. Amarasinghe, J. Bachrach, M. Carbin, C. Pacheco, F. Sherwood, S. Sidiroglou, G. Sullivan, W.-F. Wong, Y. Zibin, M. D. Ernst, and M. Rinard. Automatically patching errors in deployed software. In SOSP, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. F. Qin, J. Tucek, J. Sundaresan, and Y. Zhou. Rx: treating bugs as allergies--a safe method to survive software failures. In SOSP, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. M. Rinard. A lossy, synchronization-free, race-full, but still acceptably accurate parallel space-subdivision tree construction algorithm. Technical Report MIT-CSAIL-TR-2012-005, MIT, Feb. 20012.Google ScholarGoogle Scholar
  42. M. Rinard. Acceptability-oriented computing. In OOPSLA Onwards, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. M. Rinard, C. Cadar, D. Dumitran, D. Roy, T. Leu, and W. Beebee Jr. Enhancing server availability and security through failure-oblivious computing. In OSDI, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. M. C. Rinard. Probabilistic accuracy bounds for fault-tolerant computations that discard tasks. In ICS, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. M. C. Rinard. Using early phase termination to eliminate load imbalances at barrier synchronization points. In OOPSLA, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. S. Sidiroglou, O. Laadan, C. Perez, N. Viennot, J. Nieh, and A. Keromytis. Assure: automatic software self-healing using rescue points. In ASPLOS, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. S. Sidiroglou, M. E. Locasto, S. W. Boyd, and A. D. Keromytis. Building a reactive immune system for software services. In USENIX Technical, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. S. Sidiroglou, S. Misailovic, H. Hoffmann, and M. C. Rinard. Managing performance vs. accuracy trade-offs with loop perforation. In FSE, 2011.Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. F. Spoto, F. Mesnard, and E. Payet. A termination analyzer for Java bytecode based on path-length. Transactions on Programming Languages and Systems, 32:1--70, March 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. In ICSE, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. J. Wu, H. Cui, and J. Yang. Bypassing races in live applications with execution filters. In OSDI, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. V. C. Zandy, B. P. Miller, and M. Livny. Process Hijacking. In HPDC, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Z. A. Zhu, S. Misailovic, J. A. Kelner, and M. C. Rinard. Randomized accuracy-aware program transformations for efficient approximate computations. In POPL, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Bolt: on-demand infinite loop escape in unmodified binaries

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          OOPSLA '12: Proceedings of the ACM international conference on Object oriented programming systems languages and applications
          October 2012
          1052 pages
          ISBN:9781450315616
          DOI:10.1145/2384616
          • cover image ACM SIGPLAN Notices
            ACM SIGPLAN Notices  Volume 47, Issue 10
            OOPSLA '12
            October 2012
            1011 pages
            ISSN:0362-1340
            EISSN:1558-1160
            DOI:10.1145/2398857
            Issue’s Table of Contents

          Copyright © 2012 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 19 October 2012

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          Overall Acceptance Rate268of1,244submissions,22%

          Upcoming Conference

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader