skip to main content
10.1145/3338906.3340460acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

Industry practice of coverage-guided enterprise Linux kernel fuzzing

Published: 12 August 2019 Publication History

Abstract

Coverage-guided kernel fuzzing is a widely-used technique that has helped kernel developers and testers discover numerous vulnerabilities. However, due to the high complexity of application and hardware environment, there is little study on deploying fuzzing to the enterprise-level Linux kernel. In this paper, collaborating with the enterprise developers, we present the industry practice to deploy kernel fuzzing on four different enterprise Linux distributions that are responsible for internal business and external services of the company. We have addressed the following outstanding challenges when deploying a popular kernel fuzzer, syzkaller, to these enterprise Linux distributions: coverage support absence, kernel configuration inconsistency, bugs in shallow paths, and continuous fuzzing complexity. This leads to a vulnerability detection of 41 reproducible bugs which are previous unknown in these enterprise Linux kernel and 6 bugs with CVE IDs in U.S. National Vulnerability Database, including flaws that cause general protection fault, deadlock, and use-after-free.

References

[1]
Shuai Bai, Dan Li, Minhuan Huang, and Hua Chen. 2017. Synthesis of Linux Kernel Fuzzing Tools Based on Syscall. DEStech Transactions on Computer Science and Engineering (2017).
[2]
Costin Carabas and Mihai Carabas. 2017. Fuzzing the Linux kernel. 2017 Computing Conference (2017), 839–843.
[3]
Yuanliang Chen, Yu Jiang, Fuchen Ma, Jie Liang, Mingzhe Wang, Chijin Zhou, Zhuo Su, and Xun Jiao. 2018. EnFuzz: Ensemble Fuzzing with Seed Synchronization among Diverse Fuzzers.
[4]
Jake Corina, Aravind Machiry, Christopher Salls, Yan Shoshitaishvili, Shuang Hao, Christopher Krügel, and Giovanni Vigna. 2017. DIFUZE: Interface Aware Fuzzing for Kernel Drivers. In ACM Conference on Computer and Communications Security.
[5]
HyungSeok Han and Sang Kil Cha. 2017. IMF: Inferred Model-based Fuzzer. In ACM Conference on Computer and Communications Security.
[6]
Dae R. Jeong, Kyung Tae Kim, Basavesh Shivakumar, Byoungyoung Lee, and Insik Shin. 2018. RAZZER : Finding Kernel Race Bugs through Fuzzing.
[7]
Dave Jiang. 2018. Kernel/relay.c: limit kmalloc size to KMALLOC_MAX_SIZE. https://lkml.org/lkml/2018/2/6/842. Accessed April 26, 2019.
[8]
Kyungtae Kim and Byoungyoung Lee. 2018. ALEXKIDD-FUZZER: Kernel Fuzzing Guided by Symbolic Information. https://www.cerias.purdue.edu/assets/ symposium/2018-posters/829-D1B.pdf. Accessed April 26, 2019.
[9]
Andi Kleen. 2018. Manipulate options in a .config file from the command line. https://github.com/torvalds/linux/blob/master/scripts/config. Accessed April 26, 2019.
[10]
Dust Li. 2019. Tcp: fix potential NULL pointer dereference in tcp_sk_exit. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id= b506bc975f60f06e13e74adb35e708a23dc4e87c. Accessed April 26, 2019.
[11]
Jun Li, Bodong Zhao, and Chao Zhang. 2018. Fuzzing: a survey. Cybersecurity 1 (2018), 6.
[12]
Hongliang Liang, Xiaoxiao Pei, Xiaodong Jia, Wuwei Shen, and Jian Guang Zhang. 2018. Fuzzing: State of the Art. IEEE Transactions on Reliability 67 (2018), 1199–1218.
[13]
Jie Liang, Yu Jiang, Yuanliang Chen, Mingzhe Wang, Chijin Zhou, and Jiaguang Sun. 2018. Pafl: extend fuzzing optimizations of single mode to industrial parallel mode. In Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. ACM, 809–814.
[14]
Jie Liang, Mingzhe Wang, Yuanliang Chen, Yu Jiang, and Renwei Zhang. 2018. Fuzz testing in practice: Obstacles and solutions. 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER) (2018), 562–566.
[15]
Valentin J. M. Manès, H. Han, Choongwoo Han, Sang Kil Cha, Manuel Egele, Edward J. Schwartz, and Maverick Woo. 2018. Fuzzing: Art, Science, and Engineering. CoRR abs/1812.00140 (2018).
[16]
Shankara Pailoor, Andrew Aday, and Suman Jana. 2018. MoonShine: Optimizing OS Fuzzer Seed Selection with Trace Distillation. In USENIX Security Symposium.
[17]
Borislav Petkov. 2013. X86, platform, kvm, kconfig: Turn existing .config’s into KVM-capable configs. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ linux.git/commit/?id=46ff53874bd935ab9955dee56d60212857e89bf3. Accessed April 26, 2019.
[18]
Sergej Schumilo, Cornelius Aschermann, Robert Gawlik, Sebastian Schinzel, and Thorsten Holz. 2017. kAFL: Hardware-Assisted Feedback Fuzzing for OS Kernels. In USENIX Security Symposium.
[19]
Seyed Mohammadjavad Seyed Talebi, Hamid Tavakoli, Hang Zhang, Zheng Zhang, Ardalan Amiri Sani, and Zhiyun Qian. 2018. Charm: Facilitating Dynamic Analysis of Device Drivers of Mobile Systems. In USENIX Security Symposium.
[20]
Dmitry Vyukov. 2015. Syzkaller: an unsupervised, coverage-guided kernel fuzzer. https://github.com/google/syzkaller. Accessed April 26, 2019.
[21]
Dmitry Vyukov. 2016. Documentation: note that KCOV is supported since gcc 4.5. https://lkml.org/lkml/2016/12/13/373. Accessed April 26, 2019.
[22]
Dmitry Vyukov. 2019. kcov: code coverage for fuzzing. https://www.kernel.org/ doc/html/latest/dev-tools/kcov.html. Accessed April 26, 2019.
[23]
Mingzhe Wang, Jie Liang, Yuanliang Chen, Yu Jiang, Xun Jiao, Han Liu, Xibin Zhao, and Jiaguang Sun. 2018. SAFL: increasing and accelerating testing coverage with symbolic execution and guided fuzzing. In Proceedings of the 40th International Conference on Software Engineering: Companion Proceeedings. ACM, 61–64.
[24]
Wen Xu, Hyungon Moon, Sanidhya Kashyap, Po-Ning Tseng, and Taesoo Kim. 2019. Fuzzing File Systems via Two-Dimensional Input Space Exploration. In IEEE Symposium on Security and Privacy (SP).
[25]
Wei You, Peiyuan Zong, Kai Chen, Xiaofeng Wang, Xiaojing Liao, Pan Bian, and Bin Liang. 2017. SemFuzz: Semantics-based Automatic Generation of Proof-of-Concept Exploits. In ACM Conference on Computer and Communications Security.
[26]
Xu Yu. 2019. Bpf: do not restore dst_reg when cur_state is freed. https://lkml. org/lkml/2019/3/21/202. Accessed April 26, 2019.

Cited By

View all
  • (2023)Horus: Accelerating Kernel Fuzzing through Efficient Host-VM Memory Access ProceduresACM Transactions on Software Engineering and Methodology10.1145/361166533:1(1-25)Online publication date: 8-Aug-2023
  • (2023)Brief Industry Paper: Directed Kernel Fuzz Testing on Real-time Linux2023 IEEE Real-Time Systems Symposium (RTSS)10.1109/RTSS59052.2023.00059(495-499)Online publication date: 5-Dec-2023
  • (2023)Daisy: Effective Fuzz Driver Synthesis with Object Usage Sequence Analysis2023 IEEE/ACM 45th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP)10.1109/ICSE-SEIP58684.2023.00013(87-98)Online publication date: May-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ESEC/FSE 2019: Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
August 2019
1264 pages
ISBN:9781450355728
DOI:10.1145/3338906
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: 12 August 2019

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Kernel fuzzing
  2. bug detection
  3. enterprise Linux

Qualifiers

  • Research-article

Conference

ESEC/FSE '19
Sponsor:

Acceptance Rates

Overall Acceptance Rate 112 of 543 submissions, 21%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)87
  • Downloads (Last 6 weeks)11
Reflects downloads up to 21 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Horus: Accelerating Kernel Fuzzing through Efficient Host-VM Memory Access ProceduresACM Transactions on Software Engineering and Methodology10.1145/361166533:1(1-25)Online publication date: 8-Aug-2023
  • (2023)Brief Industry Paper: Directed Kernel Fuzz Testing on Real-time Linux2023 IEEE Real-Time Systems Symposium (RTSS)10.1109/RTSS59052.2023.00059(495-499)Online publication date: 5-Dec-2023
  • (2023)Daisy: Effective Fuzz Driver Synthesis with Object Usage Sequence Analysis2023 IEEE/ACM 45th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP)10.1109/ICSE-SEIP58684.2023.00013(87-98)Online publication date: May-2023
  • (2023)PreciseBugCollector: Extensible, Executable and Precise Bug-Fix CollectionProceedings of the 38th IEEE/ACM International Conference on Automated Software Engineering10.1109/ASE56229.2023.00163(1899-1910)Online publication date: 11-Nov-2023
  • (2023)TEEFuzzerFuture Generation Computer Systems10.1016/j.future.2023.03.008144:C(192-204)Online publication date: 26-Apr-2023
  • (2022)Demystifying the dependency challenge in kernel fuzzingProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510126(659-671)Online publication date: 21-May-2022
  • (2022)Abaci-finder: Linux kernel crash classification through stack trace similarity learningJournal of Parallel and Distributed Computing10.1016/j.jpdc.2022.06.003168(70-79)Online publication date: Oct-2022
  • (2021)HEALERProceedings of the ACM SIGOPS 28th Symposium on Operating Systems Principles10.1145/3477132.3483547(344-358)Online publication date: 26-Oct-2021
  • (2021)An Empirical Study of OSS-Fuzz Bugs2021 IEEE/ACM 18th International Conference on Mining Software Repositories (MSR)10.1109/MSR52588.2021.00026(131-142)Online publication date: May-2021
  • (2021)Fuzzing: Challenges and ReflectionsIEEE Software10.1109/MS.2020.301677338:3(79-86)Online publication date: May-2021
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media