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:
-
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.
-
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.
-
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
- 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_Vhandling 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.