Skip to content

Memory Integrity Enforcement (MIE) / Enhanced MTE (EMTE)

Apple'ın always-on, synchronous memory-safety mimarisi (A19, 2025): secure typed allocator'lar üzerine inşa edilen Enhanced Memory Tagging Extension artı Tag Confidentiality Enforcement, kernel ve kilit userland yüzeyleri boyunca spatial ve temporal memory safety'yi donanımda zorunlu kılar.

Mechanism

Güvenlik invariant'ı

MIE, tag-matching memory isolation uygular: kapsanan bir allocation'a yapılan her erişime yalnızca kullanılan pointer o allocation'ın mevcut durumu için doğru tag'i taşıyorsa izin verilir. Her allocation'a bellekle birlikte saklanan secret bir tag atanır; pointer eşleşen bir tag taşır; donanım her load/store'da bunları karşılaştırır. Apple EMTE'yi synchronous modda çalıştırdığı için, bir mismatch asynchronous olarak loglanmak yerine suçlu instruction'da hemen fault'lar — kötü bir erişimin tamamlandığı bir race window yoktur. Bu tek invariant, eşzamanlı olarak hem spatial safety (bitişik bir allocation'a taşan bir overflow farklı bir tag'e çarpar ve fault'lar) hem de temporal safety (free-and-reallocate sonrası bellek yeni bir tag alır, böylece stale bir dangling pointer'ın eski tag'i artık eşleşmez ve reddedilir) sağlar.

Bunun yükselttiği çıta temeldir: çoğu memory-corruption exploit chain'i, bir bug'ı bir out-of-bounds write ya da bir use-after-free reallocation'a çevirerek başlar. MIE altında o ilk adımlar fault'lar ve saldırganları geç aşamadaki bir mitigation'ı dolanmak yerine savunmayla chain'in başında yüzleşmeye zorlar. Apple, hedefi mükemmel güvenlik olarak değil, spyware-seviyesinde exploit geliştirmeyi çarpıcı biçimde daha pahalı hale getirmek olarak çerçeveler.

Walkthrough

MIE, birbirini karşılıklı güçlendiren dört katmandan oluşur:

  1. Secure typed allocator'lar (kernel kalloc_type; userland xzone/libpas tarzı malloc). Bunlar allocation'ları type ve size'a göre organize eder, böylece saldırganlar bir type'taki object'i serbestçe başka bir type'ın belleğine yerleştiremez — type confusion için "precise placement" ön koşulunu ortadan kaldırır. Bkz. kalloc-type.md ve kheap-segregation.md.
  2. Enhanced Memory Tagging Extension (EMTE). Arm MTE spesifikasyonu üzerine inşa edilmiştir; Enhanced varyant (Arm ile birlikte, ~2022 spesifiye edildi), MTE'nin yalnızca bir debugging yardımcısı olarak değil her zaman çalışabilmesi için tasarlanmıştır. Dikkat çekici bir EMTE özelliği: tagged bir bölgeden non-tagged belleğe erişmek o bölgenin tag'ini bilmeyi gerektirir; bu, saldırganların corruption'ı untagged allocation'lara yönlendirerek tagging'i atlatabileceği bir boşluğu kapatır.
  3. Synchronous checking. Tag mismatch'leri precise biçimde abort eder, böylece bir out-of-bounds ya da stale erişim "önce başarılı olup sonra fark edilemez."
  4. Tag Confidentiality Enforcement. Tag'lerin kendi gizliliğini koruyan bir policy set'i — bu olmadan, doğru tag'i öğrenebilen bir saldırgan eşleşen bir pointer forge edip kontrolü geçebilir.

Tag Confidentiality Enforcement (neden önemli)

EMTE yalnızca tag'lerinin öngörülemezliği kadar güçlüdür. Apple'ın Tag Confidentiality Enforcement'ı, tag değerlerini leak etme ya da tahmin etme yollarına karşı sertleştirir; bunlar arasında:

  • Side channel'lar / speculation: tasarım, tag değerlerinin speculative execution'ı ya da timing'i etkileyememesini amaçlar, böylece microarchitectural side channel'lar üzerinden geri kazanılamazlar.
  • Tag prediction: pseudo-random tag generator sık sık yeniden seed'lenir, böylece önceden gözlemlenen tag'ler gelecektekileri tahmin etmez.
  • Spectre-V1 tarzı leak'ler: type-segregation kısıtlamalarından yararlanılır, böylece speculative-leak primitive'leri tag'lere karşı silahlandırmak için pratik olmaktan çıkar.
Kabul edilen sınırlamalar / residual bypass sınıfları (Apple'a göre)

Apple, MIE'nin "mükemmel güvenlik olmadığını" açıkça belirtir. Kamuoyuna açıklanan residual yüzeyler şunları içerir:

  • Intra-allocation overflow'lar: tek bir tagged allocation içinde kalan corruption bir tag sınırını aşmaz ve tek başına tagging tarafından yakalanmaz (bunlar nadirdir).
  • Coarse-granularity boşlukları: bazı cross-bucket korumalar, per-allocation tag'ler yerine page-granularity (örn. 16 KB) sınırlarına dayanır.
  • Non-tagged bellek / global'ler: EMTE'nin non-tagged belleği koruması tag bilgisine bağlıdır; belirli global değişkenler potansiyel bir vektör olarak kalır.

İşte bu yüzden MIE, tek bir kontrol olarak değil, PAC, donanımsal kernel-text koruması ve secure allocator'ların yanında defence-in-depth'in bir parçası olarak konuşlandırılır.

Detection

  • Device generation'ı. Always-on synchronous EMTE'li MIE, A19 / A19 Pro sınıfı silikonda (iPhone 17 / iPhone Air, 2025) tanıtıldı. Bu yüzden MIE'nin varlığı desteklenen donanıma bağlıdır; eski cihazlar allocator hardening artı PAC'a dayanır.
  • Fault telemetry'si. Synchronous EMTE altında, bir tag mismatch, fault'layan instruction ve adrese atfedilebilen precise bir donanım fault'u (bir MTE tag-check abort) üretir — bir out-of-bounds ya da use-after-free erişiminin high-fidelity bir sinyali, hem crash-triage göstergesi hem de exploit-attempt telemetry'si olarak değerli.
  • Allocator konfigürasyonu. Typed secure allocator'ların (kernel'de kalloc_type, tagging yapan userland allocator'ı) kullanımda olduğunu doğrulamak, MIE'nin üzerine inşa ettiği substrate'in aktif olduğunu gösterir.

Mitigation

  • Desteklenen donanımda çalıştır ve yazılımı güncel tut ki EMTE, opt-in/debug bir konfigürasyon yerine synchronous, always-on modda kalsın.
  • Tagging'i tek başına bir kontrol olarak görme. MIE'yi pointer authentication (arm-pointer-authentication.md, arm-pacbti.md), donanımsal kernel-text lockdown (ktrr.md, ctrr.md), read-only-after-init veri (read-only-after-init.md) ve heap segregation/typing (kheap-segregation.md, kalloc-type.md) ile birleştir ki yukarıdaki residual boşluklar diğer katmanlarca kapansın.
  • Yazılım yazarları için: field type'larını doğru tut (raw data olarak type'lanmış bir pointer allocator type-segregation'ını baltalar), intra-allocation trust boundary'lerini minimize et ve fuzzing/triage'da herhangi bir tag-check fault'unu gerçek bir memory-safety kusuru olarak ele al.

Baseline MTE ile ilişkisi

MIE, Apple'ın Arm tagging konseptinin ürünleştirilmiş, always-on, confidentiality-hardened bir deployment'ıdır. Temeldeki mimari özellik ve genel durumda nasıl implemente edilip saldırıya uğradığı için bkz. arm-memory-tagging-extension.md ve mte-tag-brute-force.md.

References