TruSense: Information Leakage from TrustZone¶
Normal world'den — unprivileged user app'leri de dahil — gelen, shared-cache contention üzerinden ARM TrustZone secure-world kodundan secret'ları (örn. tam bir AES-128 key) recover eden timing-based bir cache side channel.
Mechanism¶
Bug class / invariant
ARM TrustZone, normal world ile secure world arasında memory isolation uygular ve security invariant'ı şudur: normal-world kod, secure-world secret'ları hakkında hiçbir şey öğrenmez. TrustZone'un sağladığı izolasyon logical/access-control düzeyindedir; ancak last-level cache, performans için world'ler arasında fiziksel olarak shared kaldığından, microarchitectural bir contention channel'ı (Prime+Probe tarzı) bu logical isolation'ı bypass eder. TruSense bunu gösterir: Secure-world crypto, secret'a bağlı table girdilerine eriştiğinde normal-world cache line'larını evict eder; normal-world'deki bir gözlemci, secure world'ün hangi line'lara dokunduğunu çıkarmak için contention-based timing'i (Prime+Probe tarzı) ölçer ve key'e bağlı access pattern'lerini sızdırır. TruSense, önceki çalışmayı, virtual-to-physical mapping bilgisi olmayan bir unprivileged user application üzerinden bile çalışacak şekilde genişletir; probe memory'sini seçmek için beklenen channel istatistiklerini kullanır.
Farkı (vs TruSpy): TruSpy (2016) TrustZone'a karşı ilk timing cache channel'ı tanıtır; TruSense (2018) ise bunu, virtual-to-physical mapping bilgisi olmayan unprivileged user-space attacker'a taşıyıp probe set seçimini channel istatistiklerine dayandıran sonraki/ayrı bir çalışmadır.
Walkthrough¶
Üst düzey, INFOCOM 2018 paper'ından (akademik, defensive):
- Normal-world attacker (kernel veya unprivileged user), secure-world AES T-table'larına map'lenen cache set'lerini prime eder.
- Bir secure-world encryption'ı tetikler ya da bekler.
- Prime edilen set'leri probe eder ve hangilerinin evict edildiğini öğrenmek için erişimleri timing'ler — secret'a bağlı table index'lerini açığa çıkarır.
- Birçok encryption boyunca toplayarak key'i recover eder; paper, normal-world kernel'den ~3000 encryption round'unda (~2.5 s) tam AES-128 key recovery raporlar.
User-mode probing hilesi
pagemap/physical address'ler olmadan, saldırı hedef cache set'lerine düşen
memory'yi seçmek için channel'ın beklenen istatistiksel özelliklerini
kullanır; böylece non-privileged bir app probe edebilir.
Detection¶
- Cache-contention saldırıları stealthy'dir; Prime+Probe davranışı sergileyen
process'lere bak: secure-world (TEE) çağrılarıyla korele yüksek
cache-misses/LLC-load-missesile düzenli eviction-set traversal'ı. - Mobile/embedded'de, tek bir normal-world process'ten gelen TEE/SMC call'larının anormal sıklığını izle.
Mitigation¶
- Secure-world crypto'yu constant-time / cache-oblivious olarak uygula (örn. bit-sliced AES, secret-indexed table lookup yok) ki access pattern'leri key bilgisi taşımasın.
- Hardware izin verdiği yerde, cache'i secure-world kullanımı için partition et ya da lock'la, veya world switch'lerinde shared cache state'i flush et.
- Attacker'ın timing çözünürlüğünü azalt ve güvenilmeyen normal-world app'lere high-resolution timer'lar expose etmekten kaçın.