Overview
ProcessorFuzz: Processor Fuzzing with Control and Status Registers Guidance is a 2023 paper by Sadullah Canakci, Chathura Rajapaksha, Leila Delshadtehrani, Anoop Mysore Nataraja, Michael Bedford Taylor, Manuel Egele, and Ajay Joshi. It appeared at the IEEE International Symposium on Hardware Oriented Security and Trust (HOST 2023).[C1]
The paper presents ProcessorFuzz, a processor fuzzer for RTL verification. The work is motivated by a mismatch between conventional fuzzing feedback and processor verification needs: hardware is not directly executable on a host machine, and standard software coverage notions do not directly capture meaningful processor-state exploration.[C2][C3]
Main ideas
ProcessorFuzz contributes two central mechanisms.[C2]
- CSR-transition coverage. The fuzzer uses a coverage metric based on transitions in Control and Status Registers (CSRs). The paper argues that CSRs are central to the architectural specification and that some ISA-defined CSRs directly expose processor finite-state-machine state, such as current privilege mode or the event that caused a floating-point exception. Under this view, a new CSR transition indicates exploration of a new processor state.[C2][C4]
- ISA-simulation-based input triage. ProcessorFuzz uses ISA simulation to determine whether a test input is interesting before spending more effort on it. The paper states that prior work used RTL simulation for that purpose, which is more time-consuming, and that ISA simulation is significantly faster. This helps eliminate repetitive inputs and concentrate fuzzing on qualitatively distinct test patterns.[C2]
A design overview presented in supporting slides further states that ProcessorFuzz uses an ISA simulator to collect CSR-transition coverage, making coverage collection more efficient and HDL-agnostic.[C5]
Context in processor fuzzing
The paper frames ProcessorFuzz as an adaptation of coverage-guided fuzzing to processors. In software fuzzing, the program under test can be executed directly on the host machine. For processors, however, the design is implemented at the RTL level and must be evaluated through RTL simulation.[C3]
Within this setting, ProcessorFuzz uses architectural state feedback rather than low-level implementation activity as its primary guidance signal. Its emphasis is on reaching new architecturally meaningful processor states through CSR transitions.[C2][C4]
Evaluation
ProcessorFuzz is evaluated on three open-source RISC-V processors: Rocket, BOOM, and BlackParrot. The paper describes these designs as spanning different HDLs, including Chisel and SystemVerilog, and different microarchitectural styles, including in-order and out-of-order execution.[C2][C6]
Against DIFUZZRTL, the paper reports that for bugs found by DIFUZZRTL, ProcessorFuzz triggers them 1.23× faster on average.[C2][C7]
The evaluation also reports 8 new bugs in open-source processors and 1 new bug in a reference model.[C2][C8] Supporting slides summarize this as 9 new bugs total, broken down as 6 in BlackParrot, 2 in Rocket and BOOM, and 1 in the Dromajo ISA simulator.[C6]
Significance
The paper's key contribution is a processor-fuzzing guidance signal based on CSR state transitions rather than generic software-style coverage or purely RTL-level activity. Combined with fast ISA-simulation-based triage, ProcessorFuzz aims to improve the efficiency of RTL processor fuzzing and speed up bug discovery.[C2][C5]
Publication details
- Venue: IEEE International Symposium on Hardware Oriented Security and Trust (HOST 2023)[C1]
- Pages: 1-12[C1]
- DOI: 10.1109/HOST55118.2023.10133714[C1]
Citation key
- [C1] Bibliographic metadata
- [C2] Paper excerpt describing contributions, motivation, and evaluation summary
- [C3] Paper excerpt on adapting coverage-guided fuzzing to processor verification
- [C4] Paper excerpt defining CSR-transition coverage intuition
- [C5] Slide deck design overview
- [C6] Slide deck evaluation summary
- [C7] Paper excerpt reporting 1.23× faster bug triggering
- [C8] Paper excerpt reporting 8 processor bugs plus 1 reference-model bug