Projects
Software-inspired Hardware Verification
Hardware bugs are hard to patch after manufacturing and must be found before tape-out. This line of work brings techniques from software testing and analysis to pre-silicon hardware verification.
Processor Fuzzing
Processor fuzzing, also called CPU fuzzing, applies fuzzing to pre-silicon processor verification. Processor fuzzers generate test programs and run them on the simulated RTL design. They then compare the execution results against an oracle to detect bugs. Our fuzzers have found 20 previously unknown bugs, with 17 CVEs assigned, in the open-source RISC-V processors Rocket, BOOM, CVA6, and XiangShan.
Functional bug fuzzer: MorFuzz
Side-channel bug fuzzer: DejaVuzz
Hardware-assisted System Security
This line of work designs hardware primitives that help operating system kernels protect their security-critical data against memory corruption with low performance overhead.
Data Space Randomization
Data space randomization protects security-critical kernel data, such as return addresses and user credentials, against memory corruption and disclosure. It encodes the in-memory representation of this data with secret keys. Without the keys, corrupted data decodes to garbage values and leaked data does not reveal the plaintext. Our cryptographically strong hardware primitives protect six types of sensitive data in the Linux kernel at register granularity with minimal performance overhead.
Kernel data randomization: RegVaultRegVault II
See Publications for the full list of papers.