The Linux kernel, a cornerstone of modern computing across servers, mobile devices, and embedded systems, is increasingly vulnerable due to its vast complexity and continuous evolution. Fuzz testing has emerged as a critical technique for identifying kernel vulnerabilities, with tools like Syzkaller uncovering thousands of bugs through system call (syscall) fuzzing. However, the effectiveness of such tools relies heavily on manually crafted syscall specifications, a process that struggles to keep pace with the kernel’s dynamic nature and intricate semantics. This paper presents SyzForge, a novel automated framework to generate precise syscall specifications for Linux kernel drivers. SyzForge integrates four stages: static analysis to distill kernel semantics from source code, symbolic execution for dynamic constraint-based parameter solving, fuzzing with Syzkaller to assess coverage, and large language model (LLM)-driven refinement to correct specification errors. Evaluated on Linux kernel version 6.12, SyzForge achieves a 13.3% increase in code coverage compared to default Syzkaller specifications, outperforming KernelGPT by 4.3%, SyzDescribe by 5.5%, and DIFUZE by 24.3%. Furthermore, it identifies 19 previously unreported vulnerabilities, demonstrating its practical impact. By automating a traditionally manual process, SyzForge enhances fuzzing efficiency, improves vulnerability detection, and strengthens kernel security. This work addresses key limitations in existing specification generation methods, offering a scalable and adaptable solution to safeguard the Linux ecosystem amid its ongoing development.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

SyzForge: An Automated System Call Specification Generation Process for Efficient Kernel Fuzzing

  • ZhiZhuo Tang,
  • Jian Lin,
  • Weiyu Dong,
  • Hang Ma,
  • Tieming Liu

摘要

The Linux kernel, a cornerstone of modern computing across servers, mobile devices, and embedded systems, is increasingly vulnerable due to its vast complexity and continuous evolution. Fuzz testing has emerged as a critical technique for identifying kernel vulnerabilities, with tools like Syzkaller uncovering thousands of bugs through system call (syscall) fuzzing. However, the effectiveness of such tools relies heavily on manually crafted syscall specifications, a process that struggles to keep pace with the kernel’s dynamic nature and intricate semantics. This paper presents SyzForge, a novel automated framework to generate precise syscall specifications for Linux kernel drivers. SyzForge integrates four stages: static analysis to distill kernel semantics from source code, symbolic execution for dynamic constraint-based parameter solving, fuzzing with Syzkaller to assess coverage, and large language model (LLM)-driven refinement to correct specification errors. Evaluated on Linux kernel version 6.12, SyzForge achieves a 13.3% increase in code coverage compared to default Syzkaller specifications, outperforming KernelGPT by 4.3%, SyzDescribe by 5.5%, and DIFUZE by 24.3%. Furthermore, it identifies 19 previously unreported vulnerabilities, demonstrating its practical impact. By automating a traditionally manual process, SyzForge enhances fuzzing efficiency, improves vulnerability detection, and strengthens kernel security. This work addresses key limitations in existing specification generation methods, offering a scalable and adaptable solution to safeguard the Linux ecosystem amid its ongoing development.