AEPIC Leak¶
Sunny-Cove Intel CPU'larda local APIC'in memory-mapped register'larının undefined offset'lerini okuyarak — SGX enclave secret'ları dahil — bayatlamış veriyi architectural olarak oku.
Mechanism¶
Note
ÆPIC Leak ilk architectural CPU data leak'tir: secret veriyi normal bir load üzerinden döndürür, decode edilecek hiçbir timing side channel olmadan. Sunny-Cove tabanlı Intel core'larda (Ice Lake, Alder Lake) local APIC (Advanced Programmable Interrupt Controller) memory-mapped I/O üzerinden açığa çıkar. 4 KiB'lik register page'inde birçok undefined / reserved offset vardır. Software böyle bir undefined offset okuduğunda, hardware sabit bir değer döndürmez — L2 ile last-level cache arasında cache line'ları taşıyan buffer olan superqueue'da kalmış bayat veriyi döndürür. Değişmez nokta: yakın zamanda L2 ile LLC arasında taşınan veri (load'lar, store'lar ve kritik olarak SGX enclave'lere giren ya da çıkan veri) superqueue'da oyalanır ve undefined APIC MMIO offset'lerini okumak o bayat veriyi architectural olarak bir general-purpose register'a yüzeye çıkarır. Flush+Reload yok, probing yok — byte'lar okunmak için orada öylece durur.
Walkthrough¶
Saldırganın APIC MMIO page'ine erişimi gerekir; bu, etkilenen sistemlerde
privileged (root / CPL0) kod tarafından ya da kötü niyetli bir OS üzerinden
erişilebilir — asıl hedef SGX'tir, ki orada OS tasarım gereği güvenilmezdir.
- Map the APIC page (xAPIC MMIO, physical base
0xFEE00000):
int fd = open("/dev/mem", O_RDWR | O_SYNC);
volatile uint8_t *apic = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE,
MAP_SHARED, fd, 0xFEE00000);
- Read undefined offsets ile bayat superqueue byte'larını örnekle:
// Reserved/undefined APIC register offsets return uninitialized
// superqueue data instead of a defined value.
for (int off = 0; off < 0x1000; off += 4) {
uint32_t v = *(volatile uint32_t *)(apic + off); // architectural read
record(off, v); // stale L2<->LLC data
}
- Reconstruct secrets. Enclave aktivitesini (ya da kurban memory trafiğini) sür, sızdıran offset'leri tekrar tekrar örnekle ve kurtarılan 4-byte parçaları key'lere/plaintext'e dik.
Beklenen sonuçlar (makaleden)
Detection¶
Sızdırılan bağlamın içinden zordur; APIC MMIO'ya beklenmedik erişimi tespit etmeye dayanır. SGX attestation revocation, ele geçirilmiş enclave'leri işaretleyebilir.
Mitigation¶
Intel microcode güncellemeleri; xAPIC MMIO'yu devre dışı bırak / x2APIC kullan (MSR tabanlı, MMIO page'i yok); SGX için enclave geçişlerinde superqueue durumunu flush'la ve etkilenen parçalarda SGX confidentiality'sine güvenmekten kaçın. Intel'in microcode düzeltmesi sızdırılan okumaları sanitize eder.