Skip to content

Prime+Count: Novel Cross-world Covert Channels on ARM TrustZone

ARM TrustZone secure world'ündeki bir trojan'ın, world-paylaşımlı cache'te işgal edilen line'ların sayısını modüle ederek bir normal-world process'ine sinyal verdiği, set-başına timing'i daha kaba, gürültüye dayanıklı bir occupancy ölçümüyle takas eden bir cross-world covert channel.

Mechanism

ARM TrustZone yürütmeyi bir secure world (trusted OS / trustlet'ler) ile bir normal world (zengin OS) olarak ayırır, hardware memory ve peripheral'ların isolation'ını zorlar. Ancak her iki world tipik olarak aynı physical cache hiyerarşisini paylaşır (ör. last-level cache). Dolayısıyla cache state, architectural veri geçmese de world sınırını geçen bir yan kaynaktır.

Note

İhlal edilen sınır, bir confidentiality bariyeri olarak TrustZone world isolation'dır. Klasik bir PRIME+PROBE channel'ında normal-world receiver cache set'lerini prime'lar, secure-world sender'ın bazılarını evict etmesine izin verir, sonra eviction'ı tespit etmek için her set'i zamanlardı. TrustZone'da bu gürültülüdür: pseudo-random cache replacement policy'si ve world switching'in neden olduğu cache perturbation'ı set-başına timing'i bozar. Prime+Count'un içgörüsü şudur: set-başına çözünürlüğe ihtiyacın yok — yalnızca diğer world tarafından kaç set/line'ın işgal edildiğini bilmen yeterli. Occupancy saymak tek tek set timing'lerini ölçmekten çok daha stabildir, dolayısıyla covert channel, world sınırı boyunca naif Prime+Probe'u yenen gürültüyü atlatır.

Walkthrough

Public ACSAC 2018 paper'ını ve yayımlanan kodu takip eden üst düzey yeniden üretim:

  1. Tehdit modeli. Zaten secure world'de çalışan kötü amaçlı bir bileşen (sender/trojan); işbirliği yapan bir normal-world process ise receiver'dır. Amaç, TrustZone isolation'ına rağmen secure-world verisini sızdıran bir covert channel'dır — secure world'e girmek değil.
  2. Prime. Receiver normal world'den seçilen bir cache bölgesini doldurur.
  3. Occupancy ile encode (sender). Secure-world trojan bir sembol iletmek için kontrollü bir sayıda cache line'a dokunur — daha fazla line işgali bir değeri, daha azı başka bir değeri encode eder.

    # secure world (sender) encoding bit b
    occupy_lines( b ? HIGH_COUNT : LOW_COUNT )
    
  4. Count (receiver). Normal world'e dönüldüğünde, receiver primlenmiş bölgesine erişir ve her set'i tek tek zamanlamak yerine line'larından kaçının evict edildiğini sayar (bir hit/miss sayımı).

    # normal world (receiver) decoding
    evicted = count_missed_lines(primed_region)
    bit = (evicted > THRESHOLD) ? 1 : 0
    
  5. Senaryolar. Paper channel'ı hem bir single-core ayarında (sender/receiver bir core'u scheduling/world switch'leri üzerinden zaman-paylaşır) hem de bir cross-core ayarında (paylaşılan coherent LLC üzerinden iletişim kuran bağımsız core'lar) kurar, her birinde kullanılabilir bir covert-channel bant genişliği elde eder.

Covert channel vs. side channel

Prime+Count bir covert channel'dır: her iki uç işbirliği yapar. Önemlidir çünkü TrustZone'un paylaşılan cache'inin sağlam bir cross-world iletişim ortamı olabileceğini gösterir ve compromise edilmiş bir trustlet'in güvenilmeyen OS'e sessizce sızdıramayacağı varsayımını çürütür.

Detection

  • Anormal cross-world cache contention. Normal world'de secure-world aktivitesiyle korelasyonlu periyodik, yapılı pattern'ler için cache-miss / eviction-rate performance counter'larını izlemek channel'ı yüzeye çıkarabilir.
  • World-switch frequency anomalileri (SMC call oranları) — sıkı prime/count döngülerine eşlik eden, single-core varyantlarda sezgisel bir göstergedir.
  • Trustlet'lerin davranışsal attestation'ı: işlevsel bir nedeni olmayan, bir trusted application içindeki beklenmedik cache'e-dokunan döngüler şüphelidir.

Mitigation

  • World'ler arasında cache partitioning. Paylaşılan cache'i statik veya dinamik olarak partition'lamak (Intel CAT'in bir ARM analoğu, ya da way-based locking) ki world'ler line paylaşmasın, paylaşılan ortamı kaldırır.
  • World switch'te cache flush/scrub. secure/normal sınırı boyunca paylaşılan cache state'ini flush etmek veya randomize etmek, bir performans maliyetiyle, occupancy sinyalini yok eder.
  • Secure monitor'da world-farkında cache yönetimi ki secure-world cache footprint'i normal world'den gözlemlenemesin.
  • Trusted kodu minimize etme / güçlü trustlet vetting secure-world trojan'ının en baştan var olma ihtimalini azaltır.

References