skip to main content
10.1145/3339252.3340506acmotherconferencesArticle/Chapter ViewAbstractPublication PagesaresConference Proceedingsconference-collections
research-article

Securing the Device Drivers of Your Embedded Systems: Framework and Prototype

Published:26 August 2019Publication History

ABSTRACT

Device drivers on Linux-powered embedded or IoT systems execute in kernel space thus must be fully trusted. Any fault in drivers may significantly impact the whole system. However, third-party embedded hardware manufacturers usually ship their proprietary device drivers with their embedded devices. These out-of-tree device drivers are generally of poor quality because of a lack of code audit. In this paper, we propose a new approach that helps third-party developers to improve the reliability and safety of device drivers without modifying the kernel: Rewriting device drivers in a memory-safe programming language called Rust. Rust's rigorous language model assists the device driver developers to detect many security issues at compile time. We designed a framework to help developers to quickly build device drivers in Rust. We also utilized Rust's security features to provide several useful infrastructures for developers so that they can easily handle kernel memory allocation and concurrency management, at the same time, some common bugs (e.g. use-after-free) can be alleviated. We demonstrate the generality of our framework by implementing a real-world device driver on Raspberry Pi 3, and our evaluation shows that device drivers generated by our framework have acceptable binary size for canonical embedded systems and the runtime overhead is negligible.

References

  1. Silas Boyd-Wickizer and Nickolai Zeldovich. 2010. Tolerating Malicious Device Drivers in Linux. In Proceedings of the 2010 USENIX Conference on USENIX Annual Technical Conference (USENIXATC'10). USENIX Association, Berkeley, CA, USA, 9--9. http://dl.acm.org/citation.cfm?id=1855840.1855849 Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Haogang Chen, Yandong Mao, Xi Wang, Dong Zhou, Nickolai Zeldovich, and M. Frans Kaashoek. 2011. Linux Kernel Vulnerabilities: State-of-the-art Defenses and Open Problems. In Proceedings of the Second Asia-Pacific Workshop on Systems (APSys '11). ACM, New York, NY, USA, 5:1--5:5. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Andy Chou, Junfeng Yang, Benjamin Chelf, Seth Hallem, and Dawson Engler. 2001. An Empirical Study of Operating Systems Errors. In Proceedings of the Eighteenth ACM Symposium on Operating Systems Principles (SOSP '01). ACM, New York, NY, USA, 73--88. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman. 2005. Linux Device Drivers, 3rd Edition. O'Reilly Media, Inc. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Will Dietz, Peng Li, John Regehr, and Vikram Adve. 2012. Understanding Integer Overflow in C/C++. In Proceedings of the 34th International Conference on Software Engineering (ICSE '12). IEEE Press, Piscataway, NJ, USA, 760--770. http://dl.acm.org/citation.cfm?id=2337223.2337313 Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. D. R. Engler, M. F. Kaashoek, and J. O'Toole, Jr. 1995. Exokernel: An Operating System Architecture for Application-level Resource Management. In Proceedings of the Fifteenth ACM Symposium on Operating Systems Principles (SOSP '95). ACM, New York, NY, USA, 251--266. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Jean-Yves Girard. 1995. Linear Logic: Its Syntax and Semantics. In Proceedings of the Workshop on Advances in Linear Logic. Cambridge University Press, New York, NY, USA, 1--42. http://dl.acm.org/citation.cfm?id=212876.212880 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Jorrit N. Herder, Herbert Bos, Ben Gras, Philip Homburg, and Andrew S. Tanenbaum. 2006. MINIX 3: A Highly Reliable, Self-repairing Operating System. SIGOPS Oper. Syst. Rev. 40, 3 (July 2006), 80--89. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Rob Johnson and David Wagner. 2004. Finding User/Kernel Pointer Bugs with Type Inference. In Proceedings of the 13th Conference on USENIX Security Symposium - Volume 13 (SSYM'04). USENIX Association, Berkeley, CA, USA, 9--9. http://dl.acm.org/citation.cfm?id=1251375.1251384 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Amit Levy, Bradford Campbell, Branden Ghena, Daniel B. Giffin, Pat Pannuto, Prabal Dutta, and Philip Levis. 2017. Multiprogramming a 64kB Computer Safely and Efficiently. In Proceedings of the 26th Symposium on Operating Systems Principles (SOSP '17). ACM, New York, NY, USA, 234--251. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Yandong Mao, Haogang Chen, Dong Zhou, Xi Wang, Nickolai Zeldovich, and M. Frans Kaashoek. 2011. Software Fault Isolation with API Integrity and Multi-principal Modules. In Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles (SOSP '11). ACM, New York, NY, USA, 115--128. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Nicolas Palix, GaÃńl Thomas, Suman Saha, Christophe CalvÃĺs, Julia Lawall, and Gilles Muller. 2011. Faults in Linux: Ten Years Later. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). ACM, New York, NY, USA, 305--318. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Jeffrey Vander Stoep. 2016. Android: protecting the kernel.Google ScholarGoogle Scholar
  14. L. Tan, E. M. Chan, R. Farivar, N. Mallick, J. C. Carlyle, F. M. David, and R. H. Campbell. 2007. iKernel: Isolating Buggy and Malicious Device Drivers Using Hardware Virtualization Support. In Third IEEE International Symposium on Dependable, Autonomic and Secure Computing (DASC 2007). 134--144. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Philip Wadler. 1990. Linear Types Can Change the World!. In PROGRAMMING CONCEPTS AND METHODS. North.Google ScholarGoogle Scholar
  16. Feng Zhou, Jeremy Condit, Zachary Anderson, Ilya Bagrak, Rob Ennals, Matthew Harren, George Necula, and Eric Brewer. 2006. SafeDrive: Safe and Recoverable Extensions Using Language-based Techniques. In Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation - Volume 7 (OSDI '06). USENIX Association, Berkeley, CA, USA, 4--4. http://dl.acm.org/citation.cfm?id=1267308.1267312 Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Securing the Device Drivers of Your Embedded Systems: Framework and Prototype

    Recommendations

    Reviews

    Brijendra Singh

    Device drivers in embedded systems are often filled with defects and security issues, which occur at any stage. During either buildtime or runtime, logical errors can have a significant impact. Although there is no single tool or method for secure solutions, this paper presents Rust programming as a solution, which is a language for building highly safe systems. Device drivers have weak spots, and this brings security concerns at large scale. Based on the presented data that 60 percent of the code base covers device drivers, this paper proposes a new approach and framework using Rust. By leveraging Rust's security features, the authors have built a framework that combines Rust runtime libraries with Linux build systems. The proposed framework directs developers to write efficient and safe device drivers using Rust. This paper contains sufficient evidence for using Rust's features, which are well suited to improve device driver security. It includes well-defined interfacing between Rust runtime libraries and kernel space. Overall, the research analysis clearly conveys the ideas and methods to approach it. This research is excellent integrated information for device driver and Linux kernel developers.

    Access critical reviews of Computing literature here

    Become a reviewer for Computing Reviews.

    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 Other conferences
      ARES '19: Proceedings of the 14th International Conference on Availability, Reliability and Security
      August 2019
      979 pages
      ISBN:9781450371643
      DOI:10.1145/3339252

      Copyright © 2019 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: 26 August 2019

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article
      • Research
      • Refereed limited

      Acceptance Rates

      Overall Acceptance Rate228of451submissions,51%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader