Spectre (Güvenlik Açığı)

Tarihçe

2002 ve 2003 yıllarında Yukiyasu Tsunoo ve NEC'den meslektaşları sırasıyla MISTY ve DES'e nasıl saldırılacağını gösterdi. 
2005'te Illinois Üniversitesi'nden Daniel Bernstein, bir önbellek zamanlama saldırısı yoluyla OpenSSL AES anahtarının elde edilebileceğini bildirdi ve Colin Percival, Intel işlemcinin önbelleğini kullanarak OpenSSL RSA anahtarında çalışan bir saldırıyı elde etmiş oldu. 2013 yılında Adelaide Üniversitesi'nden Yuval Yarom ve Katrina Falkner, verilere erişim süresinin ölçülmesinin, bilginin önbellekten okunup okunmadığı konusunda casusluk uygulamasının nasıl tahmin edileceğini gösterdi. Önbellekten okunduğunda erişim süresi çok kısa olmaktaydı ve okunan veriler şifreleme algoritmalarının özel anahtarını içerebilmekteydi. Bu teknik GnuPG, AES ve diğer kriptografik uygulamalara başarılı bir şekilde saldırmak için kullanıldı.
 Ocak 2017'de, Anders Fogh, Ruhruniversität Bochum'da gizli kanalları, özellikle birden fazla işlemci çekirdeği tarafından kullanılan bir boru hattına sahip işlemciler hakkında otomatik olarak bulma konusunda bir sunum yaptı.
Spectre, Google'ın Project Zero'dan Jann Horn ve Paul Kocher tarafından, Daniel Genkin, Mike Hamburg, Moritz Lipp, Yuval Yarom ile işbirliği ile bağımsız olarak keşfedildi. 
Microsoft Güvenlik Açığı Araştırması, tarayıcıların JavaScript JIT motorlarına genişletti. 3 Ocak 2018'de, etkilenen donanım tedarikçilerinin konunun 1 Haziran 2017'de farkına varmasından sonra başka bir zayıflık olan Meltdown ile birlikte kamuoyuna açıklandı. Bu Güvenlik açığı "kök nedenine, spekülatif uygulamaya dayanıyor.
Düzeltilmesi kolay olmadığından, oldukça uzun bir süre bizi rahatsız edecektir. " diye açıklandığı için "Spectre" olarak adlandırıldı. 
28 Ocak 2018'de, Intel'in, ABD'ye kusurları hakkında haber vermeden önce, Çin'in teknoloji şirketlerine Erime ve Spectre güvenlik açıkları hakkındaki haberleri paylaştığı bildirildi.
29 Ocak 2018'de Microsoft'un, daha önce Intel'in Varyant 2 saldırısı için Intel tarafından yayınlanan sorunlu mikrokod düzeltmesini (olası yeniden başlatmalara, kararlılığa ve veri kaybına / bozulma sorunlarına neden olan) devre dışı bırakan bir Windows güncellemesi yayınladığı bildirildi. Yeni Microsoft yamasının yüklenmesiyle ilgili endişeler yaşandığı bildirildi.

Uzaktan Çalıştırma

Spectre, C veya C ++ gibi derlenmiş bir dil ile yerel olarak makine kodunun çalıştırılmasıyla açığın istismar edilmesinin daha kolay olmasına rağmen, uzak web sayfalarında barındırılan kod tarafından uzaktan da kullanılabilir. Örneğin, JavaScript gibi web tarayıcısı kullanılarak yerel olarak çalışan yorumlanmış diller. Kodlanmış kötü amaçlı yazılım, çalışan tarayıcının adres alanına eşlenen tüm belleğe erişebilir. 
Uzaktan erişimde JavaScript kullanan istismar, yerel makine kodu istismarınınkine benzer bir akış izler: Floş Önbellek → Mistrain Branch Predictor → Zamanlanmış Okumalar (isabet etti / etmedi takibi).
JavaScript'te "clflush" komutunu (önbellek satırı floş) kullanmak için uygunluğun olmaması, alternatif bir yaklaşım gerektirmektedir. İşlemcinin seçebileceği birkaç otomatik önbellek tahliye politikası vardır ve bu istismarın çalışması için tahliyenin zorlanabilmesine güvenmekteyiz. İlk dizinin arkasında birkaç iterasyon tutulan büyük dizide ikinci bir endeks kullanılmasının, en az kullanılan (LRU) politikanın kullanılmasına neden olacağı bulunmuştur. Bu, istismarın, büyük bir veri kümesinde artan sayıda okuma yaparak önbelleği etkin bir şekilde temizlemesine olanak tanır.
Daha sonra dallanma öngörücüsü, endeksi aralıklı değerlere ayarlamak için bitsel işlemleri kullanarak çok büyük bir veri kümesi üzerinde yinelemek ve ardından son yinelemede sınır dışı adresi kullanmak suretiyle yeniden denetlenir.
Bir okuma kümesinin bir önbellek isabeti veya önbellek kaçırmasına neden olup olmadığını belirlemek için yüksek hassasiyetli bir zamanlayıcı gerekir.
Chrome, Firefox ve Tor  (Firefox'a dayalı) gibi tarayıcılar, zamanlayıcıların çözümüne (Spectre istismarında istenen önbellek vurulma / kaçırma olup olmadığını belirlemek için), kısıtlamalar koydu. Beyaz kağıdın yazılması sırasında, Spectre yazarı, HTML5'in web çalışanı özelliğini kullanarak yüksek hassasiyetli bir zamanlayıcı oluşturabildi.
Tam zamanında derleme (JIT) derleyicisi tarafından yürütülen makine kodunun dikkatli kodlaması ve analizi, önbellek temizlemenin ve istismarcı okumaların optimize edilmediğinden emin olmak için gerekliydi.

Etkisi

2018 itibarıyla, hemen hemen her bilgisayar sistemi, masaüstü bilgisayarlar, dizüstü bilgisayarlar ve mobil cihazlar dahil olmak üzere, Spectre'den etkilenmektedir. Spesifik olarak, Spectre'nin Intel, AMD, ARM tabanlı ve IBM işlemciler üzerinde çalıştığı görülmüştür. 
Intel, bildirilen güvenlik açıklarına resmi bir açıklama ile yanıt verdi. AMD, Spectre-V1'e karşı savunmasızlığını kabul etti, ancak AMD mimarisindeki farklılıklardan dolayı “sıfıra yakın istismar barındırma riski ” iddiasıyla, AMD işlemcileri üzerinde Spectre-V2'ye yönelik güvenlik açıklığının henüz bulunmadığını belirtti.
Araştırmacılar, Spectre savunmasızlığının bazı Intel, AMD ve ARM işlemcileri etkileyebileceğini belirttiler. Özellikle, spekülatif yürütme yapan işlemciler bu güvenlik açıklarından etkilenmektedir.
ARM, işlemcilerinin çoğunun savunmasız olmadığını ve Spectre açığından etkilenen belirli işlemcilerin bir listesini yayınladı: Cortex-R7, Cortex-R8, Cortex-A8, Cortex-A9, Cortex-A15, Cortex -A17, Cortex-A57, Cortex-A72, Cortex-A73 ve ARM Cortex-A75 çekirdekleri.
Spectre, bulut sağlayıcılar üzerinde Meltdown'dan daha büyük bir etki yapma potansiyeline sahiptir. Meltdown, yetkisiz uygulamaların, aynı bulut sunucusunda çalışan işlemlerden hassas veriler elde etmek için ayrıcalıklı bellekten okumalarına izin verirken, Spectre, kötü amaçlı programların, verileri, üstte çalışan bir konuk sisteme iletmek üzere bir hiper denetimcinin manipüle edilerek çalıştırılmasına izin verebilmektedir.

Özel yazılım

Ev bilgisayarlarının ve ilgili cihazların bu güvenlik açığından korunmasına yardımcı olacak birkaç prosedür yayınlandı.
İlk hafifletme çabaları, tamamen kazasız değildi. İlk başta, özellikle eski bilgisayarlarda, Spectre yamalarının, performansı önemli ölçüde yavaşlattığı bildirildi. Daha yeni olan sekizinci nesil Core platformlarında % 2-14 oranındaki benchmark performans düşüşleri ölçüldü. 18 Ocak 2018'de, daha yeni Intel çiplerinde bile istenmeyen yeniden başlatmalar bildirildi.
Web sitelerine yerleştirilmiş JavaScript kodları aracılığıyla Spectre'ın kullanılması mümkün olduğundan, Chrome 64, saldırıya karşı varsayılan olarak hafifletme önlemleri içerecektir. Chrome 63 kullanıcıları, Site Yalıtım özelliğini etkinleştirerek saldırıyı manuel olarak azaltabilir(chrome://flags#enable-site-işlem başına).
Firefox 57.0.4'ten itibaren, Mozilla zamanlama saldırılarının engellenmesine yardımcı olmak için JavaScript zamanlayıcılarının çözünürlüğünü azaltmakta ve gelecekteki sürümler için planlanan zamana hitap eden teknikler üzerinde ek çalışmalar gerçekleştirmektedir.

Genel yaklaşımlar ve tartışmalar

Google, 4 Ocak 2018'de güvenlik blogunda "Retpoline" (dönüş trambolini)  adı verilen ve ihmal edilebilir miktarda işlemci yükü ile birlikte Spectre açığının üstesinden gelebilecek yeni bir teknik açıkladı. Derleyici seviyesinde doğrudan olmayan dallanmaların, istismara yol açmayacak spekülatif sırasız yürütmenin gerçekleştirildiği başka bir hedefe yönlendirilmesi ile yapılmaktadır. X86 komut seti için geliştirilmiş olsa da, Google mühendisleri tekniğin diğer işlemcilere de aktarılabileceğini düşünmekteler.
25 Ocak 2018'de, Erime ve Spectre açıklarını çözmek için mevcut durum ve gelecekte dikkate alınacak hususlar sunuldu.
Intel, Spectre hafifletme işleminin bir hata olmak yerine "güvenlik özelliği" olarak kullanılabileceğini duyurduğunda, Linux yaratıcısı Linus Torvalds yamaları "kesin ve tamamen çöp" olarak adlandırdı.Ingo Molnar, daha sonra, İndirekt Dal Sınırlı Spekülasyon (IBRS) mikrokod desteği olmadan Spectre'ı düzeltmek için Linux çekirdeğinde işlev izleme makinelerinin kullanılmasını önerdi. Bu, sonuç olarak, sadece Intel Skylake ve daha yeni mimariye dayanan işlemciler üzerinde bir performans etkisine sahip olacaktı.