Controlled-Channel Attack¶
Kötü niyetli bir OS'in, memory erişimlerinin page seviyesindeki sırasından enclave secret'larını geri çıkardığı deterministik, noise'suz bir page-fault side channel'ı.
Mechanism¶
SGX/Haven/InkTag tarzı threat model'lerde OS untrusted'tır ama yine de page table'ları yönetir. Attacker'ın kontrolündeki OS, enclave page'lerine erişimi bilinçli olarak iptal eder (present bit'i temizler / unmap eder), böylece enclave'in bu page'lere her erişimi OS'in handle ettiği bir page fault tetikler — ve OS faulting page address'ini görür.
Note
Timing veya cache channel'larının aksine bu channel deterministik ve noise'suzdur: page-granularity (4 KiB) erişim trace'i, victim page fault'lar üzerinden single-step edilerek her seferinde bir page olmak üzere tam olarak gözlenir. Leak invariant'ı basitçe şudur: bir fault'u handle etmek, korunan programın az önce dokunduğu page'i açığa çıkarır.
Walkthrough¶
- Unmap. Enclave'in code/data page'lerini not-present işaretle ki bir sonraki erişim fault'lasın.
- Observe. Her page fault'ta faulting page address'ini kaydet.
- Advance. O page'i yeniden map'le ve önceden erişilen page'i unmap et; programı bir sonraki page transition'ında tekrar fault'lamaya zorla.
- Reconstruct. Sonuç tam page-granularity erişim sequence'idir; bunu bilinen program control/data flow'una eşle.
Xu, Cui ve Peinado (IEEE S&P 2015) yaygın kullanılan kütüphanelerden (FreeType, Hunspell, libjpeg) tam metin dokümanları ve JPEG görüntülerinin dış hatlarını çıkardı; Haven ve InkTag üzerinde gösterildi.
Not: Bu temel teknik page-granularity (4 KiB) çözünürlükle çalışır. Single-stepping ile bunu instruction-granularity'ye taşıyıp kod/versiyon fingerprinting (VID) yapan rafine bir varyant ve karşı önlemi için bkz. SGX-LEGO controlled-channel attack.
Detection¶
Korunan program içinde anormal derecede yüksek page-fault oranları; savunmalar (T-SGX, Déjà Vu, SGX-Shield) aşırı fault/AEX'leri tespit eder veya sınırlar.
Mitigation¶
Page-fault-oblivious / data-oblivious execution; enclave içinde self-paging veya fault-rate tespiti; ORAM tarzı erişim-pattern obfuscation'ı; page seviyesindeki control flow'u düzleştiren compiler'lar. Microcode fix yok — paging'i untrusted bir OS'e devretmenin doğasında olan bir durum.