Skip to content

Operating System Integrity / OS integrity protections

OS kernel'ini, driver'ları ve page table'ları known-good bir durumda tutan katmanlı boot-time ve runtime savunmaları set'i (en eksiksiz Apple platformlarında gerçekleştirilmiştir) — böylece kernel-level read/write'a sahip bir saldırgan bile executable kodu ya da mapping'leri serbestçe değiştiremez.

Mechanism

Sınır neden tutar

Klasik savunmalar kernel'in trusted olduğunu varsayar. OS integrity korumaları, kernel'in kısmen ele geçirilmiş olabileceğini varsayar ve yine de saldırgana son adımları reddeder — kodu patch'leme, page permission'larını flip etme ya da control flow forge etme. Bunlar boot-time garantilerine ve runtime enforcement'a ayrılır, çoğunlukla kernel'in kendi ayrıcalığının altındaki donanım tarafından desteklenir:

  • Kernel Integrity Protection (KIP): boot sonrası, memory controller kernel/driver code region'larını değiştirilemez yapar — o korunan physical range'e yapılan write'lar engellenir, böylece saldırgan write'ları canlı kernel text'i patch'leyemez. KIP, kernel-text integrity için donanım mekanizmalarını kapsayan bir şemsiye terimdir: KTRR (A10–A11) ve halefi CTRR (A12+).
  • System Coprocessor Integrity Protection (SCIP): iBoot her coprocessor'ın firmware'ini korunan bir region'a yükler ve MMU'sunu, o region'ın dışında hiçbir executable mapping ve içinde hiçbir writable mapping olmayacak şekilde yapılandırır — coprocessor'lar için W^X.
  • Page Protection Layer (PPL): page-table ve code-signing permission bit'lerine sahip privileged bir monitor, böylece kernel kodu bile, signature doğrulamasından sonra saldırgan page'lerini executable yapamaz. Halefi, Trusted Execution Monitor (TXM) ile birlikte gelen Secure Page Table Monitor (SPTM), page-table kontrolünü kernel'den daha ayrıcalıklı bir domain'e taşır.
  • Fast Permission Restrictions (örn. APRR): maliyetli TLB/system işi olmadan execute permission'ını ucuza sıyıran (JIT region'larını savunan) per-thread CPU register'ları — mimari bir sınıf olarak düşünülmelidir.
  • Pointer authentication (PAC): return address'leri ve function pointer'ları imzalar, böylece bozulmuş control-flow verisi kullanımda fault'lar.

Bunlar birlikte bir invariant zorunlu kılar: kod çalışmadan önce doğrulanır ve sonradan sessizce değiştirilemez, ve execute hakkı veren yapılar, kernel'in kendisinin override edemeyeceği bir domain tarafından yönetilir.

Walkthrough

Yüksek seviye, Apple'ın Platform Security dokümantasyonundan.

1. Boot bir chain of trust kurar. Her aşama bir sonrakini doğrular; iBoot, devretmeden önce kernel ve coprocessor firmware'ini korunan region'lara (KIP, SCIP) yükler.

2. Code region'ları kilitlenir. Kernel çalışmaya başladığında, text'i memory controller'da read-only yapılır; coprocessor MMU'ları W^X'i zorunlu kılar.

3. Runtime permission değişiklikleri aracılı kılınır. Bir page'i executable map etme ya da page table'ları değiştirme talepleri, ham kernel write'ları yerine PPL / SPTM üzerinden geçer:

kernel wants page X executable
   -> request crosses into PPL/SPTM (higher-privilege monitor)
   -> monitor checks code signature / policy
   -> only then is the executable mapping installed

4. Control flow imzalanır. PAC artı Fast Permission Restrictions, ele geçirilmiş pointer'ların ve JIT page'lerinin bir execution primitive'i haline gelmesini engeller.

Bir kernel R/W saldırganına karşı katmanlama

Tasarım hedefi, kernel read/write elde etmenin gerekli ama yeterli olmamasıdır: saldırgan hâlâ değiştirilemez kod (KIP), imzalı control flow (PAC) ve kernel ayrıcalığının üzerinde duran bir page-table monitor'ü (PPL/SPTM) ile yüzleşir.

Detection

  • Integrity-violation panic'leri / fault'ları. Korunan kernel text'i yazma ya da izin verilmeyen executable mapping'ler kurma girişimleri, KIP/PPL/SPTM ihlalleri ve panic raporları olarak yüzeye çıkar — bunları intrusion sinyalleri olarak topla ve triage et.
  • Beklenmedik entitlement / code-signing failure'ları runtime'da, imzasız page'ler yüklemeye çalışan kodu gösterebilir.
  • PAC authentication fault'ları (bozulmuş bir pointer'ın AUT*'unda crash) control-flow kurcalamasını gösterir.
  • Coprocessor / firmware load anomalileri boot'ta SCIP ya da chain-of-trust kurcalamasını düşündürür. Filolarda, secure-boot / integrity attestation durumu değişen cihazları izle.

Mitigation

  • Korumaları etkin ve güncel tut. Bu özellikler OS/firmware update'leri üzerinden teslim edilir ve sertleştirilir; geri almak ya da jailbreak yapmak onları disable eder. Integrity'si disable edilmiş cihazları politika dışı olarak gör.
  • Defense in depth. OS integrity, PAC, MTE ve kernel CFI ile birlikte çalışır; tek bir katman yeterli değildir.
  • Bilinen-bypass uyarıları. Boot-chain kırılmaları (örn. checkm8 SecureROM exploit) ve PPL/page-table data-only saldırıları tarihsel olarak belirli katmanları zayıflattı, ki bu yüzden Apple PPL'i donanımla zorunlu kılınan SPTM/TXM'e taşıdı. Diğer platformlarda, benzer hedeflere hypervisor-destekli code integrity (HVCI, HyperGuard, PatchGuard/KPP) ile ulaşılır.

References