Skip to content

SoK: Understanding the Prevailing Security Vulnerabilities in TrustZone-assisted TEE Systems

Arm TrustZone TEE'lerini (Qualcomm, Trustonic, Huawei, Nvidia, Linaro) ele geçiren tekrar eden bug sınıflarının sistematizasyonu ve secure world'ün over-privilege'inin neden küçük bug'ları topyekûn ele geçirmeye çevirdiği.

Mechanism

Note

Bu, tek bir CVE değil, bir systematization-of-knowledge (SoK) makalesidir (Cerdeira, Santos, Fonseca & Pinto, IEEE S&P 2020). "Mechanism"i, TrustZone-assisted Trusted Execution Environment'ların (TEE'ler) neden düşmeye devam ettiğine dair bir taxonomy'dir; public belgelenmiş exploit'lerden ve sevk edilmiş TEE firmware'inin reverse engineering'inden türetilmiştir.

Makalenin vurguladığı merkezî invariant: TrustZone yazılımı platformdaki en privileged yazılımdır. Secure monitor EL3'te, trusted OS ise S-EL1'de çalışır ve normal-world (Android/Linux) kernel'i dahil tüm physical memory'ye erişimi vardır. Onu kısıtlayacak daha üst bir otorite yoktur. Sonuç olarak, herhangi bir trusted application (TA)'da veya trusted OS'ta tek bir memory-safety bug'ı, full-system compromise'e yükselir — blast radius tüm cihazdır.

Taxonomy, root cause'ları üç kaynakta gruplar:

  • Architectural — trust model'in kendisi. TEE over-privileged'dır; TA'lar arasında zayıf veya yok isolation; secure monitor ve trusted OS tek bir fault domain'i paylaşır; tasarım kararları normal world'ü trust boundary'nin karşısına ham pointer/parametre vermeye zorlar.
  • Implementation (software) — tekrar eden memory-safety sınıfları: non-secure world'den geçirilen pointer ve parametrelerin validation'ının eksik olması (bir time-of-check-time-of-use-tarzı trust gap'i), eksik bounds check'leri, heap-buffer-overflow, stack overflow'lar, integer sorunları ve TA'lar içinde type confusion. Kritik olarak, secure world sıklıkla normal-world kernel'inin yıllardır sahip olduğu exploit mitigation'larından yoksundur (ASLR, stack canary'leri, guard page'ler, W^X).
  • Hardware — mimarinin opak varsaydığı secure/non-secure sınırını aşan microarchitectural ve fiziksel saldırılar (cache side-channel'ları, fault injection / voltage glitching).

Warning

TA'lar attacker-controlled input'u normal world onu zaten sağladıktan sonra validate ettiği için, re-validation olmadan kabul edilen bir non-secure-world pointer'ı secure memory'ye işaret edecek hâle getirilebilir — cihazdaki en privileged context'e bir confused-deputy write.

Walkthrough

(High-level, makalenin temsilî kategorilerinden çıkarılmıştır — somut örnekler için bkz. trust-issues-exploiting-trustzone-tees ve Samsung çalışmaları.)

  1. Cross-boundary pointer re-validate edilmiyor. Bir TA, normal world'den bir shared-memory pointer/length alır. Buffer'ın non-secure memory'de olduğunu kontrol etmeden dereference eder ya da kopyalarsa, attacker onu secure RAM'e yönlendirir.
  2. Bir TA'da eksik bounds check. Bir length field'ı güvenilir kabul edilir ve trusted OS heap'i içinde bir heap ya da stack overflow üretir — heap-buffer-overflow ile aynı bug sınıfı, ama exploitation'ı yavaşlatacak canary veya ASLR'nin olmadığı bir context'te.
  3. Tırmanılacak mitigation yok. Stack canary'leri veya randomize layout olmadan, bir return address ya da function pointer'ın deterministik overwrite'ı S-EL1'de code execution verir.
  4. Privilege amplification. Trusted OS'ta çalışan kod, normal-world kernel belleğini map'leyip yeniden yazabilir (ve bazı tasarımlarda EL3'e ulaşabilir), bir TA bug'ını Android kernel compromise'ine çevirir — olağan saldırı yönünün tersi.
SoK'nun sıraladığı temsilî bug kategorileri
  • SMC / shared-memory sınırında normal-world pointer / parametre validation başarısızlıkları.
  • Yaygın olarak dağıtılmış TA'larda buffer overflow'lar ve integer bug'ları.
  • Trusted OS'ta yok olan exploit mitigation'ları.
  • Bir TA'nın bir başkasına ya da trusted OS'a ulaşmasına izin veren zayıf isolation.
  • Secure-world secret'larını sızdıran microarchitectural side-channel'lar.

Detection

  • Vendor advisory takibi. Dağıtılmış TEE'yi (QSEE/Kinibi/Beanpod/OP-TEE) vendor TA/trustlet patch bültenleriyle eşle; SoK aynı sınıfların vendor'lar arasında tekrar ettiğini gösterir, bu yüzden sınıfa göre triage yap.
  • TA'ların static ve fuzz analizi. Takip eden tooling literatürü (teedfuzzer-fuzzing-the-trusted-execution-environment, TEEzz, the-road-to-qualcomm-trustzone-apps-fuzzing), TA fuzzing'in tam olarak bu SoK'nun kataloglarına aldığı eksik-bounds-check / pointer-validation bug'larını ortaya çıkardığını gösterir.
  • Boundary instrumentation. Her SMC handler'ı ve shared-memory entry point'ini "attacker'ın sağladığı pointer/length'lerin yalnızca non-secure memory'ye referans verdiğini bu yeniden kontrol ediyor mu?" açısından denetle.
  • Anormal secure-world fault'ları. Untrusted app aktivitesi altında beklenmeyen secure-world panic'leri, watchdog reset'leri ya da trustlet crash telemetry'si, TA parser'larının yoklanmakta olduğuna işaret edebilir.

Mitigation

  • TEE privilege'ini azalt. Yazarların kendi takibi rezone-disarming-trustzone-with-tee-privilege-reduction, trusted OS'u sandbox'lar, böylece bir TA/TEE bug'ı artık tam physical-memory erişimi vermez — over-privilege invariant'ına doğrudan saldırır.
  • Normal-world mitigation'larını secure world'e taşı. Trusted OS ve TA'larda stack canary'leri, ASLR, guard page'ler ve W^X / execute-never'ı etkinleştir.
  • Sınırı validate et. Secure handler'lar içinde tüm normal-world pointer/length'lerini yeniden kontrol et; secure kodun secure memory'ye çözülen pointer'ları dereference etmesini yasakla.
  • TA'ları izole et. Per-TA address space'leri ve least privilege'i zorla, böylece compromise edilmiş bir trustlet başkalarına ya da trusted OS'a ulaşamasın.
  • Architectural hardening. Mevcut olduğunda ARM mitigation'larını uygula (arm-pointer-authentication, arm-memory-tagging-extension) ve secure asset'lerin side-channel ile fault-injection maruziyetini kısıtla.

References