Skip to main navigation Skip to search Skip to main content

Automatic Permission Check Analysis for Linux Kernel

  • Jinmeng Zhou
  • , Tong Zhang
  • , Wenbo Shen
  • , Dongyoon Lee
  • , Changhee Jung
  • , Ahmed Azab
  • , Ruowen Wang
  • , Peng Ning
  • , Kui Ren

Research output: Contribution to journalArticlepeer-review

3 Scopus citations

Abstract

Permission checks play an essential role in operating system security by providing access control to privileged functionalities. However, it is challenging for kernel developers to scalably verify the soundness of existing checks due to the large codebase and complexity of the kernel. In fact, Linux kernel contains millions of lines of code with hundreds of permission checks, and even worse, its complexity is fast-growing. This paper presents PeX, a static Permission check error detector for LinuX, which takes as input a kernel source code and reports any missing, inconsistent, and redundant permission checks. PeX uses KIRIN (Kernel InteRface based Indirect call aNalysis), a novel, precise, and scalable indirect call analysis technique. Over the interprocedural control flow graph built by KIRIN, PeX automatically identifies permission checks and infers the mappings between permission checks and privileged functions. For each privileged function, PeX examines all possible paths to the function to check if necessary permission checks are correctly enforced. We evaluated PeX on the latest stable Linux kernel v4.18.5 for three types of permission checks: Discretionary Access Controls (DAC), Capabilities, and Linux Security Modules (LSM). PeX reported 45 new permission check errors, 17 of which have been confirmed by the kernel developers.

Original languageEnglish
Pages (from-to)1849-1866
Number of pages18
JournalIEEE Transactions on Dependable and Secure Computing
Volume20
Issue number3
DOIs
StatePublished - May 1 2023

Keywords

  • Linux kernel
  • bug detection
  • permission check
  • static analysis

Fingerprint

Dive into the research topics of 'Automatic Permission Check Analysis for Linux Kernel'. Together they form a unique fingerprint.

Cite this