Operation Triangulation kernel exploit (CVE-2023-32434, CVE-2023-38606)¶
Operation Triangulation'ın kernel aşaması, physical R/W için bir XNU memory-subsystem integer overflow'unu (CVE-2023-32434), Apple'ın PPL/PAC memory protection'larını bypass etmek için undocumented bir GPU MMIO "hardware feature"ı (CVE-2023-38606) ile eşleştirir.
Mechanism¶
İki bug: biri R/W için, biri hardware memory protection'ı yenmek için
Operation Triangulation, Kaspersky GReAT tarafından analiz edilen zero-click bir iMessage chain'iydi. Kernel privilege-escalation aşaması iki ayrı primitive üzerine kuruludur:
-
CVE-2023-32434 — XNU virtual-memory syscall'larında integer overflow. memory-entry /
vm_mapyolundaki (mach_make_memory_entryailesi) bir overflow, sandbox'lı bir userspace process'in user seviyesinde cihazın tüm physical memory'sine read/write erişimi elde etmesini sağlar. Bu tek başına güçlü bir primitive olsa da, modern Apple silicon üzerinde ham physical R/W, page-table protection'larını yenmek için yeterli değildir. -
CVE-2023-38606 — undocumented bir MMIO "hardware feature." Apple'ın Page Protection Layer (PPL)'ı kernel'den daha yüksek bir privilege'da çalışır ve page table'ları değiştirmesine izin verilen tek varlıktır; bu yüzden kernel R/W ile bile bir saldırgan sayfaları doğrudan remap edemez veya code page'leri forge edemez. Saldırganlar, bilinmeyen memory-mapped register'ları sürerek — büyük olasılıkla device tree'de listelenmeyen GPU coprocessor CoreSight debug register'ları — PPL'in aracılık etmediği DMA benzeri write'lar gerçekleştirerek PPL'i tamamen aşıp geçtiler. Write'lar PPL'in asla görmediği bir hardware yolundan geçtiği için, tüm software memory protection'ları (PPL ve dolayısıyla PAC'ın dayandığı integrity garantileri) bypass edilir.
İhlal edilen invariant şudur: page table'ların tek yazıcısı PPL'dir. PPL'i bypass eden undocumented bir hardware write engine, bu invariant'ı "aşağıdan" kırar; öyle ki tek bir iyi biçimlendirilmiş register dizisi, normal kernel'in asla dokunamayacağı korumalı memory'yi overwrite eder.
Walkthrough¶
Bu, Kaspersky'nin zaten yakılmış, in-the-wild bir chain'e dair kamuya açık analizinden yeniden kurgulanmıştır; açıklayıcıdır, bir tarif değildir.
Undocumented hardware feature'a, device tree'de görünmeyen üç MMIO register bloğu üzerinden erişilir:
0x206040000 # halts/unhalts the coprocessor (Apple CoreSight UTT region)
0x206140000 # enable/disable + control of the hardware feature
0x206150000 # destination physical address, data, and a verification hash
Write engine, hizalanmış 0x40-byte'lık bloklar halinde çalışır. Veri yazmak için exploit:
1. enable the feature via registers based at 0x206140000
(e.g. 0x206140008 / 0x206140108)
2. program the destination physical address + the data + a hash into the
0x206150000 block (e.g. 0x206150040 / 0x206150048)
3. the hardware performs the write, computing/validating a custom 20-bit
hash (S-box lookup) over the data — sequential writes to 0x206150048
carry address, hash, and command flags
Adım 2'nin hedefi ham bir physical address olduğundan ve write, PPL'in kontrolü dışındaki hardware tarafından gerçekleştirildiğinden, exploit page-table entry'lerini overwrite edebilir veya PPL'in normalde koruyacağı kernel memory'sini başka şekilde patch'leyebilir. Daha yeni modellerde chain ayrıca bir PAC bypass taşır; böylece forge edilmiş/kontrol edilen pointer'lar Pointer Authentication'dan sağ çıkar.
Bunun olağanüstü olmasının nedeni
Kaspersky, threat actor'ün bu register'ları kullanmasının açıklanamaz olduğunu vurguladı: MMIO aralıkları firmware/device-tree'de yer almıyor, dolayısıyla operatörlerin protokolü (ve hash function'ı) nasıl öğrendiği açık bir soru olarak kalıyor — sızdırılmış dokümantasyon, silicon'ın reverse engineering'i veya kasıtlı, açıklanmamış bir feature.
Detection¶
- Chain, iMessage üzerinden zero-click'ti; pratik tespitler forensic'ti:
Kaspersky'nin dokümante ettiği
BackupAgent/fseventsdve timeline artefact'ları ile iOS backup'larını indicator'lar için tarayantriangle_checkaracı. - Device-tree'de tanımlı aralıkların dışındaki MMIO aralıklarına yapılan anormal erişimler, kavramsal hardware-seviyesi sinyaldir; ancak sıradan endpoint tooling'iyle gözlemlenebilir değildir.
Mitigation¶
- Apple, CVE-2023-32434 ve CVE-2023-38606'yı patch'ledi (iOS 16.5.1 / 16.6 dönemi); hardware feature, fix'te devre dışı bırakıldı/gate'lendi.
- Lockdown Mode, bu tür chain'lerin erken aşamalarının attack surface'ini azaltır.