skip to main content
10.1145/1519065.1519071acmconferencesArticle/Chapter ViewAbstractPublication PageseurosysConference Proceedingsconference-collections
research-article

Orchestra: intrusion detection using parallel execution and monitoring of program variants in user-space

Authors Info & Claims
Published:01 April 2009Publication History

ABSTRACT

In a Multi-Variant Execution Environment (MVEE), several slightly different versions of the same program are executed in lockstep. While this is done, a monitor compares the behavior of the versions at certain synchronization points with the aim of detecting discrepancies which may indicate attacks.

As we show, the monitor can be implemented entirely in user space, eliminating the need for kernel modifications. As a result, the monitor is not a part of the trusted code base.

We have built a fully functioning MVEE, named Orchestra, and evaluated its effectiveness. We obtained benchmark results on a quad-core system, using two variants which grow the stack in opposite directions. The results show that the overall penalty of simultaneous execution and monitoring of two variants on a multi-core system averages about 15% relative to unprotected conventional execution

References

  1. Aleph One. Smashing the stack for fun and profit. Phrack, 7 (2), 1996.Google ScholarGoogle Scholar
  2. Apache Software Foundation. ab -- Apache HTTP Server Benchmarking Tool.Google ScholarGoogle Scholar
  3. J. Avariento. Exploit for Apache mod_rewrite off-by-one, 2006. URL http://ciberjacobo.com/sec/mod_rewrite.html.Google ScholarGoogle Scholar
  4. A. Avizienis and L. Chen. On the implementation of n-version programming for software fault tolerance during execution. In IEEE International Computer Software and Applications Conference (COMPSAC), volume 77, pages 149--155, 1977.Google ScholarGoogle Scholar
  5. E.G. Barrantes, D.H. Ackley, T.S. Palmer, D. Stefanovic, and D.D. Zovi. Randomized instruction set emulation to disrupt binary code injection attacks. In Proceedings of the 10th ACM Conference on Computer and Communications Security (CCS), pages 281--289, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. E.D. Berger and B.G. Zorn. Diehard: Probabilistic memory safety for unsafe languages. In Proceedings of the 2006 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 158--168, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. Bhatkar, D. C. DuVarney, and R. Sekar. Address obfuscation: An efficient approach to combat a broad range of memory error exploits. In Proceedings of the 12th USENIX Security Symposium, pages 105--120, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Sandeep Bhatkar, R. Sekar, and Daniel C. DuVarney. Efficient techniques for comprehensive protection from memory error exploits. In Proceedings of the 14th USENIX Security Symposium, pages 271--286, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. Chew and D. Song. Mitigating buffer overflows by operating system randomization. Technical report, Department of Computer Science, Carnegie Mellon University, 2002.Google ScholarGoogle Scholar
  10. F. Cohen. Operating system protection through program evolution. Computers and Security, 12 (6): 565--584, October 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. C. Cowan, C. Pu, D. Maier, J. Walpole, P. Bakke, S. Beattie, A. Grier, P. Wagle, Q. Zhang, and H. Hinton. Stackguard: Automatic adaptive detection and prevention of buffer-overflow attacks. In Proceedings of the 7th USENIX Security Symposium, pages 63--78, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. B. Cox, D. Evans, A. Filipi, J. Rowanhill, W. Hu, J. Davidson, J. Knight, A. Nguyen-Tuong, and J. Hiser. N-variant systems: A secretless framework for security through diversity. In Proceedings of the 15th USENIX Security Symposium, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Diet libc. URL http://www.fefe.de/dietlibc/.Google ScholarGoogle Scholar
  14. M. Dowd. Apache Mod_Rewrite Off-By-One Buffer Overflow Vulnerability, 2006. URL http://www.securityfocus.com/archive/1/441487/30/0/threaded.Google ScholarGoogle Scholar
  15. Crazy Einstein. Apache mod_include Local Buffer Overflow Vulnerability, 2004. URL http://www.securityfocus.com/bid/11471.Google ScholarGoogle Scholar
  16. Crazy Einstein. Apache łeq 1.3.31 mod_include Local Buffer Overflow Exploit, 2006. URL http://milw0rm.com/exploits/587.Google ScholarGoogle Scholar
  17. S. Forrest, A. Somayaji, and D. Ackley. Building diverse computer systems. In 6th Workshop on Hot Topics in Operating Systems (HotOS), 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. GNU. GNU Compiler Collection (GCC). URL http://gcc.gnu.org.Google ScholarGoogle Scholar
  19. R. Hastings and B. Joyce. Purify: Fast detection of memory leaks and access errors. In Proceedings of the Winter USENIX Conference, volume 136, 1992.Google ScholarGoogle Scholar
  20. W. Hsu and A.J. Smith. Characteristics of I/O traffic in personal computer and server workloads. IBM Systems Journal, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Intel. Paul Otellini Keynote. Intel Developer Forum, September 2006.Google ScholarGoogle Scholar
  22. M.K. Joseph and Avizienis. A. A fault tolerance approach to computer viruses. In 1988 IEEE Symposium on Security and Privacy, pages 52--58, 1988.Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. B. Kauer. Oslo: Improving the security of trusted computing. In Proceedings of the 16th USENIX Security Symposium, pages 229--237, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. G.S. Kc, A.D. Keromytis, and V. Prevelakis. Countering code-injection attacks with instruction-set randomization. In Proceedings of the 10th ACM Conference on Computer and Communications Security (CCS), pages 272--280, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. B. A. Kuperman, C. E. Brodley, H. Ozdoganoglu, T. N. Vijaykumar, and A. Jalote. Detection and prevention of stack buffer overflow attacks. Communications of the ACM, 48 (11): 50--56, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. A. Manion and J. Gennari. US-CERT Vulnerability Note VU #175500, October 2005. URL http://www.kb.cert.org/vuls/id/175500.Google ScholarGoogle Scholar
  27. J.M. McCune, B.J. Parno, A. Perrig, M.K. Reiter, and H. Isozaki. Flicker: An execution infrastructure for TCB minimization. In Proceedings of the 3rd European Conference on Computer Systems (EuroSys), pages 315--328, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. J. McDermott, R. Gelinas, and S. Ornstein. Doc, wyatt, and virgil: Prototyping storage jamming defenses. In 13th Annual Computer Security Applications Conference (ACSAC), pages 265--273, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. N. Mehta. Snort Back Orifice Parsing Remote Code Execution, 2005.Google ScholarGoogle Scholar
  30. D.G. Murray, G. Milos, and S. Hand. Improving Xen security through disaggregation. In Proceedings of the fourth ACM SIGPLAN/SIGOPS Conference on Virtual Execution Environments, pages 151--160, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Nergal. The advanced return-into-lib(c) exploits: PaX case study. Phrack, 2001.Google ScholarGoogle Scholar
  32. N. Nethercote and J. Seward. Valgrind: A Program Supervision Framework. Electronic Notes in Theoretical Computer Science, 2003.Google ScholarGoogle Scholar
  33. T. Oh. Advanced Buffer Overflow Exploit, 2000. URL http://www.windowsecurity.com/uplarticle/1/advanced.txt.Google ScholarGoogle Scholar
  34. C. Parampalli, R. Sekar, and R. Johnson. A practical mimicry attack against powerful system-call monitors. In ACM Symposium on Information, Computer & Communication Security (ASIACCS), pages 156--167, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. PaX. URL http://pax.grsecurity.net.Google ScholarGoogle Scholar
  36. J. Pincus and B. Baker. Beyond stack smashing: Recent advances in exploiting buffer overruns. IEEE Security and Privacy, pages 20--27, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. E. Pinheiro, R. Bianchini, E.V. Carrera, and T. Heath. Load balancing and unbalancing for power and performance in cluster-based systems. In Workshop on Compilers and Operating Systems for Low Power, pages 182--195, 2001.Google ScholarGoogle Scholar
  38. C. Pu, A. Black, C. Cowan, and J. Walpole. A specialization toolkit to increase the diversity of operating systems. In ICMAS Workshop on Immunity-Based Systems, 1996.Google ScholarGoogle Scholar
  39. rd. THCsnortbo 0.3 -- Snort BackOrifice PING exploit, October 2005. URL http://milw0rm.com/exploits/1272.Google ScholarGoogle Scholar
  40. B. Salamat, A. Gal, and M. Franz. Reverse stack execution in a multi-variant execution environment. In Workshop on Compiler and Architectural Techniques for Application Reliability and Security (CATARS), 2008.Google ScholarGoogle Scholar
  41. B. Salamat, A. Gal, T. Jackson, K. Manivannan, G. Wagner, and M. Franz. Multi-variant program execution: Using multi-core systems to defuse buffer-overflow vulnerabilities. In Proceedings of the International Conference on Complex, Intelligent and Software Intensive Systems (CISIS'08), pages 843--848, March 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Solar Designer. Non-executable user stack. URL http://www.openwall.com.Google ScholarGoogle Scholar
  43. Standard Performance Evaluation Corporation (SPEC). URL http://www.spec.org.Google ScholarGoogle Scholar
  44. C. Taschner and A. Manion. US-CERT Vulnerability Note VU #196240, February 2007. URL http://www.kb.cert.org/vuls/id/196240.Google ScholarGoogle Scholar
  45. J. Wilander and M. Kamkar. A comparison of publicly available tools for dynamic buffer overflow prevention. In Proceedings of the 10th Annual Symposium On Network And Distributed System Security, 2003.Google ScholarGoogle Scholar

Index Terms

  1. Orchestra: intrusion detection using parallel execution and monitoring of program variants in user-space

      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
        EuroSys '09: Proceedings of the 4th ACM European conference on Computer systems
        April 2009
        342 pages
        ISBN:9781605584829
        DOI:10.1145/1519065

        Copyright © 2009 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: 1 April 2009

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article

        Acceptance Rates

        Overall Acceptance Rate241of1,308submissions,18%

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader