Spectre, ilk olarak 2017 yılında keşfedilen ve modern işlemcilerin performansı artırmak için kullandığı spekülatif yürütme (speculative execution) tekniğini istismar eden bir güvenlik açığı sınıfı olarak biliniyor. Bu teknikte işlemci, talimatları önceden tahmin ederek çalıştırıyor. Saldırganlar bu durumu istismar ederek işlemciyi hassas verilere erişen spekülatif işlemler yapmaya yönlendirebiliyor ve ardından önbellek zamanlama yan kanalı üzerinden bu verileri çıkarabiliyor. Spectre v2 ise bu sınıfın dolaylı dal tahminini (indirect branch prediction) kötüye kullanan özel bir türü olarak öne çıkıyor.
BTR Nasıl Çalışıyor: Eski Dal Hedeflerinin Yeniden Kullanımı
Araştırmacılar Sander Wiebing, Yuhui Zhu, Alessandro Biondi ve Cristiano Giuffrida tarafından yayımlanan makaleye göre BTR'nin temelinde önemli bir bulgu yer alıyor. Modern CPU'lar, kendi kendini değiştiren kod (self-modifying code) sonrası mimari kod tutarlılığını geri yüklese de, eski dolaylı dal tahmin girdilerini yani dal hedeflerini mutlaka geçersiz kılmıyor. Araştırmacılar bu durumu, "Modern CPU'lar kendi kendini değiştirme sonrası mimari kod tutarlılığını geri yüklerken, eski dolaylı dal tahmin girdilerini mutlaka geçersiz kılmaz" sözleriyle özetledi.JIT motorlarında bu eski hedefler orijinal koddan daha uzun süre yaşayabiliyor ve kod önbelleği yeniden doldurulduğunda tekrar kullanılabiliyor. Bu da geçici bir execute-after-free ilkeliği yaratıyor. Saldırgan bu sayede geçici kontrol akışını, artık geçersiz olan ofsetlerdeki yeni oluşturulmuş koda yönlendirebiliyor, yazılım tabanlı güçlendirmeleri atlatabiliyor veya hizalanmamış gadget'lara ulaşabiliyor. Araştırmacılar, "JIT motorları ilk kez SMC'nin neden olduğu istismar edilebilir geçici yürütme fırsatlarını ortaya çıkarıyor" değerlendirmesini yaptı.
Saldırı, JIT motoru içinde ayrıcalıksız kod çalıştırabilen ve ana ortamdan hassas verileri sızdırmayı amaçlayan bir saldırgan modelini varsayıyor. Saldırı zinciri üç ana adımda ilerliyor. İlk olarak saldırgan, JIT motorunu bir eğitim bloğu (training chunk) ayırmaya yönlendiriyor ve kurban dalın bu bloğa atlamasını sağlayarak mevcut giriş noktasına referans veren bir Dal Hedef Tamponu (BTB) girdisi oluşturuyor. İkinci adımda saldırgan, eğitim bloğunun serbest bırakılmasını ve aynı adresi kısmen yeniden kullanan bir hedef bloğun ayrılmasını tetikliyor. Son adımda ise dolaylı dal yeniden tetiklendiğinde CPU, artık bayat olan BTB girdisini kullanıyor ve spekülatif olarak eski eğitim bloğu giriş noktasına atlıyor. Bu durum kontrol akışının ele geçirilmesi ve gizli verilerin ifşa edilmesiyle sonuçlanıyor.
Hangi JIT Motorları Etkilendi: Linux Çekirdeği ve Tarayıcılar
BTR, SpiderMonkey (Mozilla Firefox'un JIT motoru), GraalVM ve Linux çekirdeğinin cBPF JIT'i üzerinde değerlendirildi. Üç motorun da etkilendiği doğrulandı, ancak araştırmacılar "belirgin şekilde farklı istismar edilebilirlik özellikleri ve sızıntı oranları" bulunduğunu belirtti. Özellikle Linux çekirdeğine yönelik iki uçtan uca istismar geliştirildi ve bu istismarların yamalı sistemlerde root parola karmasını sızdırabildiği gösterildi.Spectre v2'nin genel çalışma mantığında olduğu gibi BTR de CPU'nun dal tahmin mekanizmasını zehirlemeyi hedefliyor. Saldırgan, kurban programın dolaylı bir dalı yürütmesine neden oluyor, bu da CPU'nun dalı yanlış tahmin etmesine ve saldırgan kontrollü kodu veya bir gadget'ı spekülatif olarak yürütmesine yol açıyor. Yanlış tahminin sonuçları daha sonra atılsa da, saldırgan önbellek durumu değişikliklerinden yararlanarak ve bu değişiklikleri ölçerek kurbanın spekülatif yürütme sırasında neye eriştiğini çıkarabiliyor. BTR'de fark, bu yönlendirmenin mimari olarak geçersiz bir giriş noktasına yapılması. Araştırmacılar, "Kontrol akışını mimari olarak geçersiz bir giriş noktasına yönlendirerek saldırgan, Spectre güçlendirme mitigasyonlarını atlatabilir veya hizalanmamış talimatları yürüterek nihayetinde gizli verileri ifşa edebilir" ifadesini kullandı.
BTR'nin başarılı olması için iki kritik koşulun sağlanması gerekiyor. Birincisi, JIT motoru eğitim bloğunu serbest bıraktıktan sonra bayat BTB girdisinin geçersiz kılınmaması veya değiştirilmemesi. İkincisi ise dal tahmincisinin tahmin için bu bayat BTB girdisini seçmesi.
Yayınlanan Yamalar ve Geliştiricilerin Aldığı Önlemler
Sorumlu açıklama sürecinin ardından BTR için mitigasyonlar geliştirildi ve Linux çekirdeğine birleştirildi. Bu düzeltmeler CVE-2026-64507 ve CVE-2026-64508 numaralarıyla takip ediliyor. Farklı JIT ekosistemleri ise farklı savunma yaklaşımları benimsedi.GraalVM, JIT kod önbelleği konumlarını rastgeleleştirerek bölge yeniden kullanımını engellemeyi tercih etti. Mozilla tarafında ise Indirect Branch Predictor Barrier (IBPB) tabanlı mitigasyonlar değerlendirildi, ancak şirketin şu anda site izolasyonunun tamamlanmasına ve dağıtımına öncelik verdiği bildirildi. Bu durum, farklı platformların aynı temel soruna karşı farklı öncelik ve tekniklerle yanıt verdiğini gösteriyor.

Yazılım ve Uygulamalar
Yazılım ve Uygulamalar
Yazılım ve Uygulamalar
Yorumlar (0)
Yorum yapmak için giriş yapmalısınız.