NetCAT (CVE-2019-11184)¶
Network tabanlı bir cache side channel: Intel DDIO'yu (NIC'lerin last-level cache'e yazmasına izin verir) RDMA ile birlikte suistimal ederek, uzaktaki bir saldırgan LLC'yi Prime+Probe edebilir ve hedefte hiçbir kod olmadan SSH keystroke timing'ini recover edebilir.
Mechanism¶
Bug sınıfı / invariant
Intel Data-Direct I/O (DDIO), PCIe/network cihazlarının DRAM'e gitmek yerine CPU'nun last-level cache (LLC)'inin bir kısmına doğrudan DMA yapmasına izin veren bir sunucu performans özelliğidir; gelen paketler için latency'yi azaltır. Side-channel invariant'ı: LLC artık CPU core'ları ile network kartı arasında paylaşılan bir kaynaktır ve o DDIO cache bölgesinin occupancy'si network'ten gözlemlenebilir.
Uzaktaki bir peer bir paket gönderdiğinde, karşılık gelen buffer'ın DDIO cache bölgesinden mi servis edileceği yoksa DRAM'e mi evict edileceği round-trip latency'sini değiştirir. NetCAT bunu uzaktan bir Prime+Probe'a dönüştürür: saldırgan, DDIO'ya tahsis edilmiş LLC way'lerini kendi RDMA write'larıyla doldurur, sonra hangi line'larının kurbanın network/cache etkinliğiyle evict edildiğini ölçer.
Aşılan güvenlik sınırı network/compute isolation sınırıdır — aynı RDMA fabric'indeki bir host, server içi cache state'i ve ondan kurbanın keystroke'larının timing'ini hedefte kod yürütmeden çıkarır. Bu, Flush+Reload gibi local cache saldırılarının network analoğudur ve ruhen NetSpectre gibi uzaktan sızıntı çalışmalarıyla ilişkilidir.
Walkthrough¶
VUSec NetCAT proje sayfasından ve NetCAT: Practical Cache Attacks from the Network (IEEE S&P 2020) makalesinden kavramsal yeniden üretim.
-
Bir RDMA channel'ı kur. Saldırgan ve kurban RDMA yetenekli bir network'ü paylaşır (datacenter'larda yaygın). RDMA, saldırgana paketlerinin sunucunun memory/cache'inde nereye düşeceği üzerinde kesin, düşük-jitter kontrol verir — NetCAT'in bir eviction set'i uzaktan inşa etmek için ihtiyaç duyduğu özellik.
-
DDIO bölgesini reverse-engineer et. DDIO varsayılan olarak LLC way'lerinin sınırlı bir alt kümesini inbound I/O'ya ayırır. Saldırgan, LLC'nin DDIO kısmını hedefleyen uzaktan bir eviction set inşa etmek için bu way'leri network'ten profile eder.
-
Uzaktan Prime+Probe.
prime: RDMA-write attacker buffers to fill the DDIO LLC ways
wait: victim's NIC activity (e.g. an SSH packet) touches the same ways
probe: RDMA-read the attacker buffers, time each access
slow access -> attacker line evicted -> victim was active
- Keystroke timing'ini recover et. İnteraktif bir SSH oturumunda her tuş basışı bir paket üretir; paketler arası varış süreleri yazım kalıplarını sızdırır. NetCAT bu timing'leri tamamen cache-occupancy probing'inden ölçer ve yazılan karakterleri çıkarmak için bir keystroke-timing tarzı classifier'a besler.
Warning
Bu bir katalog girdisidir. Kesin eviction-set inşasını, DDIO way sayılarını ve timing eşiklerini atlar. Yalnızca test etmeye yetkili olduğun sistemlere karşı yeniden üret.
Detection¶
- RDMA trafik anomalileri: güvenilmeyen bir peer'dan küçük bir adres kümesine (eviction set) yönelik, timing ölçüm davranışı içeren sürekli, yapılandırılmış RDMA read/write kalıpları en net network sinyalidir.
- NIC/fabric telemetrisi: olağandışı yüksek RDMA operation oranları ya da aynı memory bölgelerinin tekrarlı probing'i; RoCE/InfiniBand counter'larıyla correlate et.
- Host tarafında NetCAT kurbanda hiçbir kod çalıştırmaz, dolayısıyla EDR'ın göreceği az şey vardır; detection esasen network/fabric katmanındadır ve mevcutsa LLC I/O occupancy'sinin DDIO/PMon izlemesi aracılığıyladır.
- Bir RDMA segmenti üzerinde interaktif protokol paket-timing'i maruziyetini (SSH, RDP) bir sızıntı göstergesi olarak ele al.
Mitigation¶
- Güvenilmeyen RDMA peer'larına açık host'larda DDIO'yu devre dışı bırak (ya da IIO konfigürasyonu aracılığıyla PCIe-port başına kısıtla) — Intel'in birincil yönlendirmesi.
- RDMA'yı devre dışı bırak / segment'le. RDMA'yı güvenilmeyen network'lere açma; RDMA fabric'lerini yalnızca güvenilir tenant'lara isole et.
- Network segmentation & access control: Intel, DDIO ve RDMA etkinken güvenilmeyen network'lerden doğrudan erişimin sınırlanmasını önerir.
- Keystroke sızıntısı için defense-in-depth: interaktif oturumlara timing gürültüsü / batching ekle; alttaki SSH keystroke-timing channel'ı NetCAT'ten öncedir.
- Intel CVE-2019-11184'ü düşük şiddet olarak derecelendirdi (CVSS ~2.6); koordineli açıklama 23 Haziran 2019, herkese açık ise 10 Eylül 2019 idi.