SEV-Step (single-stepping framework for AMD SEV)¶
Kötü niyetli bir hypervisor'ın AMD SEV/SEV-SNP confidential VM'leri her seferinde bir instruction olacak şekilde single-step etmesini sağlayan yeniden kullanılabilir bir framework; page-fault tracking ve cache-attack primitive'lerini açığa çıkarır — SGX-Step'in SEV analoğu.
Mechanism¶
AMD SEV (Secure Encrypted Virtualization) ve SEV-SNP, untrusted bir hypervisor'ın VM verisini okuyamaması için guest memory'yi encrypt eder ve integrity-protect eder. Ama hypervisor hâlâ platformun privileged scheduling kaynaklarını kontrol eder: local APIC timer ve nested/second-level page table'lar (NPT) artı Reverse Map Table (RMP).
Note
Zayıflatılan sınır: SEV memory içeriğinin confidentiality ve integrity'sini korur, ama guest execution'ın timing ve fault davranışını değil. Kötü niyetli hypervisor hâlâ APIC timer'a ve NPT/RMP mapping'lerine sahip olduğundan, encrypted guest'i tam olarak bir instruction'dan sonra interrupt edebilir ve hangi guest page'lerin fault verdiğini gözlemleyebilir. Single-stepping, kaba, gürültülü microarchitectural side channel'ları yüksek çözünürlüklü, instruction başına ölçümlere dönüştürür — encryption'ın gizlemediği herhangi bir residual leakage'i (instruction timing, operand-dependent cache footprint'leri) dramatik biçimde amplify eder.
Teknik SGX-Step'i yansıtır (bkz. sgx-step-single-stepping.md): APIC timer'ı, guest resume olduktan hemen sonra fire edecek şekilde arm et, böylece VM bir sonraki VM-exit'ten önce tek bir instruction ilerler, sonra tekrarla. SEV-Step bunu NPT page-fault tracking (erişimde exit'e zorlamak için page permission'larını iptal ederek) ve eviction-set tabanlı cache saldırılarıyla birleştirir, tek bir yeniden kullanılabilir araştırma aracı olarak paketlenmiştir.
Walkthrough¶
Kamuya açık SEV-Step makalesine göre (Wilke ve diğ., TCHES 2024; arXiv:2307.14757) yüksek seviyeli:
- APIC timer'ı kalibre et. Hypervisor'dan bir timer değeri seç, böylece VM entry'den sonra guest, timer interrupt bir VM-exit'e zorlamadan önce bir instruction yürütür.
- Single-step başarısını tespit et. Instruction-page'in retire/access edilip edilmediği gibi bir sinyal kullanarak "tam olarak bir instruction ilerledi"yi zero-step ya da multi-step'lerden ayırt et — framework step başarısını raporlar, böylece attacker hizalı kalır.
- Page'leri track et. Seçilen guest page'lerinde access permission'larını kaldırmak için NPT/RMP entry'lerini manipüle et, böylece track edilen bir page'e her erişim hypervisor'ın gözlemlediği bir nested page fault üretir (instruction çözünürlüğünde bir controlled-channel sinyali).
- Bir microarchitectural kanal ekle. Adımlar arasında eviction set'ler kur ve operand-dependent access pattern'lerini okumak için cache saldırıları (örn. Prime+Probe) çalıştır; makale Nemesis tarzı instruction/operand inference'ı ve bir LUKS2 volume key'inin extraction'ını gösterir.
- Instruction başına fault ve timing trace'inden secret'ı yeniden kur.
Single-step döngüsü (kavramsal)
Detection¶
- Bu, bir guest'e karşı hypervisor tarafından yapılan bir saldırıdır, dolayısıyla guest içindeki bir savunmacı onu doğrudan göremez. Guest'e ya da attestation mantığına görünür olabilecek anomali sinyalleri:
- Retire edilen instruction'lara göre patolojik olarak yüksek VM-exit / interrupt oranları (instruction başına yaklaşık bir exit) single-stepping'e işaret eder.
- Guest page'lerinde devasa nested-page-fault hacmi ya da aynı page'lerde tekrarlayan permission flip'leri, controlled-channel page tracking'i düşündürür.
- Bunu açığa çıkaran platformlarda, SEV-SNP interrupt/NMI counter'ları ya da önerilen single-step detection (örn. performance-counter tabanlı step detection) timing pattern'ini işaretleyebilir.
Mitigation¶
- Daha yeni firmware/CPU'lardaki AMD SEV-SNP single-step protection / secure TSC ve interrupt kısıtlamaları, APIC-timer single-stepping'i reddetmeyi ya da tespit etmeyi amaçlar; platform firmware'ini güncel tut.
- Guest içindeki constant-time / data-oblivious code, single-stepping'in amplify ettiği operand- ve branch-dependent footprint'leri kaldırır.
- Instruction başına fault'ları tespit eden ya da randomize eden savunmalar (SGX controlled-channel mitigation'larına benzer) page-tracking sinyalini azaltır.
- Hypervisor'ı, yalnızca platformun hardware single-step mitigation'ları sağladığı yerlerde threat model kapsamında değerlendir; aksi halde SEV tek başına bunu durdurmaz.