Battering RAM (DDR4 interposer, dynamic aliasing 2025)¶
Boot zamanı trust kontrollerinden görünmez geçen, ardından runtime'da dynamic memory aliasing'i açarak şifreli DRAM'i replay/corrupt eden ve Intel SGX ile AMD SEV-SNP'yi kıran ~$50'lık bir DDR4 interposer.
Mechanism¶
Note
Modern x86'da scalable memory encryption (Intel TME/Scalable SGX, AMD SEV-SNP) kapasite uğruna freshness'ten taviz verir: terabaytlarca DRAM'i kapsamak için yazma başına counter/MAC olmayan tek bir key kullanır, dolayısıyla encryption deterministik ve konumsaldır — aynı physical address'teki aynı plaintext her zaman aynı ciphertext'i verir. Bu da ciphertext'i kararlı, replay edilebilir bir token yapar. Battering RAM bunu dynamic aliasing ile silah hâline getirir: CPU ile DIMM arasındaki pasif bir DDR4 interposer, seçili row-address line'larını topraklamak için analog switch'ler kullanır, böylece farklı iki physical address aynı DRAM cell'ine map'lenir. BadRAM'in aksine (statik, SPD düzeyinde bir aliasing hilesi), buradaki aliasing bir microcontroller tarafından runtime'da değiştirilir: board başlangıçta normal bir DIMM gibi davranır, böylece attestation/trust kontrollerinden geçer, sonra "kötü niyetli olur" ve korumalı adresleri sessizce saldırgan kontrolündeki konumlara yönlendirir. Bir adres alias'lanmışken saldırgan, kurbanın ciphertext'ini bir adreste yakalayıp daha sonra alias'lanan adreste replay edebilir — replay'i yakalayacak hiçbir cryptographic freshness kontrolü olmadan TEE'nin varsaydığı confidentiality ve integrity'yi yener.
Walkthrough¶
Interposer, bir DDR4 connector ve bir Raspberry Pi Pico tarafından sürülen iki ADG902BRMZ analog switch taşıyan özel bir PCB'dir; toplam malzeme listesi yaklaşık $47.62 (ticari interposer'lar için >$100k'ya karşılık).
-
Interposer'ı yerleştir — DIMM ile socket arasına. Switch'ler row-address line'ları üzerinde durur; açıkken modül sıradan bir DIMM gibi davranır.
-
Boot zamanı doğrulamasından geç. Aliasing başlangıçta kapalı kalır, dolayısıyla platform trust kontrolleri ve (SEV-SNP'de) launch attestation normal şekilde başarılı olur.
-
Runtime'da aliasing'i aç. Pico, hedeflenen adres line'larını topraklamak için switch'leri kapatır, böylece iki physical address aynı cell'i alias'lar.
-
Ciphertext'i yakala ve replay et. Encryption deterministik ve konumsal olduğu için saldırgan bir adreste bir kurban ciphertext'ini okur ve onu alias üzerinden replay eder — aşağıdaki belgelenmiş sonuçları mümkün kılar.
Gösterilen sonuçlar
Intel Scalable SGX : arbitrary plaintext read AND write of enclave memory,
via a 5-step ciphertext capture-and-replay
AMD SEV-SNP : broken remote attestation — capture and replay the
launch measurement digest, then backdoor the VM
undetected through dynamic aliasing
Root cause : single-key, freshness-free (no counter/MAC) memory
encryption; same plaintext+address => same ciphertext
Warning
Bu, fiziksel, supply-chain tarzı bir saldırıdır: memory bus'ına bir interposer kurmak için elle erişim gerektirir. Remote değildir. Intel ve AMD bulguları kabul etti (Şubat 2025) ama fiziksel DRAM interposer saldırılarını TEE threat model'leri için kapsam dışı sayıyor; her ikisi de 30 Eylül 2025 açıklaması civarında advisory yayınladı.
Mitigation¶
Yapısal düzeltme cryptographic freshness'tir: line başına counter/MAC ya da integrity tree'ler (client/desktop SGX'in eski MEE'sindeki gibi), böylece replay edilen bir ciphertext doğrulamada başarısız olur — ama scalable tasarımların kapasite uğruna düşürdüğü tam olarak budur. Operasyonel olarak: güvenilir/mühürlü hardware supply chain, tamper-evident DIMM/socket mühürleri ve fiziksel bus erişimine sahip bir saldırgana karşı SGX/SEV-SNP confidentiality'sine güvenmemek.