Skip to content

MTE Tag Brute Force

ARM MTE'nin 4-bit tag'i 16 olası değer verir; biri (GCR_EL1.Exclude ile) reserve edildiği için pratikte ~15 kullanılabilir kalır, bu yüzden tek bir illegal erişimin tespit edilmeden geçme şansı kabaca 1/15'tir (%6–7) — saldırganların tag'leri tahmin ederek ya da öğrenerek büyütmeye çalıştığı iyi bilinen probabilistik limit.

Mechanism

Neden entropy her şeyin özüdür

ARM MTE, her 16-byte granule başına bir 4-bit allocation tag ve pointer'ın top byte'ında eşleşen bir tag saklar; bir load/store yalnızca ikisi farklı olduğunda fault'lar. Dört bit 16 olası tag değeri (0–15) demektir — ve pratikte bir değer (çoğunlukla 0) GCR_EL1.Exclude mask'i üzerinden reserve edilir, ~15 kullanılabilir bırakır. Project Zero, bunun random bir tahmin için "yaklaşık 1/15 başarı şansı" verdiğini not eder, yani tek bir tespit edilmemiş illegal erişimin tespitten kaçma olasılığı kabaca %6–7'dir.

Bu yüzden MTE'nin dayandığı defansif özellik tag confidentiality'dir: "tag değerlerinin gizliliği, bir mitigation olarak memory-tagging'in etkinliğinin anahtarıdır." Bir saldırgan bir target granule'ün tag'ini öğrenebilir ya da tahmin edebilirse, "geçersiz memory erişimlerinin doğru tag'leneceğini ve dolayısıyla tespit edilemeyeceğini doğrudan ya da dolaylı olarak sağlayabilir" — probabilistik savunmayı sıfıra yakın bir noktaya çökertir.

Düşük entropy'nin ne kadar istismar edilebilir olduğunu iki faktör belirler:

  • Tekrarlı denemeler. Deneme başına 1/15, yalnızca saldırgan sonuç almadan birçok bağımsız deneme yapabiliyorsa zayıftır. Her yanlış tahmini ölümcül bir fault'a çeviren bir savunma, etkili başarı olasılığını 1/15'te tutar.
  • Bir oracle. Yanlış bir tahmin gözlemlenebilir ama ölümcül değilse, saldırgan körlemesine tahmin etmek yerine tag'leri doğrudan prob edebilir.

Walkthrough

Bu kayıt kavramsaldır — 4-bit tag'in neden deterministik değil, probabilistik bir savunma olduğunu ve hangi hardening'in onu güçlü tuttuğunu açıklar. Hiçbir silahlandırılmış chain verilmez.

1. Entropy matematiği. ~15 kullanılabilir tag ile, kör tahmin p ≈ 1/15 olasılıkla başarılı olur. Önemli olan şu: her yanlış deneme process'i ya da thread'i crash ettirirse, saldırgan iterate edemez: başarı başına beklenen iş yüksek kalır ve her başarısızlık gürültülüdür.

2. Sync mode invariant'ı korur; async mode onu zayıflatır. prctl(PR_SET_TAGGED_ADDR_CTRL, ...) ile seçilen mode, yanlış bir tahminin bir oracle olup olmadığına karar verir:

PR_MTE_TCF_SYNC   ->  tag mismatch faults on instruction retirement (SIGSEGV / SEGV_MTESERR)
PR_MTE_TCF_ASYNC  ->  mismatch does not fault immediately; flagged later (SEGV_MTEAERR)
Async neden daha brute-force edilebilir

Project Zero: synchronous modda "tag check failure'ları instruction retirement'ta bir donanım fault'uyla sonuçlanır," bu yüzden saldırgan geçersiz bir erişimin sonucunu asla gözlemleyemez — yanlış bir tahmin sadece bir crash'tir. Asynchronous modda "tag check failure'ları doğrudan bir fault'la sonuçlanmaz. Geçersiz read'lerin sonuçları ve geçersiz write'ların etkileri architecturally observable'dır," ki bu da saldırganın bir tahminin doğru olup olmadığını tespit etmesine ve böylece brute-force ya da bir tag oracle inşa etmesine izin verir. Analiz, "hard deterministic mitigation" için gerekli olanın Sync-MTE olduğunu söyler.

Side channel'lar tag'leri hiç tahmin etmeden leak edebilir

Sync modda bile, "Spectre tarzı speculative side-channel'lar tag confidentiality'yi kırmak için kullanılabilir" — speculative read'ler, hiçbir zaman bir architectural fault tetiklemeden bir granule'ün tag'ini açığa çıkarabilir. 2024 tarihli TikTag çalışması pratik speculative tag leakage'ı gösterdi. Yani tag gizliliği tek başına sync mode tarafından garanti edilmez; speculation hardening ile birleştirilmelidir.

Detection

Sync-mode tag fault'ları si_code = SEGV_MTESERR ile SIGSEGV olarak yüzeye çıkar; async fault'lar SEGV_MTEAERR olarak. Bir process'ten gelen bir MTE-tagged fault patlaması, prob etmenin ya da bir brute-force girişiminin güçlü bir sinyalidir ve bir runtime monitor için kullanışlı bir telemetry hook'udur.

Mitigation

(Riski azaltan şey.) Güvenlik-hassas kodu synchronous tag-check modunda çalıştır ki her yanlış tahmin leak etmek yerine fault'lasın; 4-bit tag'i asla deterministik bir bariyer olarak görme. Tag reuse'u azalt ve öngörülebilir değerleri GCR_EL1 exclude mask'i üzerinden exclude et, ilk MTE fault'unda fail-closed ol ve MTE'yi ASLR ve speculation savunmalarıyla birlikte kullan ki tek başına bir tag tahmini yeterli olmasın. Temel mekanizma için bkz. ARM MTE.

References