undeSErVed trust (CVE-2021-26311)¶
AMD SEV/SEV-ES remote attestation permutation-agnostic'tir — malicious bir hypervisor, confidential bir VM'in measured memory block'larını attestation sonucunu değiştirmeden yeniden düzenleyebilir ve korunan guest içinde code execution mümkün kılabilir.
Mechanism¶
Bug class / invariant
AMD Secure Encrypted Virtualization (SEV / SEV-ES), bir guest VM'in belleğini untrusted bir hypervisor'dan korumayı amaçlar; remote attestation, guest sahibini VM'in beklenen, değiştirilmemiş bir memory image ile launch ettiğine ikna eder. Attestation'ın zorlaması gereken invariant, launch measurement'ının bellekte ne olduğunu ve nerede olduğunu benzersiz biçimde bağlamasıdır.
undeSErVed-trust araştırması (Wilke, Wichelmann, Sieck, Eisenbarth), measurement'ın permutation-agnostic olduğunu gösterir: measured block'ların ordering / placement'ini bağlamaz. Malicious bir hypervisor bu yüzden guest memory page'lerini guest address space'inde remap (reorder) edebilir ve yine de valid bir attestation üretebilir; çünkü layout değişmiş olsa da measured content seti değişmemiştir.
Kavramsal root cause, attestation'da bir integrity gap'tir: attacker-chosen address'lere yerleştirilmiş mevcut, already-measured content'i yeniden amaçlandırarak, hypervisor attestation'ı hiç fail ettirmeden guest'in control flow'unu (ROP-style) yönlendirebilir — tam da SEV'in korumak için var olduğu sınırı yenerek.
Walkthrough¶
Yalnızca kavramsal
Public project sayfasından / paper'dan high-level model. Çalışan bir SEV saldırısı yeniden üretilmiyor.
- Host'u kontrol et. Attacker, hypervisor'dır (ya da onu compromise eder) — tam da SEV'in savunduğunu iddia ettiği threat model.
- Measured block'ları sırasız map et. Launch sırasında ya da sonrasında, hypervisor guest'in measured memory block'larını kendi seçtiği address'lere yerleştirir; attestation ordering'i yok saydığı için yine de validate olur.
- Content'i gadget olarak yeniden kullan. Artık attacker-chosen konumlardaki mevcut measured byte'lar, guest'in execution flow'unu değiştirmek için bir araya getirilir.
- Guest'te çalıştır. Sonuç, attestation "beklendiği gibi" rapor ederken confidential VM içinde attacker-influenced code execution'dır.
Detection¶
Telemetry sinyalleri
- Bu mimari bir attestation zayıflığıdır, bu yüzden guest-side runtime detection sınırlıdır; pratik sinyal, davranışsal bir anomali değil platform/firmware version'ıdır.
- Attestation policy auditing: confidential-VM launch akışlarının legacy SEV/SEV-ES yerine SEV-SNP'yi (ki page placement'ı bağlar) şart koştuğunu doğrula.
- Inventory: confidential workload'ları pre-SNP microcode/firmware üzerinde çalıştıran EPYC host'larını flag'le.
Mitigation¶
Patch & hardening
- SEV-SNP kullan. AMD'nin belirttiği çözüm (AMD-SB-1004), SEV-SNP'nin (Secure Nested Paging, 3rd-gen EPYC) page ownership/placement'ı bağlayarak sorunu adreslediğidir; SEV ve SEV-ES generation'ları affected kalır.
- Bir guest'e güvenmeden önce confidential-computing politikalarında SNP attestation şart koş.
- Confidential-compute platformlarında host firmware/PSP'yi güncel tut.