Home Contact Our Team

Unique Program Execution Checking

Unique Program Execution Checking (UPEC) is a verification methodology designed to assess the security of programs in the presence of confidential information, commonly referred to as "secrets." At its core, UPEC aims to determine whether the execution of a program remains invariant despite the presence of such secrets. This is formalized through the concept of unique program execution, which asserts that a program's behavior must not depend on the secret value across all execution cycles. To achieve this, UPEC constructs a tailored miter model where two instances of a CPU execute the same program under identical conditions, except for one protected memory location that contains the secret. By examining variations in execution behavior at the microarchitectural level - known as the "microarchitectural footprint" - UPEC identifies potential vulnerabilities that could arise from secret-dependent variations, which may not be evident at the instruction set architecture (ISA) level. This comprehensive approach allows for the verification of security properties in complex out-of-order processors, ensuring that sensitive information remains secure throughout program execution.

Learn More

Vulnerabilities detected by UPEC

The following table summarizes various findings of vulnerabilities to microarchitectural attacks that have been detected using the UPEC methodology.

Device Type of Vulnerability Description Detected by Disclosed Publication Fix Available?
Rocket Chip PMP violation The PMP implementation allowed the modification of a locked memory configuration in privileged mode without requiring a reboot. UPEC Mar. 25, 2019 M.R. Fadiheh, D. Stoffel, C. Barrett, S. Mitra and W. Kunz: Processor Hardware Security Vulnerabilities and their Detection by Unique Program Execution Checking, 2019 Design, Automation & Test in Europe Conference & Exhibition (DATE) Yes
BOOMv2 Spectre Multiple variants of Spectre-PHT and Spectre-BTB using the cache as a side channel UPEC-OoO Jul. 20, 2020 M.R. Fadiheh, J. Müller, R. Brinkmann, S. Mitra, D. Stoffel and W. Kunz: A Formal Approach for Detecting Vulnerabilities to Transient Execution Attacks in Out-of-Order Processors 2020 57th ACM/IEEE Design Automation Conference (DAC) No
Spectre-STC Port contention on write port to register file UPEC-OoO Jul. 20, 2020 M.R. Fadiheh, J. Müller, R. Brinkmann, S. Mitra, D. Stoffel and W. Kunz: A Formal Approach for Detecting Vulnerabilities to Transient Execution Attacks in Out-of-Order Processors 2020 57th ACM/IEEE Design Automation Conference (DAC) No
Spectre-STC Port contention on TLB UPEC-OoO Jul. 20, 2020 M.R. Fadiheh, J. Müller, R. Brinkmann, S. Mitra, D. Stoffel and W. Kunz: A Formal Approach for Detecting Vulnerabilities to Transient Execution Attacks in Out-of-Order Processors 2020 57th ACM/IEEE Design Automation Conference (DAC) No
BOOMv3 (SonicBOOM) Meltdown Delayed exception handling in load-store-unit UPEC-OoO May 6, 2021 T. Jauch, A. Wezel, M.R. Fadiheh, P. Schmitz, S. Ray, J. Fung, C.W. Fletcher, D. Stoffel, W. Kunz: Secure-by-Construction Design Methodology for CPUs: Implementing Secure Speculation on the RTL 2023 IEEE/ACM International Conference on Computer Aided Design (ICCAD) Yes
Spectre UPEC identified a total number of 29 instructions being able to form a covert channel:

LB, LBU, LH, LHU, LW,
BEQ, BNE, BGE, BGEU, BLT, BLTU, JALR,
STA (for all store instructions),
DIV, DIVU, DIVW, DIVUW,
REM, REMU, REMW, REMUW,
FDIV.S, FDIV.D, FSQRT.S, and FSQRT.D
UPEC-OoO Oct. 20, 2023 T. Jauch, A. Wezel, M.R. Fadiheh, P. Schmitz, S. Ray, J. Fung, C.W. Fletcher, D. Stoffel, W. Kunz: Secure-by-Construction Design Methodology for CPUs: Implementing Secure Speculation on the RTL 2023 IEEE/ACM International Conference on Computer Aided Design (ICCAD) Yes
Data-Dependent Timing Data-dependent timing behaviour for all division, load/store, jump, branch, and floating-point instructions UPEC-DIT Aug. 25, 2023 L. Deutschmann, J. Müller, M.R. Fadiheh, D. Stoffel, W. Kunz: A Scalable Formal Verification Methodology for Data-Oblivious Hardware in IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol. 43, no. 9, pp. 2551-2564, Sept. 2024 No
CVA6 Data-Dependent Timing Data-dependent timing behaviour for all division, load/store, jump, and branch instructions UPEC-DIT Aug. 23, 2022 L. Deutschmann, J. Müller, M.R. Fadiheh, D. Stoffel, W. Kunz: Towards a formally verified hardware root-of-trust for data-oblivious computing 2022 59th ACM/IEEE Design Automation Conference (DAC) No
OpenTitan Integrity Violation Denial-of-Service (DoS) via untrusted IP UPEC-OI Aug. 9, 2023 D. Mehmedagić, M.R. Fadiheh, J. Müller, A.L. Duque Antón, D. Stoffel, W. Kunz: Design of Access Control Mechanisms in Systems-on-Chip with Formal Integrity Guarantees 2023 32nd USENIX Security Symposium (USENIX Security 23) No
CHERIoT-Ibex Meltdown-style attack Possibility to probe for specific bits of a data word outside the current compartment. UPEC-CHERI Jul. 26, 2024 A.L. Duque Antón, J. Müller, P. Schmitz, T. Jauch, A. Wezel, L. Deutschmann, M.R. Fadiheh, D. Stoffel, W. Kunz: VeriCHERI: Exhaustive Formal Security Verification of CHERI at the RTL 2024 IEEE/ACM International Conference on Computer Aided Design (ICCAD) Yes

Case Studies

Transient Execution Side Channels

UPEC exposed issues in out-of-order processors that allowed leakage of secret data due to mispredicted speculative execution paths.

Learn More

Timing Side Channels

UPEC-DIT detected timing-based vulnerabilities in various cores and hardware accelerator where data-dependent execution could reveal confidential data.

Learn More

Functional Security Bugs

UPEC found weaknesses in Physical Memory Protection (PMP) that allowed unauthorized access to protected memory regions.

Learn More

Operation Integrity in SoCs

UPEC-OI was able to detect a Denial-of-Service attack using an untrusted IP in OpenTitan.

Learn More