Skip to content

Plundervolt (CVE-2019-11157)

Software-kontrollü CPU undervolting'i Intel SGX enclave hesaplamalarına fault enjekte eder, ayrıcalıklı ama enclave-dışı bir attacker'dan kriptografik sonuçları ve memory-safety invariant'larını bozar.

Mechanism

Modern Intel Core CPU'ları, sistem software'inin güç tasarrufu için dinamik bir voltaj offset'i ("undervolting") talep etmesine izin veren, belgelenmemiş ama iyi bilinen ayrıcalıklı bir MSR arayüzü açığa çıkarır. Verimlilik için voltajı kırpan aynı arayüz core voltajını belirli bir frekansta doğru çalışma için gereken seviyenin altına itebilir, CPU içinde geçici hesaplama fault'larına neden olur.

Note

Kırılan güvenlik sınırı SGX integrity'sidir. SGX enclave memory'sinin confidentiality ve integrity'sini garanti eder, ama CPU'nun doğru hesapladığını varsayar. Voltaj, enclave'in koruma domain'inin dışında ayrıcalıklı software tarafından kontrol edilen sistem geneli bir analog özelliktir. Bir enclave bir hedef instruction'ı (ör. bir multiply veya bir AES-NI round'u) yürütürken voltajı tam olarak güvenilirlik marjının hemen ötesine iterek, bir attacker bit'leri CPU içinde, memory'ye yazılmadan önce flip eder — böylece memory encryption/integrity hiçbir zaman bir ihlal görmez. SGX'in varsaydığı invariant ("işlemci instruction'larımı sadakatle yürütür") sessizce yanlıştır.

Walkthrough

Public advisory'i ve akademik yazıyı takip eden üst düzey yeniden üretim:

  1. Voltaj arayüzünü ele geçir. Attacker ayrıcalıklıdır (root / ring 0) ama enclave tarafından güvenilmez — kanonik SGX tehdit modeli. Model-specific undervolting MSR'sine erişir.
  2. Marjları karakterize et. Sistem aksi halde stabil kalırken belirli bir instruction sınıfının fault verdiği dar rejimi bulmak için frekans/voltaj offset'lerini tara. Multiplication'lar ve AES-NI güvenilir fault hedefleridir.
  3. Senkronize et. Enclave'i hedeflenen işlemi yapmaya tetikle, sonra o işleme zamanlanmış kısa, derin bir undervolt uygula, ardından güvenli bir voltaja dön.

    set_undervolt(-V_offset)   # just below stability for target op
    enclave_call(target_op)    # e.g. AES round / index multiply
    set_undervolt(0)           # restore
    
  4. Fault'u exploit et. Gösterilen iki sonuç:

    • Crypto fault saldırıları. Tek bir hatalı AES-NI veya RSA-CRT sonucu klasik differential-fault-analysis key recovery'yi mümkün kılar.
    • Memory-safety bozulması. array-index veya pointer aritmetiği için kullanılan bir multiply'a fault vermek, aksi halde doğru olan enclave kodunun içinde out-of-bounds erişimler üretir ve enclave'i içeriden kırar.
Memory koruması neden yardımcı olmaz

SGX'in memory encryption engine'i DRAM'deki byte'ları korur. Plundervolt değeri hâlâ bir register/ALU ara değeriyken bozar, dolayısıyla (geçerli biçimde) encrypt edilip saklanan şey bozulmuş değerdir. Hiçbir integrity check tetiklenmez.

Detection

  • Undervolting MSR'si üzerinde telemetri. voltage-control MSR'sine yazmalar production server'larda son derece nadirdir. Bu yazmaları loglayan/uyaran hypervisor veya kernel enstrümantasyonu en güçlü sinyaldir.
  • Isıl/voltaj anomali izleme. Enclave aktivitesiyle korelasyonlu ani, tekrarlı voltaj düşüşleri anormaldir; platform telemetrisi (ör. RAPL/PMU enerji counter'ları) profil-dışı sapmalar gösterebilir.
  • Crash/MCE desenleri. Agresif undervolting çoğu zaman machine-check exception'ları, beklenmeyen enclave abort'ları veya deterministik olmayan sonuçlar üretir — bu tür olayların kümeleri incelenmeyi gerektirir.

Mitigation

  • Microcode + BIOS güncellemesi (INTEL-SA-00289). Intel, bir BIOS/firmware güncellemesiyle birleştiğinde software undervolting arayüzünü devre dışı bırakan ve kilitli durumu SGX attestation'ında yansıtan bir microcode güncellemesi yayımladı, böylece remote verifier'lar yamalanmamış/over-voltage edilebilir platformlardaki enclave'leri reddedebilir.
  • Attestation gating. Relying party'ler yama-sonrası TCB seviyesini zorunlu kılmalıdır ki hâlâ voltaj arayüzünü açığa çıkaran bir makine remote attestation'da başarısız olsun.
  • Least privilege burada tasarımı gereği yetersizdir — attacker'ın ayrıcalıklı olduğu varsayılır — dolayısıyla düzeltme, access control değil tehlikeli arayüzü kaldırmaktır.
  • SGX kullanılmıyorsa eyleme gerek yok, Intel'in rehberliğine göre; saldırı özellikle enclave integrity'sini hedefler.

References