DejaVuzz
DejaVuzz: Disclosing Transient Execution Bugs with Dynamic Swappable Memory and Differential Information Flow Tracking Assisted Processor Fuzzing
Proceedings of the 30th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 3 2025
Paper Code@inproceedings{xu2025dejavuzz, title = {DejaVuzz: Disclosing transient execution bugs with dynamic swappable memory and differential information flow tracking assisted processor fuzzing}, author = {Xu, Jinyan and Zhou, Yangye and Zhang, Xingzhi and Li, Yinshuai and Tan, Qinhan and Zhang, Yinqian and Zhou, Yajin and Chang, Rui and Shen, Wenbo}, booktitle = {Proceedings of the 30th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 3}, pages = {64–80}, year = {2025}, doi = {10.1145/3676642.3736115} }
DejaVuzz is a pre-silicon processor fuzzer for transient execution vulnerabilities, the class of bugs behind Spectre and Meltdown. It runs on the RTL design of out-of-order RISC-V processors and finds leaks before the chip is manufactured.
Challenges
Earlier hardware fuzzers for transient execution bugs are either limited to specific leakage patterns or take days to find a bug. Two problems hold them back:
- Microarchitectural controllability. Triggering a transient window requires training the predictors first, but training code and transient code compete for the same address space, and much of the training is wasted.
- Microarchitectural observability. It is hard to see where secret data goes inside the processor. Conventional taint tracking over-taints through control flow and reports many leaks that cannot be exploited.
Approach
- Dynamic swappable memory. Isolates different instruction streams within the same address space. DejaVuzz derives targeted training for arbitrary transient windows and removes ineffective training.
- Differential information flow tracking. Compares whether different secrets lead to different selections on the same control signal, which reduces control-flow over-tainting.
- Taint coverage matrix. Measures how sensitive data propagates during transient execution and guides mutation.
- Taint liveness annotations. Bind state registers to their taint registers so that only exploitable leakages are reported.
Results
DejaVuzz was evaluated on two RISC-V out-of-order processors, BOOM and XiangShan.
- Achieved 4.7× the coverage of SpecDoctor, with more diverse transient windows and lower training overhead.
- Found its first bug in about 10 minutes on average with 16 threads, where SpecDoctor takes days.
- Found 5 previously unknown transient execution vulnerabilities, with 6 CVEs assigned.
| Vulnerability | Target | CVE |
|---|---|---|
| Meltdown-Sampling: a Meltdown/MDS hybrid that samples secrets through truncated illegal addresses | XiangShan | CVE-2024-44594 |
| Phantom-RSB: transiently executed instructions corrupt the return stack buffer | BOOM | CVE-2024-44591 |
| Phantom-BTB: an exception is mistaken for an indirect jump and updates the BTB | BOOM | CVE-2024-44590 |
| Spectre-Refetch: instruction fetch unit contention, a Spectre-Rewind variant | BOOM, XiangShan | CVE-2024-44592, CVE-2024-44593 |
| Spectre-Reload: load write-back port contention, a Spectre-Rewind variant | XiangShan | CVE-2024-44595 |
All vulnerabilities in XiangShan have been fixed by its maintainers.