Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Yizhuo Zhai

dblp:278/0316 · DBLP profile ↗
← Back
8ranked-venue papers
3as first author
7since 2021 · last 2025
0009-0005-8243-3495ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Security and privacy · 4 · 2 first-author · 4 since 2021Software engineering, systems software and programming languages · 4 · 1 first-author · 3 since 2021

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
8 papers
Program analysis · 50% Software testing · 41% Debugging and program repair · 5%
Network and information security
5 papers
Systems and software security · 100%

Topics — the 17 heaviest of 18, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
2.042024
Enhancing Static Analysis for Practical Bug Detection: An LLM-Integrated Approach · Proc. ACM Program. Lang. 2024
Assisting Static Analysis with Large Language Models: A ChatGPT Experiment · ESEC/SIGSOFT FSE 2023
UBITect: a precise and scalable method to detect use-before-initialization bugs in Linux kernel · ESEC/SIGSOFT FSE 2020
Program analysis › static analysis
bug detection
1.422024
Enhancing Static Analysis for Practical Bug Detection: An LLM-Integrated Approach · Proc. ACM Program. Lang. 2024
Assisting Static Analysis with Large Language Models: A ChatGPT Experiment · ESEC/SIGSOFT FSE 2023
Systems and software security
vulnerability discovery
1.322024
SymBisect: Accurate Bisection for Fuzzer-Exposed Vulnerabilities · USENIX Security Symposium 2024
Statically Discovering High-Order Taint Style Vulnerabilities in OS Kernels · CCS 2021
Systems and software security
operating system security
1.022022
Progressive Scrutiny: Incremental Detection of UBI bugs in the Linux Kernel · NDSS 2022
UBITect: a precise and scalable method to detect use-before-initialization bugs in Linux kernel · ESEC/SIGSOFT FSE 2020
Software testing › fuzzing
coverage-guided fuzzing
0.912025
Rug: Turbo Llm for Rust Unit Test Generation · ICSE 2025
Software testing › test generation › automated test generation
LLM-based test generation
0.912025
Rug: Turbo Llm for Rust Unit Test Generation · ICSE 2025
Software testing
test coverage
0.912025
Rug: Turbo Llm for Rust Unit Test Generation · ICSE 2025
Software testing › test generation
unit test generation
0.912025
Rug: Turbo Llm for Rust Unit Test Generation · ICSE 2025
Systems and software security › vulnerability discovery
fuzzing
0.812024
SymBisect: Accurate Bisection for Fuzzer-Exposed Vulnerabilities · USENIX Security Symposium 2024
Program analysis › static analysis › bug detection
false positive reduction
0.712023
Assisting Static Analysis with Large Language Models: A ChatGPT Experiment · ESEC/SIGSOFT FSE 2023
Systems and software security › information flow tracking › taint analysis
static taint analysis
0.512021
Statically Discovering High-Order Taint Style Vulnerabilities in OS Kernels · CCS 2021
Systems and software security › operating system security
linux kernel security
0.412020
UBITect: a precise and scalable method to detect use-before-initialization bugs in Linux kernel · ESEC/SIGSOFT FSE 2020
Debugging and program repair
bisection
0.212024
SymBisect: Accurate Bisection for Fuzzer-Exposed Vulnerabilities · USENIX Security Symposium 2024
Debugging and program repair
fault localization
0.212024
SymBisect: Accurate Bisection for Fuzzer-Exposed Vulnerabilities · USENIX Security Symposium 2024
Compilers and program optimization
program instrumentation
0.212024
Don't Waste My Efforts: Pruning Redundant Sanitizer Checks by Developer-Implemented Type Checks · USENIX Security Symposium 2024
Operating systems
kernel
0.112021
Statically Discovering High-Order Taint Style Vulnerabilities in OS Kernels · CCS 2021
Program analysis
symbolic execution
0.112020
UBITect: a precise and scalable method to detect use-before-initialization bugs in Linux kernel · ESEC/SIGSOFT FSE 2020

Methods — techniques the papers use, named apart from their topics

fuzzing · 2.4large language model · 2.3summary-based taint flow construction · 1.0type qualifier analysis · 0.9symbolic execution · 0.9flow-sensitive analysis · 0.9ChatGPT · 0.7interprocedural static analysis · 0.5inter-procedural static analysis · 0.5
YearPublicationVenuePosition
2025 Rug: Turbo Llm for Rust Unit Test Generation
abstract
Unit testing improves software quality by evaluating isolated sections of the program. This approach alleviates the need for comprehensive program-wide testing and confines the potential error scope within the software. However, unit test development is time-consuming, requiring developers to create appropriate test contexts and determine input values to cover different code regions. This problem is particularly pronounced in Rust due to its intricate type system, making traditional unit test generation tools ineffective in Rust projects. Recently, large language models (LLMs) have demonstrated their proficiency in understanding programming language and completing software engineering tasks. However, merely prompting LLMs with a basic prompt like “generate unit test for the following source code” often results in code with compilation errors. In addition, LLM-generated unit tests often have limited test coverage. To bridge this gap and harness the capabilities of LLM, we design and implement RUG, an end-to-end solution to automatically generate the unit test for Rust projects. To help LLM's generated test pass Rust strict compilation checks, RUG designs a semantic-aware bottom-up approach to divide the context construction problem into dependent sub-problems. It solves these sub-problems sequentially using an LLM and merges them to a complete context. To increase test coverage, RUG integrates coverage-guided fuzzing with LLM to prepare fuzzing harnesses. Applying RUG on 17 real-world Rust programs (average$24,937 \text{LoC}$), we show that RUG can achieve a high code coverage, up to$\mathbf{7 1. 3 7 \%}$, closely comparable to human effort$(\mathbf{7 3. 1 8 \%})$. We submitted 113 unit tests generated by RUG covering the new code: 53 of them have been accepted, 17 rejected, and 43 are pending for review.
Fan Sang, Yizhuo Zhai, Xiaokuan Zhang, Taesoo Kim
ICSE3
2024 Don't Waste My Efforts: Pruning Redundant Sanitizer Checks by Developer-Implemented Type Checks
Yizhuo Zhai, Zhiyun Qian, Chengyu Song, Manu Sridharan, Trent Jaeger, Paul L. Yu, Srikanth V. Krishnamurthy
USENIX Security Symposium1
2024 SymBisect: Accurate Bisection for Fuzzer-Exposed Vulnerabilities
Zheng Zhang 0058, Yu Hao 0006, Weiteng Chen, Xiaochen Zou, Haonan Li 0009, Yizhuo Zhai, Zhiyun Qian, Billy Lau
USENIX Security Symposium7
2024 Enhancing Static Analysis for Practical Bug Detection: An LLM-Integrated Approach
abstract
While static analysis is instrumental in uncovering software bugs, its precision in analyzing large and intricate codebases remains challenging. The emerging prowess of Large Language Models (LLMs) offers a promising avenue to address these complexities. In this paper, we present LLift, a pioneering framework that synergizes static analysis and LLMs, with a spotlight on identifying use-before-initialization (UBI) bugs within the Linux kernel. Drawing from our insights into variable usage conventions in Linux, we enhance path analysis using post-constraint guidance. This approach, combined with our methodically crafted procedures, empowers LLift to adeptly handle the challenges of bug-specific modeling, extensive codebases, and the unpredictable nature of LLMs. Our real-world evaluations identified four previously undiscovered UBI bugs in the mainstream Linux kernel, which the Linux community has acknowledged. This study reaffirms the potential of marrying static analysis with LLMs, setting a compelling direction for future research in this area.
Haonan Li 0009, Yu Hao 0006, Yizhuo Zhai, Zhiyun Qian
Proc. ACM Program. Lang.3
2023 Assisting Static Analysis with Large Language Models: A ChatGPT Experiment
abstract
Recent advances of Large Language Models (LLMs), e.g., ChatGPT, exhibited strong capabilities of comprehending and responding to questions across a variety of domains. Surprisingly, ChatGPT even possesses a strong understanding of program code. In this paper, we investigate where and how LLMs can assist static analysis by asking appropriate questions. In particular, we target a specific bug-finding tool, which produces many false positives from the static analysis. In our evaluation, we find that these false positives can be effectively pruned by asking carefully constructed questions about function-level behaviors or function summaries. Specifically, with a pilot study of 20 false positives, we can successfully prune 8 out of 20 based on GPT-3.5, whereas GPT-4 had a near-perfect result of 16 out of 20, where the four failed ones are not currently considered/supported by our questions, e.g., involving concurrency. Additionally, it also identified one false negative case (a missed bug). We find LLMs a promising tool that can enable a more effective and efficient program analysis.
Haonan Li 0009, Yu Hao 0006, Yizhuo Zhai, Zhiyun Qian
ESEC/SIGSOFT FSE3
2022 Progressive Scrutiny: Incremental Detection of UBI bugs in the Linux Kernel
Yizhuo Zhai, Yu Hao 0006, Zheng Zhang 0058, Weiteng Chen, Guoren Li, Zhiyun Qian, Chengyu Song, Manu Sridharan, Srikanth V. Krishnamurthy, Trent Jaeger, Paul L. Yu
NDSS1
2021 Statically Discovering High-Order Taint Style Vulnerabilities in OS Kernels
abstract
Static analysis is known to yield numerous false alarms when used in bug finding, especially for complex vulnerabilities in large code bases like the Linux kernel. One important class of such complex vulnerabilities is what we call "high-order taint style vulnerability", where the taint flow from the user input to the vulnerable site crosses the boundary of a single entry function invocation (i.e., syscall). Due to the large scope and high precision requirement, few have attempted to solve the problem. In this paper, we present SUTURE, a highly precise and scalable static analysis tool capable of discovering high-order vulnerabilities in OS kernels. SUTURE employs a novel summary-based high-order taint flow construction approach to efficiently enumerate the cross-entry taint flows, while incorporating multiple innovative enhancements on analysis precision that are unseen in existing tools, resulting in a highly precise inter-procedural flow-, context-, field-, index-, and opportunistically path-sensitive static taint analysis. We apply SUTURE to discover high-order taint vulnerabilities in multiple Android kernels from mainstream vendors (e.g., Google, Samsung, Huawei), the results show that SUTURE can both confirm known high-order vulnerabilities and uncover new ones. So far, SUTURE generates 79 true positive warning groups, of which 19 have been confirmed by the vendors, including a high severity vulnerability rated by Google. SUTURE also achieves a reasonable false positive rate (51.23%) perceived by users of our tool.
Hang Zhang 0012, Weiteng Chen, Yu Hao 0006, Guoren Li, Yizhuo Zhai, Xiaochen Zou, Zhiyun Qian
CCS5
2020 UBITect: a precise and scalable method to detect use-before-initialization bugs in Linux kernel
abstract
Use-before-Initialization (UBI) bugs in the Linux kernel have serious security impacts, such as information leakage and privilege escalation. Developers are adopting forced initialization to cope with UBI bugs, but this approach can still lead to undefined behaviors (e.g., NULL pointer dereference). As it is hard to infer correct initialization values, we believe that the best way to mitigate UBI bugs is detection and manual patching. Precise detection of UBI bugs requires path-sensitive analysis. The detector needs to track an associated variable’s initialization status along all the possible program execution paths to its uses. However, such exhaustive analysis prevents the detection from scaling to the whole Linux kernel. This paper presents UBITect, a UBI bug finding tool which combines flow-sensitive type qualifier analysis and symbolic execution to perform precise and scalable UBI bug detection. The scalable qualifier analysis guides symbolic execution to analyze variables that are likely to cause UBI bugs. UBITect also does not require manual effort for annotations and hence, it can be directly applied to the kernel without any source code or intermediate representation (IR) change. On the Linux kernel version 4.14, UBITect reported 190 bugs, among which 78 bugs were deemed by us as true positives and 52 were confirmed by Linux maintainers.
Yizhuo Zhai, Yu Hao 0006, Hang Zhang 0012, Daimeng Wang, Chengyu Song, Zhiyun Qian, Mohsen Lesani, Srikanth V. Krishnamurthy, Paul L. Yu
ESEC/SIGSOFT FSE1