TDXploit: Single-Stepping and Cache Attacks on Intel TDX¶
Intel'in iyileştirilmiş mitigation'ına rağmen Intel TDX guest'lerinin güvenilir single-stepping'ini canlandırır ve
clflush'un TD guest physical memory üzerinde hâlâ çalıştığını gösterir, shared-memory'siz Flush+Flush cache attack'larını mümkün kılar.
Mechanism¶
Bug class / invariant
Intel TDX'in iyileştirilmiş single-stepping mitigation'ı (TDX module 1.5.06),
attacker'ların bir trust domain'i her seferinde bir instruction ilerletmesini
durdurmak içindi. TDXploit, %99.99'dan fazla doğrulukla (yaklaşık her 3.7
ms'de bir step) single-step etmek için o mitigation'daki temel bir kusuru
exploit eder ve host'un TD progress'ini hassas şekilde kontrol edemeyeceği
invariant'ını kırar. Ayrıca confidentiality model'i, host'un shared memory
olmadan TD memory'ye karşı fine-grained cache attack'ları mount edemeyeceğini
varsayar. TDXploit, clflush'un TDX'in TD'nin guest-physical memory'sine
karşı savunmalarını bypass ettiğini gösterir: host arbitrary TD memory
line'larını flush edebilir, bu da hiç shared memory gerektirmeyen ve
herhangi bir TD address'ini hedefleyebilen bir Flush+Flush timing attack'ını
mümkün kılar — sıradan Flush+Flush attack'larında olmayan bir yetenek.
Walkthrough¶
USENIX Security 2025 paper'ından üst düzey (açıklandı):
- TD'yi hassas şekilde kesmek için iyileştirilmiş single-step mitigation'ı yen, SGX-Step-tarzı instruction-granular bir primitive'i geri yükle.
- Seçilen line'ları evict etmek için TD guest-physical address'lerine karşı
clflushkullan. - TD'nin ardından line'a access edip etmediğini öğrenmek için flush'ı timing'le (Flush+Flush) — shared memory olmadan secret-dependent bir access oracle'ı.
- Gösterildi: ~8,986 trace'te tam AES T-table key recovery ve tek bir trace'te TOTP secret recovery.
Bu Flush+Flush'ın neden alışılmadık olduğu
Klasik Flush+Flush, attacker ile victim arasında paylaşılan bir memory page
gerektirir. Burada clflush'un TD memory'ye ulaşması o gereksinimi kaldırır,
böylece herhangi bir TD line bir probe target haline gelir.
Detection¶
- Adversary host/VMM'dir, bu yüzden guest-tarafı detection pratik değildir; TDX module sürümünün TCB attestation'ına güven.
- Operatörler, VMM'den TD memory'ye yönlendirilmiş anormal interrupt-injection
ritmini ve yüksek
clflush/ cache-eviction aktivitesini gözlemleyebilir.
Mitigation¶
- Single-stepping kusurunu ve
clflush-on-TD-memory davranışını ele alan Intel'in güncellenmiş TDX module'ünü / microcode'unu uygula; remote attestation üzerinden teyit et. - TD içinde data-oblivious, constant-time crypto kullan (örneğin T-table'lar yerine bit-sliced AES) ki flush-based bir access oracle hiçbir secret vermesin.
- Single-stepping yapan, cache-gözlemleyen bir host varsayan hardened TEE crypto library'lerini tercih et.