skip to main content
10.1145/1294261.1294295acmconferencesArticle/Chapter ViewAbstractPublication PagessospConference Proceedingsconference-collections
Article

Secure virtual architecture: a safe execution environment for commodity operating systems

Published: 14 October 2007 Publication History

Abstract

This paper describes an efficient and robust approach to provide a safe execution environment for an entire operating system, such as Linux, and all its applications. The approach, which we call Secure Virtual Architecture (SVA), defines a virtual, low-level, typed instruction set suitable for executing all code on a system, including kernel and application code. SVA code is translated for execution by a virtual machine transparently, offline or online. SVA aims to enforce fine-grained (object level) memory safety, control-flow integrity, type safety for a subset of objects, and sound analysis. A virtual machine implementing SVA achieves these goals by using a novel approach that exploits properties of existing memory pools in the kernel and by preserving the kernel's explicit control over memory, including custom allocators and explicit deallocation. Furthermore, the safety properties can be encoded compactly as extensions to the SVA type system, allowing the (complex) safety checking compiler to be outside the trusted computing base. SVA also defines a set of OS interface operations that abstract all privileged hardware instructions, allowing the virtual machine to monitor all privileged operations and control the physical resources on a given hardware platform. We have ported the Linux kernel to SVA, treating it as a new architecture, and made only minimal code changes (less than 300 lines of code) to the machine-independent parts of the kernel and device drivers. SVA is able to prevent 4 out of 5 memory safety exploits previously reported for the Linux 2.4.22 kernel for which exploit code is available, and would prevent the fifth one simply by compiling an additional kernel library.

Supplementary Material

JPG File (1294295.jpg)
index.html (index.html)
Slides from the presentation
ZIP File (p351-slides.zip)
Supplemental material for Secure virtual architecture: a safe execution environment for commodity operating systems
Audio only (1294295.mp3)
Video (1294295.mp4)

References

[1]
V. Adve, C. Lattner, M. Brukman, A. Shukla, and B. Gaeke. LLVA: A Low-Level Virtual Instruction Set Architecture. In Int'l Symp. on Microarchitecture, Dec. 2003.
[2]
Z. Amsden. Transparent paravirtualization for linux. In Linux Symposium, Ottawa, Canada, Jul 2006.
[3]
T. M. Austin, S. E. Breach, and G. S. Sohi. Efficient detection of all pointer and array access errors.In Proc. ACM SIGPLAN Conf. on Prog. Lang. Design and Impl., June 1994.
[4]
G. Back and W. C. Hsieh. The KaffeOS Java runtime system. ACM Trans. on Prog. Lang. and Sys., 27(4):583--630, 2005.
[5]
B. Bershad, S. Savage, P. Pardyak, E. G. Sirer, D. Becker, M. Fiuczynski, C. Chambers, and S. Eggers. Extensibility, Safety and Performance in the SPIN Operating System. In Proc. ACM Symp. on Op. Sys. Principles, pages 267--284, Copper Mountain, CO, 1995.
[6]
H. Bos and B. Samwel. Safe kernel programming in the oke. In Proceedings of IEEE OPENARCH, 2002.
[7]
A. Brown. A Decompositional Approach to Computer System Performance. PhD thesis, Harvard College, April 1997.
[8]
J. Criswell, B. Monroe, and V. Adve. A virtual instruction set interface for operating system kernels. In Workshop on the Interaction between Operating Systems and Computer Architecture, Boston, June 2006.
[9]
G. Czajkowski and T. von Eicken. JRes: A resource accounting interface for Java. In Proc. ACM SIGPLAN Conf. on Object-Oriented Programming, Systems, Languages, and Applications, pages 21--35, 1998.
[10]
D. Dhurjati and V. Adve. Backwards-compatible array bounds checking for C with very low overhead. In Proc. of the Int'l Conf. on Software Engineering, May 2006.
[11]
D. Dhurjati, S. Kowshik, and V. Adve. SAFECode: Enforcing alias analysis for weakly typed languages. In Proc. ACM SIGPLAN Conf. on Prog. Lang. Design and Impl., June 2006.
[12]
D. Dhurjati, S. Kowshik, V. Adve, and C. Lattner. Memory safety without garbage collection for embedded applications. ACM Trans. on Embedded Computing Systems, Feb. 2005.
[13]
B. Dragovic, K. Fraser, S. Hand, T. Harris, A. Ho, I. Pratt, A. Warfield, P. Barham, and R. Neugebauer. Xen and the art of virtualization. In Proc. ACM Symp. on Op. Sys. Principles, October 2003.
[14]
D. Engler, D. Y. Chen, S. Hallem, A. Chou, and B. Chelf. Bugs as deviant behavior: A general approach to inferring errors in systems code. In Proc. ACM Symp. on Op. Sys. Principles, 2001.
[15]
U. Erlingsson. The Inlined Reference Monitor Approach to Security Policy Enforcement. PhD thesis, Department of Computer Science, Cornell University, Ithaca, NY, 2003. Technical Report 2003--1916.
[16]
M. Fahndrich, M. Aiken, C. Hawblitzel, O. Hodson, G. C. Hunt, J. R. Larus, and S. Levi. Language support for fast and reliable message-based communication in Singularity OS. In Proceedings of EuroSys, 2006.
[17]
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 Symp. on Op. Sys. Principles, 1997.
[18]
R. Ghiya, D. Lavery, and D. Sehr. On the importance of points-to analysis and other memory disambiguation methods for C programs. In Proc. ACM SIGPLAN Conf. on Prog. Lang. Design and Impl., 2001.
[19]
M. Golm, M. Felser, C. Wawersich, and J. Kleinoder. The JX Operating System. In Proc. USENIX Annual Technical Conference, pages 45--58, Monterey, CA, June 2002.
[20]
D. Grossman, G. Morrisett, T. Jim, M. Hicks, Y. Wang, and J. Cheney. Region-based memory management in cyclone. In Proc. ACM SIGPLAN Conf. on Prog. Lang. Design and Impl., June 2002.
[21]
G. Guninski. Linux kernel multiple local vulnerabilities, 2005. http://www.securityfocus.com/bid/11956.
[22]
T. Hallgren, M. P. Jones, R. Leslie, and A. Tolmach. A principled approach to operating system construction in haskell. In Proc. ACM SIGPLAN Int'l Conf. on Functional Programming, 2005.
[23]
C. Hawblitzel, C.-C. Chang, G. Czajkowski, D. Hu, and T. von Eicken. Implementing multiple protection domains in Java. In USENIX Annual Technical Conference, June 1998.
[24]
G. C. Hunt and J. R. Larus. Singularity Design Motivation (Singularity Technical Report 1). Technical Report MSR-TR-2004-105, Microsoft Research, Dec 2004.
[25]
T. Jim, G. Morrisett, D. Grossman, M. Hicks, J. Cheney, and Y. Wang. Cyclone: A safe dialect of C. In USENIX Annual Technical Conference, Monterey, CA, 2002.
[26]
R. W. M. Jones and P. H. J. Kelly. Backwards-compatible bounds checking for arrays and pointers in c programs. In Automated and Algorithmic Debugging, pages 13--26, 1997.
[27]
C. Lattner and V. Adve. LLVM: A Compilation Framework for Lifelong Program Analysis and Transformation. In Proc. Int'l Symp. on Code Generation and Optimization, Mar 2004.
[28]
C. Lattner and V. Adve. Automatic pool allocation: Improving performance by controlling data structure layout in the heap. In Proc. ACM SIGPLAN Conf. on Prog. Lang. Design and Impl., Chicago, IL, Jun 2005.
[29]
C. Lattner, A. D. Lenharth, and V. S. Adve. Making context-sensitive points-to analysis with heap cloning practical for the real world. In Proc. ACM SIGPLAN Conf. on Prog. Lang. Design and Impl., San Diego, USA, Jun 2007.
[30]
S. McCanne and V. Jacobson. The BSD packet filter: A new architecture for user-level packet capture. In USENIX Winter Conference, pages 259--270, 1993.
[31]
G. C. Necula. Proof-carrying code. In Proc. ACM SIGACT Symp. on Principles of Prog. Lang., Jan. 1997.
[32]
G. C. Necula, J. Condit, M. Harren, S. McPeak, and W. Weimer. Ccured: type-safe retrofitting of legacy software. ACM Trans. on Prog. Lang. and Sys., 2005.
[33]
G. C. Necula and P. Lee. Safe kernel extensions without run-time checking. In Symp. on Op. Sys. Design and Impl., 1996.
[34]
G. C. Necula and P. Lee. The design and implementation of a certifying compiler. In Proc. ACM SIGPLAN Conf. on Prog. Lang. Design and Impl., pages 333--344, 1998.
[35]
A. Sabelfeld and A. Myers. Language-based information-flow security. IEEE Journal on Selected Areas in Comm., 2003.
[36]
T. Saulpaugh and C. Mirho. Inside the JavaOS Operating System. Addison-Wesley, Reading, MA, USA, 1999.
[37]
M. I. Seltzer, Y. Endo, C. Small, and K. A. Smith. Dealing with disaster: Surviving misbehaved kernel extensions. In Symp. on Op. Sys. Design and Impl., pages 213--227, Seattle, WA, 1996.
[38]
P. Starzetz. Linux kernel elf core dump local buffer overflow vulnerability. http://www.securityfocus.com/bid/13589.
[39]
P. Starzetz. Linux kernel IGMP multiple vulnerabilities, 2004. http://www.securityfocus.com/bid/11917.
[40]
P. Starzetz and W. Purczynski. Linux kernel setsockopt MCAST\_MSFILTER integer overflow vulnerability, 2004. http://www.securityfocus.com/bid/10179.
[41]
B. Steensgaard. Points-to analysis in almost linear time. In Proc. ACM SIGACT Symp. on Principles of Prog. Lang., 1996.
[42]
M. M. Swift, M. Annamalai, B. N. Bershad, and H. M. Levy. Recovering device drivers. In Symp. on Op. Sys. Design and Impl., Dec. 2004.
[43]
M. M. Swift, B. N. Bershad, and H. M. Levy. Improving the reliability of commodity operating systems. In Proc. ACM Symp. on Op. Sys. Principles, 2003.
[44]
M. M. Swift, B. N. Bershad, and H. M. Levy. Improving the reliability of commodity operating systems. ACM Trans. Comput. Syst, 23(1):77--110, 2005.
[45]
Úlfar Erlingsson, MAbadi, MVrable, MBudiu, and GC. Necula. XFI: Software guards for system address spaces. In Symp. on Op. Sys. Design and Impl., pages 75--88. USENIX, Nov. 2006.
[46]
Ivan Sprundel. Linux kernel bluetooth signed buffer index vulnerability. http://www.securityfocus.com/bid/12911.
[47]
R. Wahbe, S. Lucco, T. E. Anderson, and S. L. Graham. Efficient software-based fault isolation. ACM SIGOPS Operating Systems Review, 27(5):203--216, December 1993.
[48]
D. Walker. A type system for expressive security policies. In Proc. ACM SIGACT Symp. on Principles of Prog. Lang., pages 254--267, 2000.
[49]
N. Weaver, V. Paxson, S. Staniford, and R. Cunningham. A taxonomy of computer worms. In Proc. of the ACM workshop on Rapid malcode, 2003.
[50]
F. Zhou, J. Condit, Z. Anderson, I. Bagrak, R. Ennals, M. Harren, G. Necula, and E. Brewer. Safedrive: Safe and recoverable extensions using language-based techniques. In Symp. on Op. Sys. Design and Impl., pages 45--60. USENIX, Nov. 2006.

Cited By

View all
  • (2024)Reboot-Based Recovery of Unikernels at the Component Level2024 54th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN)10.1109/DSN58291.2024.00017(15-28)Online publication date: 24-Jun-2024
  • (2023)Rethinking system audit architectures for high event coverage and synchronous log availabilityProceedings of the 32nd USENIX Conference on Security Symposium10.5555/3620237.3620260(391-408)Online publication date: 9-Aug-2023
  • (2023)Veil: A Protected Services Framework for Confidential Virtual MachinesProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 410.1145/3623278.3624763(378-393)Online publication date: 25-Mar-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
SOSP '07: Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
October 2007
378 pages
ISBN:9781595935915
DOI:10.1145/1294261
  • cover image ACM SIGOPS Operating Systems Review
    ACM SIGOPS Operating Systems Review  Volume 41, Issue 6
    SOSP '07
    December 2007
    363 pages
    ISSN:0163-5980
    DOI:10.1145/1323293
    Issue’s Table of Contents
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 14 October 2007

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. compiler
  2. memory safety
  3. operating systems
  4. security
  5. type safety
  6. typed assembly language
  7. virtual machine

Qualifiers

  • Article

Conference

SOSP07
Sponsor:
SOSP07: ACM SIGOPS 21st Symposium on Operating Systems Principles 2007
October 14 - 17, 2007
Washington, Stevenson, USA

Acceptance Rates

Overall Acceptance Rate 174 of 961 submissions, 18%

Upcoming Conference

SOSP '25
ACM SIGOPS 31st Symposium on Operating Systems Principles
October 13 - 16, 2025
Seoul , Republic of Korea

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)44
  • Downloads (Last 6 weeks)3
Reflects downloads up to 03 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Reboot-Based Recovery of Unikernels at the Component Level2024 54th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN)10.1109/DSN58291.2024.00017(15-28)Online publication date: 24-Jun-2024
  • (2023)Rethinking system audit architectures for high event coverage and synchronous log availabilityProceedings of the 32nd USENIX Conference on Security Symposium10.5555/3620237.3620260(391-408)Online publication date: 9-Aug-2023
  • (2023)Veil: A Protected Services Framework for Confidential Virtual MachinesProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 410.1145/3623278.3624763(378-393)Online publication date: 25-Mar-2023
  • (2023)Fat Pointers for Temporal Memory Safety of CProceedings of the ACM on Programming Languages10.1145/35860387:OOPSLA1(316-347)Online publication date: 6-Apr-2023
  • (2023)EC: Embedded Systems Compartmentalization via Intra-Kernel Isolation2023 IEEE Symposium on Security and Privacy (SP)10.1109/SP46215.2023.10179285(2990-3007)Online publication date: May-2023
  • (2022)Tutorial: LLVM for Security Practitioners2022 IEEE Secure Development Conference (SecDev)10.1109/SecDev53368.2022.00012(1-2)Online publication date: Oct-2022
  • (2022)Multi-layered Monitoring for Virtual MachinesSystem Dependability and Analytics10.1007/978-3-031-02063-6_6(99-140)Online publication date: 26-Jul-2022
  • (2021)μSCOPE: A Methodology for Analyzing Least-Privilege Compartmentalization in Large Software ArtifactsProceedings of the 24th International Symposium on Research in Attacks, Intrusions and Defenses10.1145/3471621.3471839(296-311)Online publication date: 6-Oct-2021
  • (2021)Tutorial: LLVM for Security Practitioners2021 IEEE Secure Development Conference (SecDev)10.1109/SecDev51306.2021.00016(9-10)Online publication date: Oct-2021
  • (2020)SilhouetteProceedings of the 29th USENIX Conference on Security Symposium10.5555/3489212.3489281(1219-1236)Online publication date: 12-Aug-2020
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media