Skip to content

Nethammer

Erken (2018) tamamen uzaktan Rowhammer saldırısı: bir hedefi crafted network istekleriyle flood'layarak, kurbanda hiç saldırgan kodu çalışmadan DRAM bit flip'leri tetikleme. RDMA-tabanlı Throwhammer'dan farklı olarak, kurbanın olağan network-handling kodunu confused deputy olarak kullanır; "first" önceliği çağdaş network-RH çalışmaları arasında net değildir.

Mechanism

Note

Rowhammer, bir aggressor row'un refresh'ler arasında binlerce kez aktive edilmesine ihtiyaç duyar; bu normalde cache'in bypass edilmesini gerektirir (flush'lar, non-temporal store'lar ya da uncached bellek). Nethammer'ın içgörüsü, kurbanın kendi network-handling kodunun bu uncached/flushing erişimleri sağlayabilmesidir. Gelen her paket, kernel ve driver'ın aynı bellek konumlarına (örn. bir packet buffer ya da bir lookup yapısı) dokunmasına neden olur; bu erişimler uncached belleğe gidiyorsa, flush/non-temporal instruction'lar kullanıyorsa ya da quality-of-service cache partitioning (Intel CAT) nedeniyle DRAM'den servis ediliyorsa, yeterince yüksek bir paket oranı ilgili row'ları network üzerinden hammer'lar.

Nethammer (Lipp, Aga, Schwarz, Gruss, Maurice, Raab, Lamster, 2018), hedefte saldırgan kontrollü koda ihtiyaç duymaz — saldırgan yalnızca paket gönderir. Yazarlar bir kurbanı 500 Mbit/s'ye kadar UDP ile flood'ladı ve istek başına en az iki bellek erişiminin ana belleğe ulaşması koşuluyla yaklaşık her 350 ms'de bir bit flip gözlemledi. Bu, kurbanın hammering'i yapan confused deputy olduğu "implicit Rowhammer" modelinin kanonik örneğidir.

Walkthrough

Saldırgan tarafı, sadece per-packet yolu DRAM'e uncached dokunan bir servise yöneltilmiş yüksek-oranlı bir packet generator'dır:

# Saturate the victim's network path; each packet drives repeated DRAM accesses
# in the victim's receive/handler code (uncached or flushing).
sudo hping3 --udp --flood -p 9999 192.0.2.10
# or a raw UDP blaster sustaining hundreds of Mbit/s

Bunu işe yaratan, amplification koşuludur (paper'dan):

Requirement: >= 2 memory accesses per network request served from main memory
Trigger via : uncached memory, clflush/non-temporal stores in the handler,
              or cache eviction forced by Intel CAT (cache QoS) partitioning
Observation : ~1 bit flip per ~350 ms at ~500 Mbit/s UDP in the authors' setup

Flip'ler hammer'lanan buffer'lara komşu olan DRAM row'larına düştüğü için, saldırgan genellikle Nethammer'ı bir flip'in istismar edilebilir bir şeyi (crash'ler, değişmiş yanıtlar) ne zaman bozduğunu tespit etmenin bir yoluyla eşleştirir ve uzaktan bit flip'leri denial of service'e ya da massaging ile hedefli corruption'a çevirir.

Detection

Artan correctable/uncorrectable ECC hata sayılarıyla ya da açıklanamayan crash'lerle birleşen anormal, sürekli bir paket flood'u olarak tespit edilebilir. DRAM activation-rate counter'ları ve ECC log'ları en net sinyallerdir.

Mitigation

  • Scrubbing ile ECC, TRR/PRAC ve artırılmış refresh oranları flip'leri azaltır.
  • Hot network yollarında uncached / non-temporal / flushing erişimlerden kaçınmak, hammering primitive'ini kaldırır.
  • Rate limiting ve DRAM-erişimi-başına-tek-paket handler'larını güvenilmeyen network'lere açmamak maliyeti yükseltir.

References