SPTM (Secure Page Table Monitor)¶
XNU'dan daha privileged olan ve page-table update'lerine münhasıran sahip olan bir monitor; öyle ki kernel-write yeteneğine sahip bir saldırgan bile keyfi executable veya writable memory map'leyemez.
Mechanism¶
Invariant: page table'ları yalnızca SPTM mutate edebilir ve asla W^X ihlaline izin vermez
Apple silicon üzerinde (A15-ve-sonrası ve M2-ve-sonrası SoC'ler), Secure Page Table Monitor (SPTM), XNU kernel'inin üstünde bir privilege level'da çalışır. Apple'a göre SPTM ile Trusted Execution Monitor (TXM), "hem user hem kernel process'lerinin page table'larını modification'a karşı korumak için birlikte çalışacak şekilde tasarlanmıştır … saldırganlar kernel write yeteneklerine sahip olduğunda bile."
Zorunlu kılınan invariant şudur: bir page-table entry (PTE) yazabilen tek code path SPTM'in içindedir. Kernel bir mapping değişikliği talep edebilir, ama SPTM her talebi commit etmeden önce kendi policy'sine karşı validate eder. Bu, compromise edilmiş bir kernel'in — keyfi bir kernel-virtual write ve control-flow hijack'e sahip olsa bile — bir page'i doğrudan executable'a çeviremeyeceği, kernel text'in write protection'ını kaldıramayacağı veya writable-ve-executable bir mapping yaratamayacağı anlamına gelir. Güvenlik özelliği kernel compromise'inden sağ çıkar, çünkü kernel trust boundary'nin dışındadır.
SPTM, "PPL'nin kullandığı Fast Permission Restrictions'ın bir evrimi olan yeni silicon primitive'lere dayanır." A15/M2-sınıfı SoC'lerde, "SPTM (TXM ile kombinasyon halinde) PPL'nin yerini alır ve early boot sırasında bile kernel'e güvene dayanmayan, daha küçük bir attack surface sunar."
Walkthrough¶
Üst düzeyde, tasarım sorumlulukları privilege domain'leri arasında bölüştürür; böylece tek bir compromise tam memory-mapping kontrolü vermez:
- SPTM page table'lara sahiptir. Per-frame type/ownership muhasebesi tutar; öyle ki örneğin kernel page table'ları için kullanılan bir physical page aynı anda attacker-writable data olarak yeniden map'lenemez. Tüm PTE write'larına aracılık eder.
- TXM daha düşük privileged policy engine'dir: neyin executable olmasına izin verildiğine (code-signing / trust policy) karar verir. SPTM bu kararı danışır ama gerçek write yeteneğini kendi elinde tutar.
- XNU (kernel) memory permission'ları açısından untrusted kabul edilir. Bir mapping'i değiştirmek için SPTM'e doğru yukarı çağrı yapması gerekir; SPTM de talebi denetler.
Apple, bölünmenin kasıtlı olduğunu, böylece "bu privilege separation ve aralarındaki trust yönetimi sayesinde bir TXM compromise'inin otomatik olarak bir SPTM bypass'ına dönüşmediğini" belirtir.
Bir saldırganın onu yenmek için ne yapması gerekirdi (kavramsal)
Klasik bir kernel exploit zinciri, attacker-controlled data'yı executable yaparak (bir shellcode/JIT payload çalıştırmak için) ya da patch'lemek için kernel text'in korumasını kaldırarak biter. SPTM altında:
- Bir kernel R/W primitive'i artık yeterli değildir — bellek içindeki PTE byte'larına yazmak hiçbir işe yaramaz, çünkü MMU yalnızca SPTM'in author edebileceği table'ları walk eder ve SPTM yeniden validate eder.
- Saldırganın bunun yerine SPTM'in kendi içinde bir logic flaw'a (minik, audit edilmiş bir codebase) ya da SPTM'in illegitimate bir mapping'i authorize etmeye ikna edilebildiği bir confused-deputy bug'a ihtiyacı olurdu.
- Tek başına TXM'i yenmek (code-trust policy) yine de tasarım gereği keyfi PTE kontrolü vermez.
Bu, exploitation maliyetini "kernel write"tan "monitor compromise"a yükseltir ki amaçlanan etki de budur.
Detection¶
Bu bir platform invariant'ıdır, ayarlanabilir bir tunable değil — configuration'ı değil, varlığını doğrula
- SoC envanteri çıkar. SPTM yalnızca A15-ve-sonrası / M2-ve-sonrası silicon'da vardır. Filo/MDM blue team'leri için device model'lerinin bu kuşaklara map'lendiğini doğrula; daha eski cihazlar PPL'e (
ppl) düşer. Apple'ın "Apple SoC security" destek sayfası per-chip feature tablosunu yayınlar. - OS-sürüm gating'i. SPTM/TXM, iOS 17 / macOS Sonoma kuşağıyla geldi. Daha eski OS'lere takılı kalan cihazlar, yetenekli silicon üzerinde olsalar bile faydalanamaz — OS sürümünü MDM üzerinden takip et.
- Crash/panic telemetry. Page-table invariant'ını ihlal etme girişimleri, sessiz başarı yerine monitor-ilişkili imzalara sahip kernel panic'leri (SPTM/TXM abort'ları) olarak yüzeye çıkar. Yönetilen bir cihazda böyle panic'lerdeki bir artış, eskalasyona değer güçlü bir tampering/exploitation sinyalidir.
- Jailbreak durumu. SPTM-sınıfı cihazlarda başarılı kalıcı code injection, monitor-seviyesinde bir kırılmaya işaret eder; device-attestation / managed-device-attestation başarısızlıkları anlamlı bir host sinyalidir.
Mitigation¶
Etkinleştirme ve hardening
- SPTM, desteklenen bir OS çalıştıran desteklenen hardware için her zaman açıktır; kullanıcılar için opt-in/opt-out anahtarı yoktur. Hardening eylemi, MDM minimum-OS ve supervised-device policy'leriyle zorunlu kılınan cihazları güncel OS sürümlerinde ve SPTM-yetenekli hardware üzerinde tutmaktır.
- Platform integrity stack'inin geri kalanıyla birleştir —
ktrr/ctrr(memory-controller seviyesinde değiştirilemez kernel text),kheap-segregationve pointer authentication (arm-pointer-authentication) — böylece son "memory'yi executable yap" aşamasından önceki adımlar da pahalı olsun. - Bilinen uyarılar / residual risk: SPTM çıtayı yükseltir ama kırılamaz değildir. Kendisi privileged bir domain'deki software'dir; SPTM'deki ya da SPTM↔TXM trust handshake'indeki bir logic flaw garantiyi zayıflatabilir. Apple silicon'a karşı side-channel ve fault-injection araştırmaları devam ediyor. SPTM ayrıca yeni executable mapping'lere asla ihtiyaç duymayan data-only / non-code corruption saldırılarını da durdurmaz.