TXM (Trusted Execution Monitor)¶
Apple silicon'da, neyin executable olabileceğine karar vererek code-signing ve trust policy'sini zorlayan bir monitor — bu sırada page-table write yeteneğini SPTM tutar.
Mechanism¶
Invariant: yalnızca signed, trusted kod çalışabilir ve kernel bu policy'yi geçersiz kılamaz
Trusted Execution Monitor (TXM), Apple'ın post-PPL integrity tasarımının policy yarısıdır. Apple'a göre SPTM "code execution'ı yöneten policy'leri fiilen zorlamak için daha düşük ayrıcalıklı TXM'i kullanır." TXM "code signing ve entitlement verification'dan sorumludur."
Zorlanan invariant: bir page yalnızca, ilgili kodun platform policy'si altında signed ve trusted olduğunda TXM kabul ederse executable'a geçebilir. Kernel, tam kernel R/W ile bile bu karara yetki vermeye izinli değildir — sormak zorundadır. TXM ayrı, daha küçük, audited bir domain olduğundan (SPTM'den daha düşük ayrıcalıklı ama kernel'in trust'ının dışında), bir kernel compromise saldırganın keyfi kod için "bu trusted" hükmü basmasına izin vermez.
Kritik nokta: yetenek bölünmüştür: TXM neyin executable olmaya izinli olduğuna karar verir; SPTM asıl PTE write'ına sahiptir (bkz. sptm). Apple, mimarinin "bu privilege separation ve aralarındaki trust yönetimi sayesinde bir TXM compromise'ın otomatik olarak bir SPTM bypass'ına dönüşmemesi için tasarlandığını" belirtir.
Walkthrough¶
Kavramsal olarak, kod çalışmak istediğinde:
- Kernel (bu amaç için untrusted) bir mapping hazırlar ve onun executable olmasını ister.
- TXM, isteği code-signing / entitlement / trust-cache policy'sine göre değerlendirir — bu signed bir binary mi, doğru entitlement'a sahip izinli bir JIT region mı, vb.
- TXM onaylarsa, SPTM execute permission'ını fiilen veren privileged page-table güncellemesini gerçekleştirir; SPTM ayrıca W^X'i zorlar (bir region aynı anda writable ve executable olamaz).
- TXM reddederse, kernel ne "isterse istesin" hiçbir executable mapping oluşturulmaz.
Bu, A15-veya-sonrası ve M2-veya-sonrası SoC'larda eski monolitik PPL'i (ppl) işbirliği yapan iki monitor ile değiştirir; attack surface'i daraltır ve "early boot sırasında bile" kernel trust'ına bağımlılığı ortadan kaldırır.
Bir saldırganın onu nasıl yenmesi gerekirdi (kavramsal)
- Unsigned kod çalıştır: saldırgan TXM'e attacker code'unu trusted olarak kutsatmalı — yani sadece kernel kontrolü ele geçirmek değil, code-signing/entitlement check'inin kendisini altüst etmeli.
- Trust input'unu tahrif et: neyin yetkilendirildiği konusunda TXM'i şaşırt (TXM'in incelediği data etrafında bir confused-deputy / TOCTOU).
- Bölünmeyi aşarak escalate et: tam bir TXM compromise bile, tasarım gereği, saldırgana SPTM'in page-table write yeteneğini vermez — dolayısıyla tek bir bug'ın persistence ile arbitrary code execution için yetersiz olması amaçlanmıştır.
Detection¶
Platform invariant'ını doğrula; policy-violation panic'lerine dikkat et
- Hardware/OS envanteri. TXM, mevcut iOS/macOS nesillerinde A15-veya-sonrası / M2-veya-sonrası silicon üzerinde SPTM ile birlikte bulunur. Apple'ın "Apple SoC security" sayfasındaki per-chip tablosu ve MDM'in bildirdiği cihaz modeli + OS sürümü üzerinden doğrula. Daha eski silicon PPL (
ppl) kullanır. - Code-trust hataları. Daha önce sızabilecek unsigned veya untrusted kodu yükleme girişimleri, launch failure'ları /
AMFItarzı denial'lar ve integrity panic'leri olarak ortaya çıkar. Managed bir cihazda code-signing-violation olaylarından oluşan bir pattern, bir soruşturma tetikleyicisidir. - Attestation. Sözde stock bir cihazda başarısız olan managed-device / app attestation, bir trust-policy kırılmasına işaret eder ve escalate edilmelidir.
- Panic imzaları. SPTM gibi, TXM de policy ihlallerini sessiz izin yerine abort/panic'lere dönüştürür; crash telemetry'sini monitor ile ilgili imzalar için izle.
Mitigation¶
Etkinleştirme ve hardening
- TXM, desteklenen hardware/OS için her zaman açıktır — kullanıcı toggle'ı yoktur. Operasyonel kontrol, MDM üzerinden minimum-OS zorlaması ve supervised-device policy'sidir, artı filoları TXM yeteneğine sahip hardware'de tutmaktır.
- SPTM (
sptm) ile eşleştir — TXM'in policy hükmü yalnızca, privileged mapping'i kernel değil SPTM gerçekleştirdiği için anlamlıdır — ve daha geniş integrity stack ile:ktrr/ctrr, diğer platformlardahypervisor-protected-code-integrity, pointer authentication (arm-pointer-authentication). - Bilinen uyarılar / residual risk: TXM privileged bir domain'deki yazılımdır ve signing/entitlement değerlendirmesindeki ya da SPTM↔TXM handshake'indeki bir logic flaw garantiyi zayıflatabilir. JIT ve diğer meşru-writable-sonra-executable akışları policy-gated'dır ama hassas bir yüzey olmaya devam eder. TXM, hiçbir zaman yeni executable kod gerektirmeyen data-only saldırıları ele almaz.