skip to main content
10.1145/3064176.3064205acmconferencesArticle/Chapter ViewAbstractPublication PageseurosysConference Proceedingsconference-collections
research-article
Open Access

A Characterization of State Spill in Modern Operating Systems

Published:23 April 2017Publication History

ABSTRACT

Understanding and managing the propagation of states in operating systems has become an intractable problem due to their sheer size and complexity. Despite modularization efforts, it remains a significant barrier to many contemporary computing goals: process migration, fault isolation and tolerance, live update, software virtualization, and more. Though many previous OS research endeavors have achieved these goals through ad-hoc, tedious methods, we argue that they have missed the underlying reason why these goals are so challenging: state spill.

State spill occurs when a software entity's state undergoes lasting changes as a result of a transaction from another entity. In order to increase awareness of state spill and its harmful effects, we conduct a thorough study of modern OSes and contribute a classification of design patterns that cause state spill. We present StateSpy, an automated tool that leverages cooperative static and runtime analysis to detect state spill in real software entities. Guided by StateSpy, we demonstrate the presence of state spill in 94% of Android system services. Finally, we analyze the harmful impacts of state spill and suggest alternative designs and strategies to mitigate them.

References

  1. Design of the Genode OS Architecture: Interfaces and Mechanisms. http://genode.org/documentation/architecture/interfaces. Accessed: 2016-02-22.Google ScholarGoogle Scholar
  2. Invoking user-space applications from the kernel. https://www.ibm.com/developerworks/library/l-user-space-apps/. Accessed: 2016-10-13.Google ScholarGoogle Scholar
  3. UI/Application Exerciser Monkey. https://developer.android.com/studio/test/monkey.html. Accessed: 2016-10-10.Google ScholarGoogle Scholar
  4. X.Org Security Advisory: Dec. 9, 2014. https://www.x.org/wiki/Development/Security/Advisory-2014-12-09/. Accessed: 2016-10-11.Google ScholarGoogle Scholar
  5. G. Altekar, I. Bagrak, P. Burstein, and A. Schultz. Opus: Online patches and updates for security. In Proc. USENIX Security, 2005.Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. J. Andrus, C. Dall, A. V. Hof, O. Laadan, and J. Nieh. Cells: A virtual mobile smartphone architecture. In Proc. ACM SOSP, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J. Arnold and M. F. Kaashoek. Ksplice: Automatic rebootless kernel updates. In Proc. ACM EuroSys, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. S. Arzt, S. Rasthofer, C. Fritz, E. Bodden, A. Bartel, J. Klein, Y. Le Traon, D. Octeau, and P. McDaniel. FlowDroid: Precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for Android apps. In Proc. ACM PLDI, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. P. Barton-Davis. Linux kernel mailing list: upcalls. http://lkml.iu.edu/hypermail/linux/kernel/9809.3/0922.html. Accessed: 2016-10-13.Google ScholarGoogle Scholar
  10. K.Boos. StateSpy: State Spill Characterization Project Website. http://download.recg.org.Google ScholarGoogle Scholar
  11. K. Boos, A. Amiri Sani, and L. Zhong. Eliminating state entanglement with checkpoint-based virtualization of mobile OS services. In Proc. ACM APSys, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. G. Candea, S. Kawamoto, Y. Fujiki, G. Friedman, and A. Fox. Microreboot - a technique for cheap recovery. In Proc. USENIX OSDI, 2004.Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. E. Chin, A. P. Felt, K. Greenwood, and D. Wagner. Analyzing inter-application communication in Android. In Proc. ACM MobiSys, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. D. D. Clark. The structuring of systems using upcalls. In Proc. ACM SOSP, 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. G. Coulson, G. Blair, P. Grace, F. Taiani, A. Joolia, K. Lee, J. Ueyama, and T. Sivaharan. A generic component model for building systems software. ACM Transactions on Computer Systems, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. F. M. David, E. M. Chan, J. C. Carlyle, and R. H. Campbell. CuriOS: Improving reliability through operating system structure. In Proc. USENIX OSDI, 2008.Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. P. Dong. Reducing fate-sharing in software systems via fine-grained checkpoint and restore. Master's thesis, Rice University, 2016.Google ScholarGoogle Scholar
  18. W. Enck, P. Gilbert, S. Han, V. Tendulkar, B.-G. Chun, L. P. Cox, J. Jung, P. McDaniel, and A. N. Sheth. TaintDroid: an information-flow tracking system for realtime privacy monitoring on smartphones. In Proc. USENIX OSDI, 2010.Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. D. R. Engler, M. F. Kaashoek, and J. O'Toole, Jr. Exokernel: An operating system architecture for application-level resource management. In Proc. ACM SOSP, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. J.-P. Fassino, J.-B. Stefani, J. L. Lawall, and G. Muller. THINK: A software framework for component-based operating system kernels. In Proc. USENIX ATC, 2002.Google ScholarGoogle Scholar
  21. N. Feske and C. Helmuth. A Nitpicker's guide to a minimal-complexity secure GUI. Technical report, Technische Universität Dresden, 2005.Google ScholarGoogle Scholar
  22. R. Fielding. Representational state transfer. Architectural Styles and the Design of Network-based Software Architecture, 2000.Google ScholarGoogle Scholar
  23. R. T. Fielding and R. N. Taylor. Principled design of the modern Web architecture. ACM Transactions on Internet Technology (TOIT), 2002.Google ScholarGoogle Scholar
  24. B. Ford, G. Back, G. Benson, J. Lepreau, A. Lin, and O. Shivers. The Flux OSKit: A substrate for kernel and language research. In Proc. ACM SOSP, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. C. Giuffrida, A. Kuijsten, and A. S. Tanenbaum. Safe and automatic live update for operating systems. In Proc. ACM ASPLOS, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. J. N. Herder, H. Bos, B. Gras, P. Homburg, and A. S. Tanenbaum. Minix 3: A highly reliable, self-repairing operating system. ACM SIGOPS Operating Systems Review, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. K. Hui, J. Appavoo, R. Wisniewski, M. Auslander, D. Edelsohn, B. Gamsa, O. Krieger, B. Rosenburg, and M. Stumm. Supporting hot-swappable components for system software. In Proc. ACM HotOS, 2001. Google ScholarGoogle ScholarCross RefCross Ref
  28. A. Kadav, M. J. Renzelmann, and M. M. Swift. Fine-grained fault tolerance using device checkpoints. In Proc. ACM ASPLOS, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. M. Krohn, A. Yip, M. Brodsky, N. Cliffer, M. F. Kaashoek, E. Kohler, and R. Morris. Information flow control for standard OS abstractions. In Proc. ACM SOSP, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. L. Lamport. A new solution of Dijkstra's concurrent programming problem. Communications of the ACM, 1974. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. A. Madhavapeddy, R. Mortier, C. Rotsos, D. Scott, B. Singh, T. Gazagnaire, S. Smith, S. Hand, and J. Crowcroft. Unikernels: Library operating systems for the cloud. In Proc. ACM ASPLOS, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. K. Makris and K. D. Ryu. Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In Proc. ACM EuroSys, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. N. R. Mehta, N. Medvidovic, and S. Phadke. Towards a taxonomy of software connectors. In Proc. ACM/IEEE ICSE, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. D. S. Milojičić, F. Douglis, Y. Paindaveine, R. Wheeler, and S. Zhou. Process migration. ACM Comput. Surv., 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. D. Octeau, P. McDaniel, S. Jha, A. Bartel, E. Bodden, J. Klein, and Y. Le Traon. Effective inter-component communication mapping in android with EPICC: An essential step towards holistic security analysis. In Proc. USENIX Security, 2013.Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. A. J. Offutt, M. J. Harrold, and P. Kolte. A software metric system for module coupling. Journal of Systems and Software, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. R. Olsson. Applying REST principles on local client-side APIs. Master Thesis, KTH Royal Institute of Technology, 2014.Google ScholarGoogle Scholar
  38. S. Osman, D. Subhraveti, G. Su, and J. Nieh. The design and implementation of Zap: A system for migrating computing environments. In Proc. USENIX OSDI, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. C. Pautasso and E. Wilde. Why is the web loosely coupled?: a multi-faceted metric for service design. In Proc. WWW, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. C. Pautasso, O. Zimmermann, and F. Leymann. RESTful web services vs. 'big' web services: making the right architectural decision. In Proc. WWW, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. D. E. Porter, S. Boyd-Wickizer, J. Howell, R. Olinsky, and G. C. Hunt. Rethinking the library os from the top down. In Proc. ACM ASPLOS, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. A. Reid, M. Flatt, L. Stoller, J. Lepreau, and E. Eide. Knit: Component composition for systems software. In Proc. USENIX OSDI, 2000.Google ScholarGoogle Scholar
  43. N. Sangal, E. Jordan, V. Sinha, and D. Jackson. Using dependency models to manage complex software architecture. In Proc. ACM OOPLSA, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. S. R. Schach, B. Jin, D. R. Wright, G. Z. Heller, and A. J. Offutt. Maintainability of the linux kernel. IEE Proceedings-Software, 2002. Google ScholarGoogle ScholarCross RefCross Ref
  45. R. W. Scheifler and J. Gettys. The x window system. ACM Transactions on Graphics (TOG), 1986.Google ScholarGoogle Scholar
  46. K. Sen. Concolic testing. In Proc. IEEE/ACM ASE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. R. Sethi. Programming languages: concepts and constructs. 1996.Google ScholarGoogle Scholar
  48. M. Siniavine and A. Goel. Seamless kernel updates. In Proc. IEEE/IFIP DSN, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. C. A. Soules, J. Appavoo, K. Hui, R. W. Wisniewski, D. Da Silva, G. R. Ganger, O. Krieger, M. Stumm, M. A. Auslander, M. Ostrowski, B. Rosenburg, and J. Xenidis. System support for online reconfiguration. In Proc. USENIX ATC, 2003.Google ScholarGoogle Scholar
  50. B. P. Swift. User mode scheduling in MINIX 3. Technical report, Vrije University Amsterdam, 2010.Google ScholarGoogle Scholar
  51. M. M. Swift, M. Annamalai, B. N. Bershad, and H. M. Levy. Recovering device drivers. In Proc. USENIX OSDI, 2004.Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. M. M. Swift, B. N. Bershad, and H. M. Levy. Improving the reliability of commodity operating systems. In Proc. ACM SOSP, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. P. Tullmann, J. Lepreau, B. Ford, and M. Hibler. User-level checkpointing through exportable kernel state. In Proc. IEEE Wrkshp. Object-Orientation in Operating Systems, 1996. Google ScholarGoogle ScholarCross RefCross Ref
  54. R. Vallée-Rai, P. Co, E. Gagnon, L. Hendren, P. Lam, and V. Sundaresan. Soot - a java bytecode optimization framework. In Proc. CASCON, 1999.Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. A. Van't Hof, H. Jamjoom, J. Nieh, and D. Williams. Flux: Multi-surface computing in Android. In Proc. ACM EuroSys, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. F. Wei, S. Roy, X. Ou, and Robby. Amandroid: A precise and general inter-component data flow analysis framework for security vetting of Android apps. In Proc. ACM CCS, 2014.Google ScholarGoogle Scholar
  57. M.Weiser. Program slicing. In Proc. ACM/IEEE ICSE, 1981.Google ScholarGoogle Scholar
  58. L. Yu, S. R. Schach, K. Chen, G. Z. Heller, and J. Offutt. Maintainability of the kernels of open-source operating systems: A comparison of Linux with FreeBSD, NetBSD, and OpenBSD. Journal of Systems and Software, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. N. Zeldovich, S. Boyd-Wickizer, E. Kohler, and D. Mazières. Making information flow explicit in HiStar. In Proc. USENIX OSDI, 2006.Google ScholarGoogle Scholar
  60. N. Zeldovich, S. Boyd-Wickizer, and D. Mazieres. Securing distributed systems with information flow control. In Proc. USENIX NSDI, 2008.Google ScholarGoogle Scholar
  61. G. Zellweger, S. Gerber, K. Kourtis, and T. Roscoe. Decoupling cores, kernels, and operating systems. In Proc. USENIX OSDI, 2014.Google ScholarGoogle ScholarDigital LibraryDigital Library

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 '17: Proceedings of the Twelfth European Conference on Computer Systems
    April 2017
    648 pages
    ISBN:9781450349383
    DOI:10.1145/3064176

    Copyright © 2017 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 the author(s) 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: 23 April 2017

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article
    • Research
    • Refereed limited

    Acceptance Rates

    Overall Acceptance Rate241of1,308submissions,18%

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader