Skip to content

CLKSCREW: Exposing the Perils of Security-Oblivious Energy Management

Software ile kontrol edilen DVFS (frequency/voltage scaling), TrustZone hesaplamalarını fault'lamak için güvenli çalışma sınırlarının ötesine itilir — bir AES key çıkarılır ve self-signed bir app yüklenir — fiziksel erişim ya da fault-injection donanımı olmadan.

Mechanism

Modern SoC'ler, OS'nin performansı enerji karşılığında takas edebilmesi için Dynamic Voltage and Frequency Scaling (DVFS)'i software'e açar. İncelenen Qualcomm Snapdragon 805 (Nexus 6)'da, frequency PLL'i ve voltage regulator'ı (PMIC), (non-secure-world) kernel'den cpufreq tarzı register yazmaları üzerinden erişilebilir. Kritik olarak, bu regulator'lar non-secure world ile TrustZone secure world arasında paylaşılır ve vendor tarafından doğrulanmış çalışma noktalarıyla sınırlı değildir.

Note

Digital logic yalnızca her clock period worst-case kombinasyonel propagation delay'ini aştığı sürece doğrudur (Tclk > Tpath). Propagation delay, voltage düştükçe büyür ve frequency yükseldikçe küçülür. Hedef core'u overclock ederek (Tclk'yi kısaltarak) ya da onu undervolt ederek (Tpath'i uzatarak) tam marj'ın ötesine geçen bir attacker, bir timing violation zorlar: bazı flip-flop'lar input'ları oturmadan latch eder ve aksi halde doğru, software-isolated bir hesaplamada transient bir bit flip üretir. Attacker ayrıca OS scheduler'ını ve regulator'ları da kontrol ettiğinden, glitch bir victim TrustZone rutinindeki belirli bir instruction'a yönlendirilebilir — bir side channel'ı, secure sınır boyunca hassas, yalnızca-software bir fault-injection primitive'ine dönüştürür.

Walkthrough

Attack önce glitch'i profile eder, sonra onu bir secure-world hedefine nişanlar.

  1. Fault bölgesini bul. Nexus 6, 15 resmi Operating Performance Point (frequency/voltage çiftleri) reklamlar. Bunların ötesini probe etmek, donanımın kabul ettiği ama vendor'ın asla doğrulamadığı büyük regulator ayarlarını açığa çıkarır — timing fault'larının oluştuğu rejim.
  2. Calibrate et. Attack thread'ini ve victim thread'ini core'lara pin'le, victim core'un frequency'sini kısa, zamanlanmış bir pencere için yükselt (ya da voltage'ını düşür) ve ara state'in bir byte'ını crash olmadan flip'leyen (süre, timing offset) parametrelerini ara.
  3. Nişanla. Glitch penceresini TrustZone çağrısının içindeki hedeflenen instruction ile hizalamak için hassas bir delay loop kullan.
Attack 1 — differential fault analysis ile AES-256 key extraction

Glitch, bir ara AES round'unun bir byte'ını bozacak şekilde zamanlanır; bu, differential fault analysis (DFA)'nın klasik önkoşuludur.

  • Tek bir one-byte fault, hedeflenen round'a yaklaşık %60 oranında düştü.
  • Kullanılabilir bir one-byte fault üretmek için ortalama yaklaşık 20 deneme gerekti.
  • Hatalı/doğru ciphertext çiftlerinden, DFA aşaması ~12 dakikada 3.650 key hipotezi üretti ve tam TrustZone AES key'ini geri kazandı.
Attack 2 — TrustZone'a self-signed bir app yükleme

Burada glitch, secure-world app loader'ının RSA signature verification'ını hedefler. Verification sırasında modulus N'i fault'layarak attacker, N'i küçük bir faktörü olan bir sayıya dönüştürür, (artık factor'lanabilir olan) signature check'in geçmesine izin verir ve attacker kodunu yükler.

  • Denemelerin yaklaşık %20'si hedeflenen buffer'ı fault'ladı.
  • Fault'lanan modulus değerlerinin 805'ten 38'i factor'lanabilirdi (ve dolayısıyla exploit edilebilirdi).
  • İstenen exploit edilebilir bir fault'a ulaşmak için ortalama yaklaşık 65 deneme gerekti.

Warning

Yukarıdaki sayılar cihaza ve SoC'ye özgüdür (Snapdragon 805 / Krait). Teknik, untrusted software'in trusted bir domain ile paylaşılan bir regulator'ı sürebildiği herhangi bir platforma genellenir, ama tam marjlar, fault oranları ve offset'ler chip başına yeniden karakterize edilmelidir.

Mitigation

Açık tek ve temiz bir düzeltme yoktur, çünkü maruziyet bilinçli, enerji odaklı bir tasarım tercihinden kaynaklanır. Önerilen katmanlı savunmalar:

  • Regulator aralıklarını doğrulanmış çalışma noktalarıyla sınırlayan, spec-dışı frequency/voltage'ı engelleyen hardware guard band'ler.
  • Untrusted software'in secure world'ün çalışma noktasını hareket ettirememesi için secure ve non-secure execution'a ayrı regulator domain'leri.
  • DVFS access'i kısıtla: rich-OS kernel yerine secure monitor / privileged firmware'in arkasına al.
  • Crypto içinde algoritmik redundancy (compute-and-verify, randomize timing), böylece tek bir indüklenen fault sızdırılmak yerine tespit edilir.

References