Skip to content

Demote+Demote

İki cldemote çalıştırması (bir Flush+Flush analoğu) kullanarak, hiçbir L1/L2 miss'ine yol açmadan bir victim'in paylaşılan bir line'a erişimini tespit eden bir cross-core cache side channel'ı.

Mechanism

cldemote bir cache line'ı private bir L1/L2'den paylaşılan L3/LLC'ye düşürür. Demote+Demote (Rauscher vd., NDSS 2025) önce shared read-only memory'deki bir line'ı demote eder; victim sonra onu load edip L1'e geri çekebilir; attacker ardından cldemote'u yeniden çalıştırır ve o ikinci demote'u zamanlar (timed operation).

Note

Az önce load edilmiş, L1-resident bir line'ı demote etmek, zaten demote edilmiş bir line'ı demote etmekten ölçülebilir şekilde farklı zaman alır ve victim erişimini açığa çıkarır. Sinyal victim'in L1 load'una bağlı olduğundan, attacker ve victim bir physical core'u paylaşmalıdır (farklı SMT logical core'ları). Flush+Flush gibi, Demote+Demote hiçbir L1/L2 miss'ine yol açmaz ve bu onu miss-counting detector'lara karşı gizli yapar — ayrıca makalede değerlendirilen saldırıların en düşük ölçülen runtime'ına (185.8 cycle) sahiptir.

Walkthrough

  1. Share. Victim'le bir shared library page'ini read-only map'le.
  2. Demote. Hedef line'ı L3'e cldemote'la.
  3. Victim'i çalıştır.
  4. Time. Aynı line'ı tekrar cldemote'la, fence'lenmiş ve rdtscp ile sarmalanmış olarak, cycle'ları kaydederek.
  5. Classify. Calibrate edilmiş bir threshold'a karşı "Victim erişti" mi "erişim yok" mu.

Makale ayrıca Demote+Demote'u cross-core load'ları ve write'ları gözlemlemek için kullanır ve bir KASLR break gösterir.

Detection

Flush+Flush gibi L1/L2-miss tabanlı HPC detector'lar için zor (induce edilen miss yok); anormal unprivileged cldemote oranları aday bir sinyaldir.

Mitigation

SMT'yi devre dışı bırak (same-physical-core gereksinimini kaldırır); cldemote'u kısıtla/cezalandır veya random latency ekle. Onaylanmış bir vendor fix yok.

References