skip to main content
10.1145/2150976.2151012acmconferencesArticle/Chapter ViewAbstractPublication PagesasplosConference Proceedingsconference-collections
research-article

Path-exploration lifting: hi-fi tests for lo-fi emulators

Published:03 March 2012Publication History

ABSTRACT

Processor emulators are widely used to provide isolation and instrumentation of binary software. However they have proved difficult to implement correctly: processor specifications have many corner cases that are not exercised by common workloads. It is untenable to base other system security properties on the correctness of emulators that have received only ad-hoc testing. To obtain emulators that are worthy of the required trust, we propose a technique to explore a high-fidelity emulator with symbolic execution, and then lift those test cases to test a lower-fidelity emulator. The high-fidelity emulator serves as a proxy for the hardware specification, but we can also further validate by running the tests on real hardware. We implement our approach and apply it to generate about 610,000 test cases; for about 95% of the instructions we achieve complete path coverage. The tests reveal thousands of individual differences; we analyze those differences to shed light on a number of root causes, such as atomicity violations and missing security features.

References

  1. Advanced Micro Devices. AMD64 virtualization: Secure virtual machine architecture reference manual. AMD Publication no. 33047 rev. 3.01, 2005.Google ScholarGoogle Scholar
  2. T. Arons, E. Elster, L. Fix, S. Mador-Haim, M. Mishaeli, J. Shalev, E. Singerman, A. Tiemeyer, M. Vardi, and L. Zuck. Formal Verification of Backward Compatibility of Microcode. In Computer Aided Verification (CAV), 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. U. Bayer, C. Kruegel, and E. Kirda. TTAnalyze: A Tool for Analyzing Malware. In European Institute for Computer Antivirus Research (EICAR), 2006.Google ScholarGoogle Scholar
  4. D. Brumley, C. Hartwig, Z. Liang, J. Newsome, D. Song, and H. Yin. Automatically identifying trigger-based behavior in malware. In W. Lee, C. Wang, and D. Dagon, editors, Botnet Detection, volume 36 of Advances in Information Security. Springer, 2008.Google ScholarGoogle Scholar
  5. J. Caballero, P. Poosankam, S. McCamant, D. Babic, and D. Song. Input generation via decomposition and re-stitching: Finding bugs in malware. In CCS, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C. Cadar, D. Dunbar, and D. Engler. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In OSDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. C. Cadar and D. Engler. Execution generated test cases: How to make systems code crash itself. In Model Checking Software (SPIN Workshop), 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. C. Cadar, V. Ganesh, P. M. Pawlowski, D. L. Dill, and D. Engler. EXE: automatically generating inputs of death. In CCS, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. X. Chen, T. Garfinkel, E. C. Lewis, P. Subrahmanyam, C. A. Waldspurger, D. Boneh, J. Dwoskin, and D. R. K. Ports. Overshadow: A Virtualization-Based Approach to Retrofitting Protection in Commodity Operating Systems. In ASPLOS, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. V. Chipounov, V. Kuznetsov, and G. Candea. S2E: A platform for in-vivo multi-path analysis of software systems. In ASPLOS, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. P. Collingbourne, C. Cadar, and P. H. J. Kelly. Symbolic Crosschecking of Floating-Point and SIMD Code. In EuroSys, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. L. de Moura and N. Bjørner. Z3: An efficient SMT solver. In Tools and Algorithms for the Construction and Analysis of Systems (TACAS), 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. V. Ganesh and D. L. Dill. A decision procedure for bit-vectors and arrays. In Computer Aided Verification (CAV), 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. P. Godefroid. Compositional dynamic test generation. In POPL, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. P. Godefroid, N. Klarlund, and K. Sen. DART: directed automated random testing. In PLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. P. Godefroid, M. Y. Levin, and D. A. Molnar. Automated whitebox fuzz testing. In Network and Distributed System Security (NDSS), 2008.Google ScholarGoogle Scholar
  17. A. Ho, M. Fetterman, C. Clark, A. Warfield, and S. Hand. Practical Taint-Based Protection using Demand Emulation. In EuroSys, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. J. C. King. Symbolic execution and program testing. Communications of the ACM, 19(7), 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Kernel-based Virtual Machine (KVM). http://linux-kvm.org/.Google ScholarGoogle Scholar
  20. L. Martignoni, R. Paleari, G. F. Roglia, and D. Bruschi. Testing CPU emulators. In International Symposium on Software Testing and Analysis (ISSTA), 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. L. Martignoni, R. Paleari, G. F. Roglia, and D. Bruschi. Testing system virtual machines. In International Symposium on Software Testing and Analysis (ISSTA), 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. D. Molnar, X. C. Li, and D. A. Wagner. Dynamic test generation to find integer bugs in x86 binary Linux programs. In USENIX Security Symposium, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. A. Moser, C. Kruegel, and E. Kirda. Exploring Multiple Execution Paths for Malware Analysis. In IEEE Symposium on Security and Privacy (Oakland), 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. G. Neiger, A. Santoni, F. Leung, D. Rodgers, and R. Uhlig. Intel Virtualization Technology: Hardware support for efficient processor virtualization. Intel Technology Journal, 10(3), 2006.Google ScholarGoogle ScholarCross RefCross Ref
  25. N. Nethercote and J. Seward. Valgrind: a framework for heavyweight dynamic binary instrumentation. In PLDI, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. K. Sen, D. Marinov, and G. Agha. CUTE: A concolic unit testing engine for C. In European Software Engineering Conference / Foundations of Software Engineering (ESEC/FSE), 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. D. Song, D. Brumley, H. Yin, J. Caballero, I. Jager, M. G. Kang, Z. Liang, J. Newsome, P. Poosankam, and P. Saxena. BitBlaze: A new approach to computer security via binary analysis. In International Conf. on Information Systems Security (ICISS), 2008. Keynote. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. B. Yee, D. Sehr, G. Dardyk, J. B. Chen, R. Muth, T. Ormandy, S. Okasaka, N. Narula, and N. Fullagar. Native client: A sandbox for portable, untrusted x86 native code. In IEEE Symposium on Security and Privacy (Oakland), 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Q. Zhang, J. McCullough, J. Ma, N. Schear, M. Vrable, A. Vahdat, A. C. Snoeren, G. M. Voelker, and S. Savage. Neon: system support for derived data management. In Virtual Execution Environments (VEE), 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Path-exploration lifting: hi-fi tests for lo-fi emulators

    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
      ASPLOS XVII: Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems
      March 2012
      476 pages
      ISBN:9781450307598
      DOI:10.1145/2150976
      • cover image ACM SIGARCH Computer Architecture News
        ACM SIGARCH Computer Architecture News  Volume 40, Issue 1
        ASPLOS '12
        March 2012
        453 pages
        ISSN:0163-5964
        DOI:10.1145/2189750
        Issue’s Table of Contents
      • cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 47, Issue 4
        ASPLOS '12
        April 2012
        453 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2248487
        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: 3 March 2012

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate535of2,713submissions,20%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader