Skip to content
STIMSMITH

Architectural CPU Vulnerability

Concept WIKI v2 · 9/1/2026

An architectural CPU vulnerability is a security-relevant mismatch between a processor's architectural specification and its actual implementation, as distinguished from transient-execution attacks that exploit microarchitectical optimizations while remaining architecturally correct. Such vulnerabilities can produce direct, reliable exploitation primitives including denial of service, arbitrary memory read/write, privilege escalation, and cryptographic key recovery, and have been demonstrated in commercial RISC-V CPUs (e.g., T-Head XuanTie C906, C908, C910) as well as the historic Pentium F00F bug.

Definition

An architectural CPU vulnerability is a security-relevant architectural bug: a mismatch between a CPU's specification and its implementation. The RISCVuzz paper contrasts these bugs with transient-execution attacks such as Meltdown and Spectre, which exploit optimizations such as out-of-order and speculative execution but still follow the architectural specification, leaking data only through microarchitectural traces. Architectural bugs, by contrast, can produce direct, reliable exploitation primitives with severe security impact.

Security relevance

Architectural CPU vulnerabilities are especially critical when they can be triggered from unprivileged user space. RISCVuzz argues that restricting testing to user space acts as an automated filter for security-critical bugs: denial-of-service behavior reachable only from machine or supervisor mode has limited impact in typical threat models, while bugs triggerable by unprivileged applications pose a significant threat. User-space testing can also run in sandboxed environments such as Docker containers or Android apps, broadening the realistic attack surface.

Potential impacts demonstrated in the evidence include:

  • Denial of service, including CPU-halting instruction sequences reachable from unprivileged applications and even from inside Docker containers.
  • Arbitrary memory read/write, demonstrated by the GhostWrite attack on the T-Head XuanTie C910, where unprivileged users could read and write arbitrary memory including machine-mode code and MMIO-mapped devices, fully breaking confidentiality and integrity.
  • Privilege escalation, demonstrated by GhostWrite-based attacks that inject and execute code in supervisor- and machine-mode contexts, escalating to root and machine-mode privileges.
  • Cryptographic fault attack, where GhostWrite was used to mount an effective fault attack that fully recovered a 2048-bit RSA key within 30 minutes by inducing faulty behavior in cryptographic operations.
  • Cloud exploitation, confirmed by reproducing the GhostWrite vulnerability on Scaleway's TH1520 bare-metal cloud instances from unprivileged users.
  • Silent data corruption, such as observed behavior where an operation wrote -1 instead of 0.

Examples

The Pentium F00F Bug is cited as an architectural-bug example: it allowed unprivileged users to lock systems via an invalid instruction. RISCVuzz also reports architectural bugs in RISC-V CPUs and emulators, including undocumented instructions, address-handling bugs, decoder bugs, ISA incompatibilities, fault-reporting issues, and QEMU segmentation faults. Specific findings reported by RISCVuzz include:

  • GhostWrite (T-Head XuanTie C910): A bug in the vector extension (v0.7.1) where illegally-encoded vector-store instructions produce no exception on the C910 despite causing a segmentation fault on the C906, enabling unprivileged arbitrary physical-memory read/write.
  • C906 CPU-halting instructions: Halt the CPU when triggered from unprivileged applications and from inside Docker containers; the responsible vendor extension cannot be disabled, leaving no mitigation.
  • C908 CPU-halting instructions: Illegally encoded vector instructions close to but outside the vector extension that halt the C908 from unprivileged execution.
  • Half-precision floating-point bugs: The C906 and C910 execute fsqrt.h and fmv.x.h even when the rs2 field is set to 0, contrary to the ISA specification.
  • fcsr register bug: The C906 and C910 do not ignore writes to bits 8–10 of the fcsr register as the specification requires.
  • Vector extension subset differences: The C910 and C908 each support a different subset of vector instructions, with some doing nothing, others producing unexpected results, and some not implemented at all.
  • QEMU crashes: Cache-block management instructions such as cbo.inval crash QEMU 9.0.0 and 8.2.2 with a segmentation fault; truncating vector conversion instructions such as vfncvt.rtz.x.f.w crash QEMU 7.2.0 due to an assertion failure.
  • Fault-reporting inconsistencies: SiFive CPUs tend to raise bus faults while T-Head CPUs raise segmentation faults; the C910 rounds reported fault addresses up to the next multiple of 16 when the address modulo 16 is greater than 8; the C908 raises segmentation faults for valid non-aligned addresses where a bus error is correct.

Relationship to transient-execution vulnerabilities

Transient-execution vulnerabilities such as Meltdown and Spectre exploit microarchitectural behavior caused by CPU optimizations like speculative and out-of-order execution. The evidence describes them as limited to read primitives because they follow the architectural specification and leak information only through microarchitectural traces. Architectural CPU vulnerabilities differ because they are implementation/specification mismatches and can therefore produce direct architectural effects including writes, code execution, and CPU halt.

Discovery approaches

Fuzzing is a common technique for finding unexpected hardware or software behavior. Differential fuzzing compares multiple implementations of the same specification and flags behavioral divergences as potential bugs without requiring a golden model. RISCVuzz applies this idea to closed-source RISC-V CPUs by executing instruction sequences from user space across multiple CPUs and comparing their architectural results.

RISCVuzz's design targets user-exploitable architectural vulnerabilities in closed-source RISC-V CPUs without requiring source code, golden models, hardware changes, or privileged execution. It uses a server to generate test cases and coordinate multiple RISC-V CPU clients; each client receives an instruction sequence and input, runs it, and reports architectural state such as register values and changed memory contents. The framework emphasizes testing deterministic architectural effects, because nondeterministic behavior such as performance-counter values or operating-system-controlled memory mappings complicates comparison. RISCVuzz discovers most bugs and vulnerabilities within seconds of fuzzing.

Challenges

Evidence from RISCVuzz identifies several challenges in discovering architectural CPU vulnerabilities:

  1. Instruction-sequence generation: the search space is large, and undocumented instructions may be relevant, so testing cannot rely solely on known instruction models.
  2. Nondeterministic effects: comparing architectural behavior requires controlling the state that influences instruction results, but post-silicon testing cannot reset or fully control the CPU and operating-system environment like RTL fuzzing can.
  3. Closed-source analysis: many commercial CPUs are closed-source, which hinders vulnerability analysis and motivates black-box, post-silicon methods.

Mitigations and disclosures

Mitigations identified by RISCVuzz are limited:

  • For vector-extension bugs such as GhostWrite, the only mitigation is disabling the vector extension, which breaks applications using it and incurs up to 77% overhead in rvv-bench benchmarks.
  • For the C906 CPU-halting bug, no mitigation exists because the responsible vendor extension cannot be disabled.
  • Scaleway reproduced the GhostWrite findings and is rolling out kernel patches that disable the vector extension on its C910-based bare-metal instances.
  • T-Head acknowledged and reproduced GhostWrite and the C906 CPU-halting sequence, but had not responded to the C908 CPU-halting instructions at the time of reporting.
  • RISCVuzz also reported a segmentation fault in the latest version of QEMU.

Insights on RISC-V CPU ecosystem

RISCVuzz's findings provide broader insights into the state of hardware RISC-V CPUs: vendor extensions and rushed implementations of non-finalized extensions lead not only to bugs but to exploitable security vulnerabilities that are difficult to mitigate. The base instruction set is tested significantly better than complex extensions such as the vector extension. Even for open-source cores such as the C910, the hardware implementation differs from the released source.

RISC-V context

RISC-V is an open instruction set architecture (ISA) developed by the RISC-V foundation. The RISC-V ISA consists of a core instruction set that must be implemented by all RISC-V CPUs and extensions that can be implemented as needed (e.g., the vector extension). RISC-V systems commonly use privilege levels: User mode for unprivileged applications, Supervisor mode for operating systems, and Machine mode for full hardware control and low-level operations. Access to control/status registers and privileged instructions depends on the current privilege level. In this setting, user-triggerable architectural bugs are particularly security-relevant because they cross the boundary between unprivileged execution and privileged system state.

CITATIONS

28 sources
28 citations
[1] An architectural CPU vulnerability is a security-relevant mismatch between a CPU's specification and its implementation, distinct from transient-execution attacks that follow the architectural specification but leak through microarchitectural traces. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[2] The GhostWrite attack on the T-Head XuanTie C910 allows unprivileged users to read and write arbitrary memory, including machine-mode code and MMIO-mapped devices, fully breaking confidentiality and integrity. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[3] Two end-to-end attacks escalate privileges to root and machine mode by using GhostWrite to inject and execute code in supervisor- and machine-mode contexts. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[4] GhostWrite can be used on cryptographic keys to mount an effective fault attack that fully recovers a 2048-bit RSA key within 30 minutes. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[5] The GhostWrite vulnerability can be exploited by unprivileged users in the cloud and was reproduced on Scaleway's TH1520 bare-metal instances. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[6] The C906 and C908 CPU-halting instruction sequences can be triggered by any unprivileged application and also work from inside Docker containers. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[7] The only mitigation identified for vector-extension bugs such as GhostWrite is disabling the extension, which incurs up to 77% overhead in rvv-bench and is not practical for entities relying on the vector extension. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[8] No mitigation exists for the C906 CPU-halting bug because the responsible vendor extension cannot be disabled. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[9] T-Head acknowledged and reproduced GhostWrite and the C906 CPU-halting sequence but had not yet answered about the C908 CPU-halting instructions; Scaleway reproduced GhostWrite and is rolling out kernel patches that disable the vector extension. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[10] RISCVuzz reports a segmentation fault in the latest version of QEMU. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[11] The base instruction set of tested RISC-V CPUs is tested significantly better than complex extensions such as the vector extension, and even open-source cores like the C910 have hardware implementations that differ from the released source. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[12] RISCVuzz categorizes findings into address-handling bugs, decoder bugs, ISA incompatibilities, and fault-reporting issues. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[13] The C906 and C910 execute half-precision floating-point instructions `fsqrt.h` and `fmv.x.h` even when the rs2 field is set to 0, contrary to the ISA specification. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[14] The C906 and C910 do not ignore writes to bits 8 to 10 of the `fcsr` register, contrary to the ISA specification. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[15] The C910 and C908 each support a different subset of vector instructions; some instructions do nothing, others produce unexpected results, and some are not implemented at all. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[16] Cache-block management instructions such as `cbo.inval` crash QEMU 9.0.0 and 8.2.2 with a segmentation fault; truncating vector conversion instructions such as `vfncvt.rtz.x.f.w` crash QEMU 7.2.0 due to an assertion. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[17] SiFive CPUs tend to raise bus faults while T-Head CPUs raise segmentation faults; the C910 rounds reported fault addresses up to the next multiple of 16 when the address modulo 16 is greater than 8; the C908 raises segmentation faults for valid non-aligned addresses where the correct behavior is a bus error. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[18] The GhostWrite bug is in the v0.7.1 vector extension: illegally-encoded vector-store instructions generate a segmentation fault on the C906 but no exception on the C910, enabling kernel crashes when physical kernel-range addresses are passed. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[19] The C908 halting instructions are illegally encoded vector instructions close to but outside the vector extension; the C906 halting instructions sit on the edge of the documented vendor extension by exploiting an instruction-encoding edge case. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[20] RISCVuzz automatically finds architectural differences that are in most cases bugs, but determining whether a given difference is a security vulnerability still requires manual analysis, which is in many cases relatively quick due to the small reproducers. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[21] RISC-V is an open ISA developed by the RISC-V foundation, consisting of a core instruction set that all RISC-V CPUs must implement plus optional extensions such as the vector extension. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[22] RISC-V defines User, Supervisor, and Machine privilege levels; access to control/status registers and privileged instructions depends on the current privilege level. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[23] User-space testing of architectural CPU behavior can run in sandboxed environments such as Docker containers or Android apps and acts as a filter for security-critical bugs. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[24] Differential fuzzing compares multiple implementations of the same specification and flags behavioral divergences without requiring a golden model; RISCVuzz applies this to closed-source RISC-V CPUs by executing instruction sequences from user space and comparing architectural state such as register values and changed memory contents. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[25] Discovery challenges include the large instruction-sequence search space, nondeterministic architectural effects that complicate comparison (such as performance-counter values and OS-controlled memory mappings), and the closed-source nature of many commercial CPUs. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[26] Transient-execution vulnerabilities such as Meltdown and Spectre follow the architectural specification and leak data only through microarchitectural traces, which limits them to read primitives. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[27] The Pentium F00F Bug is an example of an architectural CPU vulnerability that allowed unprivileged users to lock systems via an invalid instruction. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing
[28] RISCVuzz discovered numerous additional architectural bugs in the tested CPUs and in emulators within seconds of fuzzing. RISCVuzz: Discovering Architectural CPU Vulnerabilities via Differential Fuzzing

VERSION HISTORY

v2 · 9/1/2026 · minimax/minimax-m3 (current)
v1 · 6/11/2026 · gpt-5.5