Skip to content

CopyCat

Her SGX enclave code page'inde çalıştırılan instruction sayısını tam olarak sayarak control flow'u instruction granularity'sinde yeniden kuran, deterministik single-stepping tabanlı bir controlled-channel attack.

Mechanism

SGX, bir enclave'in page table'larını untrusted-OS kontrolünde bırakır; bu yüzden privileged bir adversary controlled-channel attack kurabilir — page permission'larını iptal edip page-granular fault sequence'larını gözleyerek. CopyCat (Moghimi vd., USENIX Security 2020) bunu deterministik single-stepping ile page granularity'sinden instruction granularity'sine keskinleştirir.

Note

Enclave her tek instruction'dan sonra interrupt edilir, böylece attacker control başka yere akmadan önce bir code page içinde kaç instruction çalıştığını sayabilir. Deterministik page başına instruction sayısını page seviyesindeki erişim sequence'ıyla birleştirmek, sadece bir instruction kadar — hatta tek bir cache line içinde — ayrışan secret-dependent branch'leri ayırt eder. Invariant şu: aynı page üzerinden geçen iki control-flow yolu farklı instruction sayıları çalıştırır ve CopyCat bu sayıyı istatistiksel olarak değil tam olarak çözer.

Walkthrough

  1. Single-step. OS/hypervisor yetkisiyle interrupt'ları enclave her instruction'dan sonra bir AEX alacak şekilde yapılandır.
  2. Page transition'ları izle. Execution'ın farklı bir code page'e geçtiğini tespit etmek için page-table hileleri kullan (access/permission bit'lerini temizleyerek).
  3. Count. Önceki page'de biriken instruction'ları topla.
  4. Trace. (page, instruction-count) çiftlerinden deterministik bir sequence oluştur.
  5. Recover. Trace'i bilinen binary'ye eşleyerek secret-dependent branch kararlarını yeniden kur.

Makale, güncel crypto kütüphanelerindeki ince bug'lara (örn. signature scheme'lerinde nonce/scalar işleme) karşı single-trace key extraction gösterir; key'leri averaging yerine tek bir gözlemden çıkarır.

Detection

Single-step savunmaları (AEX-Notify tarzı interrupt tespiti, instruction-count anomaly counter'ları), single-stepping'in gerektirdiği anormal derecede yüksek AEX/interrupt oranını işaretler.

Mitigation

Control flow'un secret-independent olması için constant-time, branch-balanced crypto; SGX interrupt-detection mitigation'ları. Microcode fix yok — architected SGX/OS trust model'ini suistimal eder.

References