Spectre (güvenlik açığı)
Ayrıntılı açıklama

Spectre, bir programı programın bellek alanındaki rastgele konumlara erişmeye zorlayan bir güvenlik açığıdır. Bir saldırgan, erişilen belleğin içeriğini okuyabilir ve bu sayede potansiyel olarak önemli veriler alabilir.
Spectre teknik incelemesinde düzeltilmesi kolay sadece bir güvenlik açığı yerine bir dizi olası güvenlik açıkları anlatılmaktadır. Bunların hepsi; spekülatif yürütmenin yan etkilerini, bellek gecikmelerini gizlemenin yaygın bir yolunu ve modern mikroişlemcilerde yürütmeyi hızlandırmayı temel alır. Spectre bilhassa spekülatif yürütmenin özel bir durumu olan dallanma öngörüsü üzerine odaklanmaktadır. Aynı zamanda açıklanan ilgili Meltdown açığının aksine Spectre; tek bir işlemcinin bellek yönetimi ve koruma sisteminin belirli bir özelliğine dayanmaz, daha genelleştirilmiş bir fikirdir.
Beyaz kağıdın başlangıç noktası, sırasız yürütme yapan modern mikroişlemcilerden oluşan dallanma öngörüsü makinelerine uygulanan bir yan kanal zamanlama saldırısıdır. İşlemci veri defterlerinde belgelenen mimari düzeyde, yanlış tahmin sonuçlarının gerçeğin ardından iptal edilmesinden sonra bile, ortaya çıkan spekülatif yürütme, yüklenen önbellek çizgileri gibi, yan etkileri hala kalmış olabilmektedir. Bunlar daha sonra bilgi işlem ortamının sözde işlevsel olmayan yönlerini etkileyebilir. Bu tür yan etkiler (bellek erişim zamanlaması dahil, ancak bunlarla sınırlı olmamak üzere) kötü amaçlı bir program tarafından görülebilir ve kurbanın işlemi tarafından tutulan hassas verilere dayanacak şekilde tasarlanabilirse, bu yan etkiler, hassas verilerin fark edilebilir hale gelmesine neden olabilir. Bu, tasarlandığı gibi çalışan mimarlık düzeyinde güvenlik düzenlemelerine rağmen gerçekleşebilir; Bu durumda, kod yürütmesi için daha alt, mikromimari seviyesinde yapılan optimizasyonların, normal program yürütme doğruluğu için gerekli olmayan bilgiler sızdırabilmektedir..
Spectre makalesi saldırıyı dört temel adımda açıklar:
İlk olarak modern işlemcilerdeki dallanma öngörüsü mantığının, kötü amaçlı bir programın iç işleyişine dayanarak güvenilir bir şekilde vuracak ya da kaçırabilecek şekilde eğitilebileceğini göstermektedir.
Daha sonra önbellek isabetleri ile kaçırmaları arasındaki sonraki farkın güvenilir bir şekilde zamanlanabileceğini göstermek için devam eder, böylece basit bir işlevsel olmayan farkın olması, aslında ilgisiz bir sürecin iç çalışmalarından gelen bilgileri ayıklayan gizli bir kanala dönüştürülebilir.
Üçüncüsü, sonuçlar, basit bir örnek program ve bir sanal alan tarayıcısı altında çalıştırılan bir JavaScript pasajı ile geri dönüş yönelimli programlama istismarları ve diğer ilkeler ile sonuçları sentezler; her iki durumda da, mağdur sürecinin tüm adres alanı (yani, çalışan bir programın içeriği), bir stok derleyicisinin veya mevcut bir tarayıcıda mevcut olan JavaScript makinesinin oluşturduğu koddaki koşullu dalların spekülatif yürütmesini basitçe kullanarak okunabilir olarak gösterilmektedir. Temel fikir, spekülasyonun erişilemeyen veriler üzerine dokunduğu yerler için mevcut kodu aramak, işlemciyi spekülatif yürütmenin bu verilere temas etmesi gereken bir duruma geçirmesi ve daha sonra işlemcinin yan etkisinden faydalanarak, daha hızlı olması için kullanılan önbelleğe alma makinelerini gerçekten bir önbellek hattı yükleyecek şekilde zamanlamaktır.
Son olarak makale, saldırıyı mağdur sürecinin işlevsel olmayan herhangi bir durumuna genelleştirerek sona ermektedir. Bu durum, veriyolu tahkim gecikmesi gibi belirgin olmayan işlevsel olmayan etkileri bile kısaca tartışır.
Spectre ve Meltdown arasındaki temel fark, Spectre'nin bir işlemi kendi verilerini açığa çıkarmak için kullanmasıdır. Öte yandan, Meltdown, sürecin normalde erişemediği bir süreç adres alanında ayrıcalıklı belleği okumak için kullanılabilir (bazı korumasız işletim sistemlerinde bu, çekirdeğe veya diğer işlemlere ait verileri içerir).
Meltdown makalesi, bu iki zafiyeti şu şekilde ayırmaktadır: “Meltdown, Spectre saldırılarından, özellikle Spectre'nin kurban sürecinin yazılım ortamına göre uyarlanmasını gerektirdiği, ancak daha geniş bir şekilde CPU'lara uygulanmasını gerektirdiği ve KAISER tarafından hafifletilmediği gibi birçok açıdan farklıdır.”