Skip to content

Transient Execution of Non-Canonical Accesses (CVE-2020-12965)

AMD Zen+/Zen 2 üzerinde, belirli software sequence'leri load/store'ların transient olarak sadece alt 48 address bit'ini kullanmasına izin verir; non-canonical fault'u görmezden gelip kısa süreliğine farklı (canonical) bir adrese erişir — Meltdown-style bir transient leak.

Mechanism

Bug class / invariant

x86-64 virtual address'leri canonical olmalıdır (48–63 bit'leri bit 47'yi sign-extend eder); non-canonical bir erişim fault (#GP) verir ve architectural ya da kalıcı microarchitectural etki üretmemelidir. Invariant şudur: form-dışı bir adres asla gerçek veriye çözümlenmez. Etkilenen AMD CPU'larda, belirli instruction sequence'leriyle birleştiğinde, non-canonical bir adrese yapılan bir load/store transient olarak sadece alt 48 bit kullanılarak işlenebilir — yani high bit'ler zamanında fault vermek yerine düşürülür, böylece erişim transient olarak karşılık gelen canonical adresi hedefler. O transient window'da fetch edilen veri, fault iletilmeden önce bağımlı instruction'lara forward edilip bir microarchitectural channel'a encode edilebilir; bu da bir transient-execution (Meltdown-type) leak / hijacking primitive verir.

Walkthrough

Üst düzey, Musaev & Fetzer'den (EuroSec 2021; AMD CVE-2020-12965 / advisory):

  1. Non-canonical bir erişimin transient olarak işlenmesini tetikleyen, dokümante edilmiş hassas sequence'i oluştur.
  2. High address bit'leri onu non-canonical yapacak bir load/store gönder; CPU transient olarak alt 48 bit'i kullanıp alias'lanmış canonical adrese erişir.
  3. Bağımlı bir transient operasyon, erişilen değeri bir cache-based channel'a encode eder.
  4. GP architectural olarak iletilip transient path squash edildikten sonra,

    değeri cache-timing (Flush+Reload / Prime+Probe) ile recover et.

Detection

  • Saf transient davranış — leak'in kendisi için güvenilir bir host log sinyali yok.
  • Exploitation harness'lerini tespit et: non-canonical erişimler üreten sıkı loop'lar (sık #GP fault handling) cache-timing probe'larıyla eşleşmiş; perf/EDR telemetry'de yükselmiş cache-misses ve fault sayıları.
  • Etkilenen microarchitecture'ı (Zen+/Zen 2) ve mitigation durumunu doğrula.

Mitigation

  • CVE-2020-12965 için AMD'nin rehberini izle: AMD mevcut Spectre-style software pratiklerini önerdi, özellikle transient window'un veri forward etmesini önlemek için ilgili load'lardan sonra serileştirici bir LFENCE barrier'ı eklemeyi.
  • Önerilen serileştirmeyi hassas path'lerde getiren OS/microcode güncellemelerini uygula.
  • Genel transient-execution hardening (attacker'ın erişebileceği load'ların etrafında speculation barrier'ları, güvenilmeyen index'lerin masking'i) maruziyeti azaltır.

References