skip to main content
10.1145/2854038.2854062acmconferencesArticle/Chapter ViewAbstractPublication PagescgoConference Proceedingsconference-collections
research-article
Public Access

BlackBox: lightweight security monitoring for COTS binaries

Published:29 February 2016Publication History

ABSTRACT

After a software system is compromised, it can be difficult to understand what vulnerabilities attackers exploited. Any information residing on that machine cannot be trusted as attackers may have tampered with it to cover their tracks. Moreover, even after an exploit is known, it can be difficult to determine whether it has been used to compromise a given machine. Aviation has long-used black boxes to better understand the causes of accidents, enabling improvements that reduce the likelihood of future accidents. Many attacks introduce abnormal control flows to compromise systems. In this paper, we present BlackBox, a monitoring system for COTS software. Our techniques enable BlackBox to efficiently monitor unexpected and potentially harmful control flow in COTS binaries. BlackBox constructs dynamic profiles of an application's typical control flows to filter the vast majority of expected control flow behavior, leaving us with a manageable amount of data that can be logged across the network to remote devices. Modern applications make extensive use of dynamically generated code, some of which varies greatly between executions. We introduce support for code generators that can detect security-sensitive behaviors while allowing BlackBox to avoid logging the majority of ordinary behaviors. We have implemented BlackBox in DynamoRIO. We evaluate the runtime overhead of BlackBox, and show that it can effectively monitor recent versions of Microsoft Office and Google Chrome. We show that in ROP, COOP, and state- of-the-art JIT injection attacks, BlackBox logs the pivotal actions by which the attacker takes control, and can also blacklist those actions to prevent repeated exploits.

Skip Supplemental Material Section

Supplemental Material

References

  1. M. Abadi, M. Budiu, U. Erlingsson, and J. Ligatti. Control-flow integrity. In CCS, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. J. Alstott, E. Bullmore, and D. Plenz. powerlaw: A python package for analysis of heavy-tailed distributions. PLoS ONE, 9(1):e85777, 2014. doi: 10.1371/journal.pone.0085777.Google ScholarGoogle ScholarCross RefCross Ref
  3. W. Arthur, B. Mehne, R. Das, and T. Austin. Getting in control of your control flow with control-data isolation. In CGO, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. M. Athanasakis, E. Athanasopoulos, M. Polychronakis, G. Portokalidis, and S. Ioannidis. The devil is in the constants: Bypassing defenses in browser JIT engines. In NDSS, 2015.Google ScholarGoogle ScholarCross RefCross Ref
  5. A. Ayers, R. Schooler, C. Metcalf, A. Agarwal, J. Rhee, and E. Witchel. Traceback: First fault diagnosis by reconstruction of distributed control flow. In PLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. V. Bertacco, R. Rodriguez, W. Arthur, B. Mammo, and T. Austin. Schnauzer: Scalable profiling for likely security bug sites. In CGO, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. N. Carlini and D. Wagner. ROP is still dangerous: Breaking modern defenses. In USENIX Security, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. N. Carlini, A. Barresi, M. Payer, D. Wagner, and T. R. Gross. Control-flow bending: On the effectiveness of control-flow integrity. In USENIX Security, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. P. Chen, H. Xiao, X. Shen, X. Yin, B. Mao, and L. Xie. DROP: Detecting return-oriented programming malicious code. In ICISS, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Y. Cheng, Z. Zhou, M. Yu, X. Ding, and R. H. Deng. ROPecker: A generic and practical approach for defending against ROP attack. In NDSS, 2014.Google ScholarGoogle ScholarCross RefCross Ref
  11. M. Conti, S. Crane, L. Davi, M. Franz, P. Larsen, M. Negro, C. Liebchen, M. Qunaibit, and A.-R. Sadeghi. Losing control: On the effectiveness of control-flow integrity under stack attacks. In CCS, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. S. J. Crane, S. Volckaert, F. Schuster, C. Liebchen, P. Larsen, L. Davi, A. Sadeghi, T. Holz, B. D. Sutter, and M. Franz. It’s a TRaP: Table randomization and protection against functionreuse attacks. In CCS, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. L. Davi, A.-R. Sadeghi, and M. Winandy. ROPdefender: A detection tool to defend against return-oriented programming attacks. In ASIACCS, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. L. Davi, R. Dmitrienko, M. Egele, T. Fischer, T. Holz, R. Hund, S. Nürnberger, and A. Sadeghi. MoCFI: A framework to mitigate control-flow attacks on smartphones. In NDSS, 2012.Google ScholarGoogle Scholar
  15. L. Davi, A.-R. Sadeghi, D. Lehmann, and F. Monrose. Stitching the gadgets: On the ineffectiveness of coarse-grained controlflow integrity protection. In USENIX Security, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. U. Erlingsson, S. Valley, M. Abadi, M. Vrable, M. Budiu, and G. C. Necula. XFI: Software guards for system address spaces. In OSDI, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. I. Evans, S. Fingeret, J. Gonzalez, U. Otgonbaatar, T. Tang, H. Shrobe, S. Sidiroglou-Douskos, M. Rinard, and H. Okhravi. Missing the point: On the effectiveness of code pointer integrity. In S&P, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. I. Evans, F. Long, U. Otgonbaatar, H. Shrobe, M. Rinard, H. Okhravi, and S. Sidiroglou-Douskos. Control jujutsu: On the weaknesses of fine-grained control flow integrity. In CCS, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. E. Göktas, E. Athanasopoulos, H. Bos, and G. Portokalidis. Out of control: Overcoming control-flow integrity. In S&P, 2014.Google ScholarGoogle Scholar
  20. E. Göktas, E. Athanasopoulos, M. Polychroniakis, H. Bos, and G. Portokalidis. Size does matter - why using gadget chain length to prevent code-reuse attacks is hard. In USENIX Security, 2014.Google ScholarGoogle Scholar
  21. B. Hawkins, B. Demsky, D. Bruening, and Q. Zhao. Optimizing binary translation for dynamically generated code. In CGO, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. J. L. Henning. SPEC CPU2006 benchmark descriptions. SIGARCH Computer Architecture News, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. A. Homescu, S. Brunthaler, P. Larsen, and M. Franz. Librando: Transparent code randomization for just-in-time compilers. In CCS, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. D. Jang, Z. Tatlock, and S. Lerner. SafeDispatch: Securing C++ virtual calls from memory corruption attacks. In NDSS, 2014.Google ScholarGoogle ScholarCross RefCross Ref
  25. V. Kiriansky, D. Bruening, and S. Amarasinghe. Secure execution via program shepherding. In USENIX Security, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. V. Kuznetsov, L. Szekeres, M. Payer, G. Candea, R. Sekar, and D. Song. Code-pointer integrity. In OSDI, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. P. Larsen, A. Homescu, S. Brunthaler, and M. Franz. Sok: Automated software diversity. S&P, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. M. E. Locasto, S. Sidiroglou, and A. D. Keromytis. Software self-healing using collaborative application communities. In NDSS, 2005.Google ScholarGoogle Scholar
  29. A. J. Mashtizadeh, A. Bittau, D. Boneh, and D. Mazières. Ccfi: Cryptographically enforced control flow integrity. In CCS, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. V. Mohan, P. Larsen, S. Brunthaler, K. W. Hamlen, and M. Franz. Opaque control-flow integrity. In NDSS, 2015.Google ScholarGoogle ScholarCross RefCross Ref
  31. B. Niu and G. Tan. Rockjit: Securing just-in-time compilation using modular control-flow integrity. In CCS, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. V. Pappas, M. Polychronakis, and A. D. Keromytis. Smashing the gadgets: Hindering return-oriented programming using inplace code randomization. In S&P, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. V. Pappas, M. Polychronakis, and A. D. Keromytis. Transparent ROP exploit mitigation using indirect branch tracing. In SEC, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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
  35. F. Schuster, T. Tendyck, C. Liebchen, L. Davi, A.-R. Sadeghi, and T. Holz. Counterfeit object-oriented programming: On the difficulty of preventing code reuse attacks in C++ applications. In S&P, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. C. Tice, T. Roeder, P. Collingbourne, S. Checkoway, Úlfar Erlingsson, L. Lozano, and G. Pike. Enforcing forward-edge control-flow integrity in GCC & LLVM. In USENIX Security, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. V. van der Veen, D. Andriesse, E. Gökta¸s, B. Gras, L. Sambuc, A. Slowinska, H. Bos, and C. Giuffrida. Practical contextsensitive CFI. In CCS, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Y. Xia, Y. Liu, H. Chen, and B. Zang. CFIMon: Detecting violation of control flow integrity using performance counters. In DSN, 2012.Google ScholarGoogle Scholar
  39. C. Zhang, T. Wei, Z. Chen, L. Duan, S. McCamant, L. Szekeres, D. Song, and W. Zou. Practical control flow integrity & randomization for binary executables. In S&P, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. M. Zhang and R. Sekar. Control flow integrity for COTS binaries. In USENIX Security, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. BlackBox: lightweight security monitoring for COTS 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
      CGO '16: Proceedings of the 2016 International Symposium on Code Generation and Optimization
      February 2016
      283 pages
      ISBN:9781450337786
      DOI:10.1145/2854038

      Copyright © 2016 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: 29 February 2016

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      CGO '16 Paper Acceptance Rate25of108submissions,23%Overall Acceptance Rate312of1,061submissions,29%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader