Skip to content

FLOP: Breaking the Apple M3 CPU via False Load Output Predictions

Core'un attacker'ın oluşturduğu yanlış load değerleri üzerinde hesap yapmasını sağlamak için Apple M3/A17 nesli Load Value Predictor (LVP)'ı suistimal eden bir speculative-execution saldırısı; Safari ve Chrome'da speculative type confusion ve arbitrary memory read verir.

Mechanism

Bug sınıfı: memory-safety invariant'larını kıran value misprediction

Yeni Apple CPU'ları (M3 / A17 ve sonrası), bir load'un döndüreceği değeri memory gerçekten yanıt vermeden önce tahmin eden ve bağımlı instruction'ların erken başlamasına izin veren bir Load Value Predictor (LVP) içerir. Doğruluk normalde, mispredict edilmiş bir değer üzerinde yapılan herhangi bir işin sonradan squash edilmesine dayanır. FLOP, bir attacker'ın LVP'yi bir load için kendinden emin şekilde yanlış bir değer tahmin etmeye eğitebileceğini gösterir; bu, programın kendi safety check'lerini ihlal eden veri üzerinde transient şekilde çalıştığı bir speculation window açar. Kırılan invariant, kontrol edilen bir değerin kullanılan değer olduğu dil/runtime garantisidir: predictor, memory'nin tuttuğundan farklı bir değer sağlar, dolayısıyla az önce doğrulanmış bir bounds check, type tag veya pointer/integer ayrımı, gerçekte tüketilen değerle artık eşleşmez. Bir JavaScript engine'inde bu type confusion üretir — bir object için tasarlanmış kod başka bir object üzerinde çalışır — ve WebAssembly'de bir fonksiyonun yanlış argument türüyle çalışmasına izin verir (integer beklenen yerde pointer). Her iki durumda da attacker, sonucu daha sonra bir microarchitectural channel üzerinden dışarı çekilen bir transient arbitrary-read primitive elde eder. Paper, kendinden emin misprediction için ~250 training load'unun yettiğini ve speculation window'unun ~330 cycle'a kadar çıktığını bildiriyor. FLOP, Load Address Predictor'ı suistimal eden SLAP'in value-prediction kardeşidir.

Walkthrough

predictors.fail sitesi ve FLOP paper'ı (Kim, Chuang, Genkin, Yarom, USENIX Security 2025) chain'i yüksek seviyede anlatır.

Yüksek seviyeli reproduction (public paper'dan)
  1. LVP'yi profille. Predictor onu yüksek bir confidence ile tahmin etmeyi öğrensin diye kararlı bir değer döndüren bir load'u tekrar tekrar çalıştır (~250 training iterasyonu).
  2. Backing değeri çevir. Gerçek load sonucu artık eğitilmiş tahminden farklı olsun diye memory'yi değiştir ve kendinden emin bir misprediction'ı zorla.
  3. Bir victim computation zincirle. Ortaya çıkan speculation window sırasında, bir security check (bounds / type tag) kontrol edilen değere karşı değerlendirilirken downstream'e akan şey predict edilen (yanlış) değerdir — bu da speculative type confusion üretir.
  4. Bir read primitive kur. Safari'nin JS engine'inde, out-of-bounds okumak için bir object'i başka bir object gibi ele al; Chrome'un WebAssembly'sinde, integer beklenen yerde bir pointer ile bir fonksiyon çağır.
  5. Exfiltrate et. Transient şekilde okunan byte'ları bir cache/timing side channel'a encode et ve window kapandıktan sonra geri elde et. Gösterilen hedefler arasında webmail inbox içeriği, calendar etkinlikleri, location history ve browser'da render edilen credit-card alanları vardı.

Detection

Host-görünür signature yok; web teslimatı pratik yüzeydir

  • Microarchitectural adımın kendisi için güvenilir bir EDR/telemetri sinyali yoktur; saldırı sıradan JavaScript/WebAssembly olarak çalışır.
  • Browser katmanı heuristic'leri — sıkı, tekrarlı value-training loop'ları artı high-resolution timing primitive'leri çalıştıran sayfalar zayıf bir göstergedir; mainstream browser'lar zaten timer'ları kabalaştırır ve site'ları izole eder.
  • Patch-state envanteri — macOS/iOS/Safari sürümlerini izleyin; etkilenen bir chip üzerindeki yamasız bir cihaz, bir runtime alert'i değil, asıl risktir.

Mitigation

Vendor software/OS update'leri; site isolation ve timer hijyeni

  • macOS/iOS/Safari için Apple security update'leri birincil düzeltmedir; etkilenen chip'lerde kullanıcının açıp kapatabileceği bir hardware mitigation yoktur.
  • Browser sertleştirme: sıkı site isolation, cross-origin isolation (COOP/COEP), düşük-çözünürlüklü timer'lar ve SharedArrayBuffer'ı gate'lemek, exfiltration channel'ı için çıtayı yükseltir.
  • LVP'yi devre dışı bırakmak / speculation barrier'ları prensipte window'u kapatabilir ama performans maliyeti taşır ve vendor microarchitectural kontrollerine bağlıdır.
  • Etkilenen hardware, 2022+ Mac'leri ve 2021+ iPhone/iPad'leri (M3/M4, A17 nesli) kapsar; mitigation, OS/browser patch kadansını takip eder.

References