Skip to content

TikTag (MTE tag leak via speculation)

Bir address'in ARM MTE tag'ini speculative olarak probe et ve guess'i cache'ten oku — MTE'nin probabilistic 4-bit tag'ini deterministik şekilde leak edilebilir bir oracle'a dönüştürür.

Mechanism

Neden çalışır

ARM Memory Tagging Extension (MTE), her 16-byte granule'a ve her pointer'a 4-bit bir tag iliştirir; pointer tag'i memory tag'iyle eşleşmezse bir load/store fault verir. Yalnızca 16 olası tag ile MTE'nin koruması probabilistic'tir (random bir guess ~1/16 başarılı olur). TikTag (Kim et al., 2024), bir speculative tag-check oracle'ı kurarak bu olasılığı kırar: bir tag check'in sonucunu, architectural fault teslim edilmeden önce cache'te gözlemlenebilir hale getirir, böylece bir attacker tahmin edilen bir tag üzerine bahis oynamak yerine onu teyit edebilir.

İki gadget oracle'ı gerçekleştirir:

  • TikTag-v1 — speculation shrinkage'i exploit eder. Speculative bir tag-check fault'unda core, daha fazla speculative execution'ı ve data prefetching'i kısar. Yani bir probe address'ine sonraki bir access (TEST) yalnızca tag eşleştiyse gerçekleştirilir (ve cache'lenir); mismatch durumunda probe uncached kalır.
  • TikTag-v2 — store-to-load forwarding'i exploit eder. Birkaç instruction içinde aynı address'e bir store sonra load normalde forward eder; bir tag-check fault'u forward'ı bloklar, yine match vs. mismatch'e göre anahtarlanmış bir probe line'da bir cache-state farkı üretir.

Her iki durumda da secret-dependent etki bir cache hit/miss'tir, Flush+Reload-tarzı bir ölçümle kurtarılır. Invariant: MTE'nin tag check'i, sonucu architectural olarak görünmez ama microarchitectural olarak gözlemlenebilir bir cache footprint bırakan bir speculative branch'tir. Tüm 16 tag'i brute-force etmek sonra gerçek tag'i deterministik şekilde kurtarır — use-after-free / overflow exploit'leri için MTE-as-a-mitigation'ı yener (örneğin Chrome'un V8'inde ve Linux kernel'inde).

Walkthrough

Attacker'ın, attacker'ın etkilediği pointer'larla erişilebilir bir TikTag gadget'ına ve bir cache probe array'ine ihtiyacı vardır. TikTag-v2'nin JS-level şekli (paper'dan):

// guessptr carries a GUESSED tag; probe[] is the cache oracle
victim[idx] = PROBE_OFFSET;   // store through guessptr
val = victim[idx];            // load through guessptr (store->load forward)
return probe[val];            // TEST: caches probe[] only if forward succeeded
  1. Oracle'ı kur. probe[]'i cache'ten flush et.
  2. Branch predictor'ı bir valid tag ile train et ki gadget tahmin edilen tag için speculative olarak çalışsın.
  3. Tahmin edilen bir tag ile speculate et. Eğer guess == real tag ise check geçer, forward/prefetch olur ve TEST line cache'lenir; mismatch olursa cache soğuk kalır.
  4. probe[]'i reload et ve timing'le — hızlı bir access bu guess'in gerçek tag olduğu anlamına gelir.
  5. 16 tag'i sweep et; hit, target granule'ün tag'ini açığa çıkarır.
$ ./tiktag --gadget v2 --target 0x...  # conceptual
training predictor ... ok
sweeping tags 0x0..0xf:
  tag 0x0  reload 232 cyc  (miss)
  tag 0x1  reload 240 cyc  (miss)
  ...
  tag 0xA  reload  74 cyc  (HIT)   <- leaked MTE tag = 0xA
Reported results
Chrome / V8 (TikTag-v2): 95/100 runs, ~2.54 s avg to leak a tag
V8 (TikTag-v1):         100/100 runs, ~3.04 s avg
Linux kernel UAF (TikTag-v1, snd_timer_user_read gadget):
                         97/100 runs, ~6.86 s avg
Tag recovery is deterministic once the gadget + cache oracle exist.

Detection

Software seviyesinde tespit etmesi zordur: leak, meşru speculative execution üzerine biner. Davranışsal imzalar, bir probe array üzerinde tekrarlanan faulting access'lerle birleştirilmiş sıkı Flush+Reload-tarzı loop'lardır — cache attack'larına karşı kullanılan aynı HPC ipuçları (yüksek L2/LLC miss oranları).

Mitigation

  • MTE'yi standalone bir probabilistic barrier olarak değil, defense-in-depth olarak ele al.
  • Tag check ile herhangi bir secret-dependent access arasına speculation barrier'ları (isb/data-dependent barrier'lar) ekle; attacker-controlled pointer'ların yakınında TikTag gadget pattern'lerinden kaçın.
  • Bkz. ../mitigation/arm-memory-tagging-extension.md ve ilgili mte-tag-brute-force entry'si; ilgili speculative/prediction channel'ları: spectre, pacman.

References