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):
- Non-canonical bir erişimin transient olarak işlenmesini tetikleyen, dokümante edilmiş hassas sequence'i oluştur.
- 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.
- Bağımlı bir transient operasyon, erişilen değeri bir cache-based channel'a encode eder.
-
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-missesve 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
LFENCEbarrier'ı 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.