SEVurity¶
AMD SEV/SEV-ES, guest memory'sini integrity-free, position-dependent ve tweak değerleri tekrarlayan bir XEX tweak ile encrypt eder; o tweak'i reverse-engineer ederek ve mevcut ciphertext'i yeniden kullanarak, kötü niyetli bir host hızlı bir "encryption oracle" inşa eder ve saptanabilir I/O manipülasyonuna dayanmadan VM'e kod enjekte eder.
Mechanism¶
Integrity-free, yeniden kullanılabilir tweak'ler encryption'ı bir oracle'a çevirir
SEV'in memory encryption'ı (XEX tarzı bir mode'da tweakable bir block cipher), host'un guest RAM'ini okumasını ya da anlamlı biçimde değiştirmesini durdurmak için tasarlanmıştır. İki özellik onu zayıflatır:
- Integrity yok. Ciphertext authenticate edilmez, dolayısıyla host ciphertext block'larını splice ve relocate edebilir, CPU yine de onları decrypt eder.
- Zayıf, position-dependent bir tweak. İncelenen processor'larda XEX tweak'i, physical address'ten periyodik / yeniden kullanılabilir bir şekilde türetilir — aynı tweak öngörülebilir offset'lerde tekrarlanır. Bu, bir konumda öğrenilen bir plaintext/ciphertext çiftinin, aynı tweak'e sahip başka bir konumda decrypt olan plaintext'i kontrol etmek için replay edilebileceği anlamına gelir.
SEVurity'nin içgörüsü, önceden belgelenmemiş, "iyileştirilmiş" XEX tweak'ini reverse-engineer etmek ve sonra tweak reuse'u istismar ederek bir yüksek hızlı encryption oracle inşa etmektir: attacker, seçilen plaintext'in seçilen guest address'lerinde görünmesine neden olabilir. Kritik olarak bu artık guest I/O'yu kontrol etmeyi gerektirmez (daha önceki saldırıların kullandığı gürültülü, kolayca loglanan kanal), bu da saldırıyı daha stealth yapar. Kırılan invariant, paper'ın başlığıyla aynı mottodur — no security without integrity.
Walkthrough¶
2020 IEEE S&P paper'ından (Wilke, Wichelmann, Morbitzer, Eisenbarth) ve arXiv:2004.11071'den yüksek seviyeli yeniden inşa; yalnızca kavramsal.
- Tweak'i haritalandır. Özdeş plaintext block'larının farklı physical address'lerde nasıl encrypt edildiğini gözlemleyerek yazarlar, AMD'nin address-derived XEX tweak'inin yapısını kurtarır ve periodicity'sini (tweak'lerin nerede tekrarlandığını) tespit eder.
- Oracle'ı inşa et. Bilinen ciphertext block'larını ve kurtarılan tweak ilişkilerini kullanarak host, bir target tweak konumunda istenen bir plaintext'e decrypt olacak ciphertext'i sentezleyebilir — key'e ihtiyaç duymayan hızlı bir encryption oracle.
- I/O olmadan enjekte et. Oracle tamamen resident ciphertext üzerinde çalıştığı için, code injection artık guest I/O'yu sürmeye bağlı değildir, önceki SEV code-injection saldırılarının en gözlemlenebilir sinyalini kaldırır.
- SEV-ES'e ulaş. Yöntem, SEV'e ve register-protecting SEV-ES'e karşı gösterilir.
AMD'nin belirttiği hardening (temsili)
AMD, Zen 2 jenerasyonunun artık 4-byte periyodik olmayan ve her boot'ta taze randomness içeren bir iyileştirilmiş tweak generation kullandığını belirtti; bu da saldırının dayandığı tweak-reuse adımını önemli ölçüde zorlaştırır.
Detection¶
- I/O ipucunun kaybı. Paper'ın kendi noktası, SEVurity'nin tam da guest-I/O manipülasyonundan kaçındığı için öncüllerine kıyasla saptanmasının daha zor olduğudur — dolayısıyla daha önceki SEV saldırılarını yakalayan I/O-anomaly monitoring'i burada tetiklenmez.
- Ciphertext-pattern monitoring'i sınırlıdır. SEV threat model'inde host adversary'dir, dolayısıyla güvenilir detection hypervisor'dan değil hardware/attestation'dan gelmelidir; runtime integrity ihlalleri yalnızca etkileri olarak (beklenmeyen guest code/state değişiklikleri) gözlemlenebilir.
- Kritik executable page'ler üzerindeki guest self-integrity check'leri tampering'i sonradan yüzeye çıkarabilir.
Mitigation¶
- Per-boot, non-periodic tweak'ler. Anlık hardening (Zen 2'nin taze randomness'lı ve kısa period'u olmayan iyileştirilmiş tweak generation'ı) tweak-reuse oracle'ını kırar.
- Integrity-protected SEV-SNP'yi benimse. SNP'nin reverse-map table'ı ve page validation'ı, host'un ciphertext'i serbestçe splice'lamasını/relocate etmesini engeller — "no security without integrity"nin mimari yanıtı, şununla paylaşılır: severity-code-injection-attacks-against-encrypted-vms.md ve tlb-poisoning-attacks-on-amd-sev.md.
- Yalnızca-encryption mode'larını isolation olarak sayma. Integrity'siz SEV/SEV-ES, untrusted bir host'a karşı güvenilmemelidir; SNP üzerindeki ilgili residual ciphertext leakage'ı, SEV-SNP üzerindeki systematic ciphertext side-channel çalışması tarafından kapsanır.