Skip to content

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):

  1. Normal-world attacker (kernel veya unprivileged user), secure-world AES T-table'larına map'lenen cache set'lerini prime eder.
  2. Bir secure-world encryption'ı tetikler ya da bekler.
  3. 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.
  4. 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-misses ile 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.

References