TLB Poisoning Attacks on AMD SEV (AMD-SB-1023)¶
AMD SEV/SEV-ES, Translation Lookaside Buffer flushing'i untrusted hypervisor'a delege eder; bu flush'ları atlayarak ya da yanlış zamanlayarak, malicious bir host (guest içindeki unprivileged bir process'in yardımıyla) address-space switch'leri boyunca stale, "poisoned" TLB entry'lerini aktif bırakabilir ve VM'in memory integrity'sini ve confidentiality'sini kırabilir.
Mechanism¶
TLB coherency'sini untrusted host'a delege etmek
Doğru bir virtual-memory sistemi, effective address space değiştiğinde stale TLB entry'lerini flush etmelidir; böylece bir virtual address her zaman hedeflenen physical page'e çözülür. SEV/SEV-ES altında CPU, guest context'lerini ASID ile tag'ler, ama context'ler switch olduğunda TLB flush issue etme sorumluluğu hypervisor'a bırakılır — ki SEV threat model'i onu untrusted kabul eder. Kırılan invariant budur: security-critical bir coherency operasyonu adversary tarafından gerçekleştirilir.
Malicious bir hypervisor, flush'ı kasıtlı olarak alıkoyabilir ya da yanlış zamanlayabilir; böylece bir switch'ten sonra CPU, farklı bir mapping'e ait stale ("poisoned") TLB entry'lerini kullanmaya devam eder. SEV guest'i içinde çalışan unprivileged bir attacker process ile birleştirildiğinde, bu bir virtual address'in victim context'in hedeflemediği bir physical page'e sessizce çözülmesine izin verir — encryption'ı hiç kırmadan encrypted guest memory'nin out-of-context read/write'larını, yani integrity ve confidentiality kaybını verir.
Walkthrough¶
ACSAC 2021 paper'ından (Li, Zhang, Lin) ve AMD advisory AMD-SB-1023'ten high-level reconstruction; yalnızca kavramsal.
- İki context kur. Attacker, guest içinde victim ve attacker-controlled mapping'leri öyle düzenler ki aynı virtual address, context'e bağlı olarak farklı physical page'ler anlamına gelir.
- Flush'ı bastır. Context switch'inde malicious hypervisor gereken TLB invalidation'ı atlar, böylece önceki context'in entry'leri hayatta kalır.
- Stale entry'yi kullan. Guest-side attacker process, poisoned entry canlıyken virtual address'e erişir ve address'leyememesi gereken belleğe ulaşır.
- Cache-squeeze rafinasyonu. Paper, caching/eviction'ı kontrol etmek için bir "cache squeeze" tekniği anlatır; böylece poisoned translation, kritik anda gerçekten kullanılan olur ve reliability artar.
- Kapsam. Hem SEV hem de SEV-ES'e karşı gösterildi.
Advisory facts (representative)
- AMD bülteni AMD-SB-1023: malicious bir hypervisor artı unprivileged bir guest process, TLB flushing'i kontrol edebilir; bu da integrity, confidentiality ve availability potansiyel kaybıyla beklenmedik davranışa yol açar.
- Affected: 1st, 2nd ve 3rd Gen AMD EPYC ve AMD EPYC Embedded işlemciler (SEV/SEV-ES kullanılırken).
- Not affected: 3rd Gen EPYC üzerinde SEV-SNP altında çalışan VM'ler; burada CPU hardware'i, hypervisor'a güvenmek yerine gereken TLB flush'larını zorlar.
Detection¶
- Host adversary, guest içi tespiti sınırlar. Flush'ı hypervisor'ın kendisi gerçekleştirdiği (ya da atladığı) için, bir guest bu atlamayı güvenilir biçimde gözlemleyemez; paper konuyu, victim bir VM'in monitor edebileceği bir şey olarak değil, mimari olarak çerçeveler.
- Davranışsal anomaliler. Guest'in kendi access pattern'iyle tutarsız değişen bellek içerikleri ya da context'ler arası beklenmedik aliasing, bir defender'ın prensipte fark edebileceği etkidir — ama güvenilir sinyaller yalnızca SEV-SNP'nin sağladığı hardware garantilerini gerektirir.
- Advisory-driven inventory. Defender'lar, confidential VM'lerin SEV-SNP yerine SEV/SEV-ES altında affected EPYC generation'larında çalışıp çalışmadığını kontrol ederek (canlı saldırı yerine) exposure'ı tespit edebilir.
Mitigation¶
- Confidential VM'leri destekleyen hardware üzerinde SEV-SNP altında çalıştır. AMD-SB-1023'e göre SNP, CPU'nun TLB flush'larını zorlamasını sağlar ve hypervisor'ın entry'leri poison etme yeteneğini kaldırır — kesin fix.
- Advisory'nin affected EPYC generation'ları için referans verdiği AMD firmware/microcode update'lerini uygula.
- SEV/SEV-ES'i confidentiality-best-effort olarak ele al. severity-code-injection-attacks-against-encrypted-vms.md ve sevurity.md gibi bu saldırı da pre-SNP SEV'in tamamen malicious bir host'a dayanamayacağını gösterir; high-assurance workload'lar SNP'yi şart koşmalıdır.