TruSpy: Cache Side-Channel Leakage from the Secure World on ARM¶
ARM TrustZone'a karşı ilk timing-based cache side channel: normal-world bir attacker, herhangi bir shared memory olmadan secure-world secret'larını (bir AES key) çıkarmak için shared cache üzerinde Prime+Probe kullanır.
Mechanism¶
Bug class / invariant
TrustZone, memory'yi normal ve secure world'ler arasında kesin biçimde partition eder, dolayısıyla confidentiality invariant'ı şudur: normal-world kod, secure-world veriyi okuyamaz. TruSpy bu invariant'ın microarchitectural olarak başarısız olduğunu gösterir, çünkü cache world'ler arasında shared'dır. Memory world'ler arasında shared olmadığından, daha verimli olan Flush+Reload (shared page'lere ihtiyaç duyar) kullanılamaz; bunun yerine TruSpy cache contention'ını sömürerek Prime+Probe kullanır. Attacker cache set'lerini doldurur (prime eder), secure world'ün secret'a bağlı table lookup' larla AES çalıştırmasına izin verir, sonra hangi set'lerin evict edildiğini görmek için probe eder — key'e bağlı access pattern'lerini açığa çıkarır. Bu, TrustZone secure-world secret'larının bir timing cache channel'ı üzerinden sızdığını gösteren ilk çalışmaydı.
Farkı (vs TruSense): TruSpy (IACR ePrint 2016/980) bu sınıfın ilk gösterimidir; TruSense (INFOCOM 2018) aynı Prime+Probe fikrini, physical-mapping bilgisi olmayan unprivileged user-space attacker'a genişleten ayrı/sonraki bir çalışmadır. İkisi distinct paper'lardır, duplicate değil.
Walkthrough¶
Üst düzey, IACR ePrint 2016/980 paper'ından (akademik, defensive):
- Normal world'den, secure-world AES T-table'larına karşılık gelen cache set'lerini prime et.
- Secure-world encryption servisini (SMC) çağır ki lookup-based bir AES round gerçekleştirsin.
- Prime edilen set'leri probe et ve eviction'ları belirlemek için timing'le; secret'a bağlı table index'lerinin high bit'lerini recover et.
- Birçok encryption boyunca gözlemleri birleştir ve AES key'i yeniden oluşturmak için standart cache-attack key-recovery uygula.
Neden Flush+Reload değil de Prime+Probe
Flush+Reload, attacker ile victim arasında shared bir memory page'e ihtiyaç duyar; world boundary bunu yasaklar, dolayısıyla TruSpy contention'a (Prime+Probe) dayanır.
Detection¶
- TEE/SMC çağrılarıyla korele, tekrarlayan eviction-set priming ve timing loop'ları yapan normal-world process'lere bak; yükselmiş LLC miss counter'ları.
- Kısıtlı cihazlarda, tek bir client'tan gelen anormal hacimdeki secure-world call'larını işaretle.
Mitigation¶
- Key'e bağlı cache footprint'lerini ortadan kaldırmak için secure world'de constant-time / cache-oblivious crypto kullan (bit-sliced AES, secret-indexed lookup yok).
- Hardware izin verdiği yerde world switch'lerinde shared cache'i flush et ya da partition et; secure-world-kritik veri için cache locking'i düşün.
- Güvenilmeyen normal-world koda açık high-resolution timing kaynaklarını sınırla.