skip to main content
10.1145/948109.948147acmconferencesArticle/Chapter ViewAbstractPublication PagesccsConference Proceedingsconference-collections
Article

Randomized instruction set emulation to disrupt binary code injection attacks

Published:27 October 2003Publication History

ABSTRACT

Binary code injection into an executing program is a common form of attack. Most current defenses against this form of attack use a 'guard all doors' strategy, trying to block the avenues by which execution can be diverted. We describe a complementary method of protection, which disrupts foreign code execution regardless of how the code is injected. A unique and private machine instruction set for each executing program would make it difficult for an outsider to design binary attack code against that program and impossible to use the same binary attack code against multiple machines. As a proof of concept, we describe a randomized instruction set emulator (RISE), based on the open-source Valgrind x86-to-x86 binary translator. The prototype disrupts binary code injection attacks against a program without requiring its recompilation, linking, or access to source code. The paper describes the RISE implementation and its limitations, gives evidence demonstrating that RISE defeats common attacks, considers how the dense x86 instruction set affects the method, and discusses potential extensions of the idea.

References

  1. CORE Security Technologies. In http://www1.corest.com/home/home.php.Google ScholarGoogle Scholar
  2. CVS Directory Request Double Free Heap Corruption Vulnerability. In http://www.securityfocus.com/bid/6650.Google ScholarGoogle Scholar
  3. libsafe - Detect and handle buffer overflow attacks. In http://www.gnu.org/directory/ security/net/libsafe.html.Google ScholarGoogle Scholar
  4. MySQL COM_CHANGE_USER Password Length Account Compromise Vulnerability. In http://www.securityfocus.com/bid/6373.Google ScholarGoogle Scholar
  5. TCPA Trusted Computing Platform Alliance. In http://www.trustedcomputing.org/home.Google ScholarGoogle Scholar
  6. Aleph One. Smashing the stack for fun and profit. Phrack, 49(7), Nov. 1996.Google ScholarGoogle Scholar
  7. R. Anderson. 'Trusted Computing' and competition policy - issues for computing professionals. Upgrade, IV(3):35--41, June 2003.Google ScholarGoogle Scholar
  8. W. A. Arbaugh. Improving the TCPA specification. IEEE Computer, 35(8):77--79, August 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. A. Avizienis. The Methodology of N-Version Programming. In M. Lyu, editor, Software Fault Tolerance, pages 23--46. John Wiley & Sons Ltd., 1995.Google ScholarGoogle Scholar
  10. A. Avizienis and L. Chen. On the implementation of N-Version programming for software fault tolerance during execution. In Proceedings of IEEE COMPSAC 77, pages 149--155, Nov. 1977.Google ScholarGoogle Scholar
  11. V. Bala, E. Duesterwald, and S. Banerjia. Dynamo: a transparent dynamic optimization system. In Proceedings of the ACM SIGPLAN '00 conference on Programming language design and implementation, pages 1--12, Vancouver, British Columbia, Canada, 2000. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. R. M. Best. Microprocessor for executing enciphered programs, U.S. Patent No. 4 168 396, September 18 1979.Google ScholarGoogle Scholar
  13. R. M. Best. Preventing software piracy with crypto-microprocessors. In Proceedings of the IEEE Spring COMPCON '80, pages 466--469, San Francisco, California, Feb. 1980.Google ScholarGoogle Scholar
  14. S. Bhatkar, D. DuVarney, and R. Sekar. Address obfuscation: An approach to combat buffer overflows, format-string attacks and more. In 12th Usenix Security Symposium, Aug. 2003.Google ScholarGoogle Scholar
  15. D. Bruening, S. Amarasinghe, and E. Duesterwald. Design and implementation of a dynamic optimization framework for Windows. In 4th ACM Workshop on Feedback-Directed and Dynamic Optimization (FDDO-4), Dec. 2001.Google ScholarGoogle Scholar
  16. M. Chew and D. Song. Mitigating Buffer Overflows by Operating System Randomization. Technical Report CMU-CS-02-197, Department of Computer Science, Carnegie Mellon University, Dec. 2002.Google ScholarGoogle Scholar
  17. F. Cohen. Operating System Protection through Program Evolution. Computers and Security, 12(6):565--584, Oct. 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. C. Cowan, M. Barringer, S. Beattie, and G. Kroah-Hartman. Format guard: Automatic protection from printf format string vulnerabilities. In Proceedings of the 2001 USENIX Security Symposium, Washington DC, August 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. C. Cowan, H. Hinton, C. Pu, and J. Walpole. A Cracker Patch Choice: An Analysis of Post Hoc Security Techniques. In National Information Systems Security Conference (NISSC), Baltimore MD, October 16-19 2000.Google ScholarGoogle Scholar
  20. C. Cowan, C. Pu, D. Maier, H. Hinton, P. Bakke, S. Beattie, A. Grier, P. Wagle, and Q. Zhang. Automatic Detection and Prevention of Buffer-Overflow Attacks. In Proceedings of the 7th USENIX Security Symposium, San Antonio, Texas, Jan. 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. C. Cowan, P. Wagle, C. Pu, S. Beattie, and J. Walpole. Buffer overflows: Attacks and defenses for the vulnerability of the decade. In DARPA Information Survivability Conference and\ Exposition (DISCEX 2000), pages 119--129, Jan. 2000.Google ScholarGoogle Scholar
  22. Dallas Semiconductor. DS5002FP secure microprocessor chip. http://pdfserv.maxim-ic.com/en/ds/DS5002FP.pdf.Google ScholarGoogle Scholar
  23. P. Fayolle and V. Glaume. A buffer overflow study, attacks & defenses. In http://www.enseirb.fr/~glaume/indexen.html.Google ScholarGoogle Scholar
  24. S. Forrest, A. Somayaji, and D. Ackley. Building Diverse Computer Systems. In Proceedings of the Sixth Workshop on Hot Topics in Operating Systems, pages 67--72, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. M. Frantzen and M. Shuey. Stackghost: Hardware facilitated stack protection. In Proceedings of the 10th USENIX Security Symposium, Washington D.C., August 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. M. Harper. SQL injection attacks - are you safe? In Sitepoint, http://www.sitepoint.com/article/794, June 17 2002.Google ScholarGoogle Scholar
  27. G. S. Kc, A. D. Keromytis, and V. Prevelakis. Countering Code-Injection Attacks With Instruction-Set Randomization. In www.cs.columbia.edu/~gskc/publications/isaRandomization.pdf.Google ScholarGoogle Scholar
  28. V. Kiriansky, D. Bruening, and S. Amarasinghe. Secure Execution Via Program Sheperding. In Proceeding of the 11th USENIX Security Symposium, San Francisco, California, August 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. M. Kuhn. The TrustNo 1 cryptoprocessor concept. Technical Report CS555 Report, Purdue University, April 04 1997.Google ScholarGoogle Scholar
  30. Nergal. The advanced return-into-lib(c) exploits. Phrack, 58(4), Dec. 2001.Google ScholarGoogle Scholar
  31. T. Newsham. Format string attacks. In http://www.securityfocus.com/archive/1/81565, September 9 2000.Google ScholarGoogle Scholar
  32. PaX team. Non executable data pages. In http://pageexec.virtualave.net/pageexec.txt, 2002.Google ScholarGoogle Scholar
  33. C. Pu, A. Black, C. Cowan, and J. Walpole. A specialization toolkit to increase the diversity of operating systems. In Proceedings of the 1996 ICMAS Workshop on Immunity-Based Systems, Nara, Japan, December 1996.Google ScholarGoogle Scholar
  34. B. Randell. System Structure for Software Fault Tolerance. IEEE Transactions in Software Engineering, 1(2):220--232, 1975.Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. B. Schneier. Applied Cryptography. John Wiley & Sons, 1996.Google ScholarGoogle Scholar
  36. J. Seward. Valgrind, an open-source memory debugger for x86-GNU/Linux. In http://developer.kde.org/~sewardj/, 2002.Google ScholarGoogle Scholar
  37. Solar Designer. Non-executable user stack. In http://www.openwall.com/linux.Google ScholarGoogle Scholar
  38. Tool Interface Standards Committee. Executable and Linking Format (ELF), May 1995.Google ScholarGoogle Scholar
  39. T. Tso. random.c A strong random number generator. In http://www.linuxsecurity.com/feature_stories/random.c.Google ScholarGoogle Scholar
  40. Vendicator. StackShield: A stack smashing technique protection tool for Linux. In http://angelfire.com/sk/stackshield.Google ScholarGoogle Scholar
  41. D. Wagner, J. S. Foster, E. A. Brewer, and A. Aiken. A First Step towards Automated Detection of Buffer Overrun Vulnerabilities. In Network and Distributed System Security Symposium, pages 3--17, San Diego, CA, February 2000.Google ScholarGoogle Scholar

Index Terms

  1. Randomized instruction set emulation to disrupt binary code injection attacks

      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
        CCS '03: Proceedings of the 10th ACM conference on Computer and communications security
        October 2003
        374 pages
        ISBN:1581137389
        DOI:10.1145/948109

        Copyright © 2003 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: 27 October 2003

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        Overall Acceptance Rate1,261of6,999submissions,18%

        Upcoming Conference

        CCS '24
        ACM SIGSAC Conference on Computer and Communications Security
        October 14 - 18, 2024
        Salt Lake City , UT , USA

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader