Skip to content

GhostWrite (CVE-2024-44067)

T-Head XuanTie C910/C920 RISC-V core'larındaki hatalı bir vector instruction doğrudan physical address'ler üzerinde çalışır, MMU ve cache'leri bypass eder ve unprivileged attacker'lara keyfi physical-memory read/write yetkisi verir.

Mechanism

Bug class: bir speculation side channel değil, bir architectural CPU defect'i

Spectre/Meltdown-style transient leak'lerin aksine, GhostWrite silikondaki deterministic, architectural bir bug'dır: T-Head XuanTie C910 (ve ilgili C920) üzerindeki belirli vector-extension instruction'ları yanlış implement edilmiştir, öyle ki operand'larını virtual değil, bir physical address olarak ele alırlar.

Kırılan security invariant'ı, bir CPU'nun sağladığı en temel olanıdır: virtual-memory isolation. Normalde her user-mode memory access, virtual'ı physical'a çeviren ve page permission'larını enforce eden MMU'dan geçer. Hatalı vector store/load bunu tamamen atlar:

  • Physical memory'ye doğrudan access eder, page table'ları ve process isolation'ı bypass ederek.
  • Cache hierarchy'sini bypass eder, böylece access normal cache coherence/state'e yansımaz.
  • Performance counter'larda görünmezdir, esasen hiçbir microarchitectural iz bırakmaz.

Sonuç şudur: herhangi bir unprivileged process keyfi physical memory'yi okuyup yazabilir — kernel memory, diğer process'ler ve memory-mapped device register'ları — bu da tam device takeover sağlar (root, bir VM'den hypervisor escape, peripheral'ları ele geçirme). Bir instruction-level architectural defect olduğundan, hiçbir miktarda OS-level isolation veya speculation barrier onu kontrol altına alamaz.

Kategorileme notu

Kategorileme editöryeldir: GhostWrite bu KB'de diğer hardware/microarchitectural güvenlik açıklarıyla birlikte sidechannel altında tutulur, ancak teknik sınıflandırması yukarıda belirtildiği gibi bir side channel değil, deterministic bir architectural CPU defect'idir.

Walkthrough

High-level kavramsal akış (GhostWrite / RISCVuzz, CISPA)

Yalnızca kavramsal — instruction encoding veya address yok:

  1. Differential CPU fuzzing. Araştırmacılar, kısa randomize programlar (illegally-encoded ve undocumented instruction'lar dahil) üreten, aynı programı birkaç farklı RISC-V CPU'da çalıştıran ve architectural sonuçları karşılaştıran differential bir fuzzer olan RISCover'ı inşa etti.

  2. Divergence'i tespit et. T-Head C910'da, diğer RISC-V core'ların reject ettiği (illegal-instruction trap) belirli vector-store instruction'ları bunun yerine execute etti ve anomalous memory effect'leri üretti — bir architectural bug'ın açık işareti.

  3. Primitive'i karakterize et. Anomalous vector instruction'ın, mevcut page table'lardan bağımsız olarak seçilen bir physical address'e yazdığı gösterildi, bu da doğrudan bir arbitrary-physical-write primitive'i (ve buna karşılık gelen bir read) verdi.

user mode:  vector_store(<value>, <physical-address-operand>)
expected:   translate via MMU + permission check
actual:     write lands at the raw physical address, no MMU, no cache
  1. Impact. Unprivileged code'dan bu, kernel structure'larını veya device register'larını overwrite etmeye ve tam kontrole escalate etmeye yeter. C910 (örneğin TH1520 tabanlı Lichee Pi 4A, Milk-V Meles, BeagleV-Ahead) ve C920 (SG2042 tabanlı sistemler) kullanan board'larda/instance'larda, bare-metal cloud instance'lar dahil, doğrulandı.

Detection

  • Runtime'da tespiti zor: tasarım gereği hatalı access cache'leri bypass eder ve performance counter'lara görünmezdir, bu yüzden HPC/EDR telemetry'si onu işaretlemez. CISPA ekibi, spesifik bir detection tooling'inin bulunmadığını belirtir.
  • Static/inventory yaklaşımı: etkilenen hardware'i (XuanTie C910/C920 core'lar: TH1520, SG2042 SoC'leri) CPU/SoC identification ile tespit et ve tüm bu cihazları açık olarak değerlendir.
  • Crash/corruption forensics: etkilenen RISC-V board'larında açıklanamayan kernel memory corruption veya device-register tampering, tek gözlemlenebilir downstream semptom olabilir.

Mitigation

  • Vector extension'ı disable et — tek etkili fix. Bu, hatalı instruction'ları kaldırır ama CPU işlevselliğinin büyük bir kısmını disable eder (önemli performans kaybı).
  • Kernel default: Linux 6.14+ etkilenen T-Head core'larında vector extension'ı otomatik olarak disable eder (örneğin buggy hardware için CONFIG_RISCV_ISA_V handling ile).
  • Microcode patch yok: hardwired bir architectural defect olduğu için, vector unit'i disable etmek dışında microcode veya software workaround ile fix edilemez.
  • Procurement/isolation: vector disable edilene kadar etkilenen silikonda untrusted workload'ları (multi-tenant cloud/container) çalıştırmaktan kaçın.

References