Spektroloji: 2019 CPU donanım güvenlik açıkları

Ocak 14, 2019

Meltdown ve Spectre olarak adlandırılan CPU donanım güvenlik açıkları ile ilgili ilk yayının ardından neredeyse bir yıl sonra, 35. Chaos Communications Congress‘de Graz Teknoloji Üniversitesi’nden (Avusturya) bir grup araştırmacı CPU donanım güvenlik açıkları olarak bilinen vakaların mevcut durumu hakkında bilgi verdi. Spoiler: Geçen yıl, bu tehditlerin bir çoğuna ışık tutan bir yıl oldu.

Meltdown ve Spectre’nin özeti

İlk olarak, Meltdown ve Spectre’nin ne olduğunu ve birbirlerinden ayrıldıkları noktaları hatırlayalım.

Meltdown güvenlik açığı, modern CPU’ların emirleri sıra gözetmeden uygulayabilmesi nedeniyle ortaya çıktı. Bu, işlem hızını artıran çok kullanışlı bir özellik olmasına rağmen bazı durumlarda CPU, çalıştırılmaması gereken hataya açık bir kodu işleyebilir. Yani, önce kod CPU tarafından yürütülür ve sonra işlemin tamamlanamayacağı anlaşılır. Bu gibi sorunların ortaya çıkmasının tek nedeni talimatların, sıra gözetmeden yürütülmesidir.

Elbette, bu tür işlemlerin sonuçları hiçbir yere aktarılmaz veya hiçbir yerde kullanılmaz ancak CPU önbelleğinde mikro mimari düzeyinde izler bırakır. Bu izler, daha sonra önbellekten ayıklanabilir. Bunun sonucunda önbellek, başka türlü erişilemeyen verileri, mesela bir parolayı elde etmek için kullanılabilir. Olay, şu şekilde gerçekleşir: Bir program kayıtlı verilere erişim talebinde bulunur, sistem, makul bir şekilde programın erişim yetkisi olmadığı için erişim izni vermez. Ancak işlemlerin düzensiz bir şekilde yürütülmesi nedeniyle, parola yine de önbelleğe alınır ve oradan kolaylıkla elde edilebilir. Kısacası, Meltdown yetkisiz bir işlem yürütmeye çalışılırken ortaya çıkar.

Spectre güvenlik açığı da Meltdown’a benzer. Bu güvenlik açığı da CPU işlemlerini hızlandırmakla ilgili olmasına rağmen bu sorunun asıl kaynağı modern CPU’ların dallanma öngörüsü özelliğidir. Temelde CPU, belirli bir doğrulukla B eyleminin A eylemini takip ettiğini tahmin eder. Bu nedenle A eyleminin sonuçları netleşmeden B eylemini yürütebilir. Tahmin doğruysa ve A eyleminin ardından B eylemi gerçekleşirse her şey yolundadır. Eğer A eyleminin sonuçları B eylemini değil, C eyleminin tamamlaması gerektiğini belirtirse, CPU B dalını bırakır ve C eylemini tamamlamak için başka bir dala geçer.

Dallanma öngörüsü özelliği, eğitilebilir olduğu için çoğunlukla eylem sıralama modellerini hatırlar. Böylece CPU performansını gerçekten artırır. Örneğin birkaç kez A eyleminin ardından B eylemi gelirse CPU, mantıksal olarak bir sonraki işlemde A’dan sonra B eylemini yapması gerektiğini varsayar. Ancak yine de yanlış öngörüler olabilir. Dallanma öngörü özelliği, normalde A’nın ardından B eyleminin geldiğini çok iyi hatırlasa bile bazen B’nin yerine C eylemi gelebilir.

Uzun bir süre boyunca sisteme, belirli bir dalın doğru olduğunu ve işlemin her zaman bu şekilde yürütüldüğünü gösterip eğittikten sonra bir parametreyi değiştirerek söz konusu dalın yanlış olmasına neden olursanız CPU, önce ilk dalı yürütecek ve aslında diğer dalın yürütülmesi gerektiğini anlayınca da ilkini iptal edecektir. Ancak Meltdown’da olduğu gibi, eylemin sonucu, tekrar ayıklanabileceği bir yerde, mesela önbellekte, kalabilir.

Her iki güvenlik açığının da sonucu hemen hemen aynıdır: Spectre, verilere yetkisiz erişim için bir kapı açar. Bu erişim, yalnızca dallanma öngörüsünde bir sorun çıkması halinde gerçekleşir. Ancak olasılık teorisine göre düşündüğümüzde bu ihtimalin gerçekleşeceğini anlayabiliriz.

Bir yıl sonra: çok sayıda yeni Spectre ve Meltdown çeşidi

İlk Meltdown ve Spectre güvenlik açıklarının keşfedilmesinden sonra, araştırmacılar konuyu daha yakından incelemeye başladılar ve kısa süre sonra sadece küçük farklılıklar gösteren benzer sorunlar olduğunu keşfettiler. Araştırmacıların bulgularına göre CPU Geliştiricileri, Meltdown ve Spectre benzeri güvenlik açıklarına yol açan başka optimizasyon özellikleri de uyguluyor. Graz Üniversitesi ekibi, Meltdown’a benzeyen 14 güvenlik açığı ve Spectre’a benzeyen 13 güvenlik açığı tespit ederek toplamda 27 donanım güvenlik açığı buldu. 2018 yılının başlarında bu ailelere ait yalnızca iki güvenlik açığı bulunuyordu.

Bu yıl tespit edilen Meltdown ve Spectre çeşitlerinin sınıflandırılması

Daha önce AMD, CPU’larının Meltdown sınıfındaki güvenlik açıkları karşısında risk altında olmadığını iddia etmişti. Ancak araştırmacılar, Meltdown’un Meltdown-BR adlı bir çeşidinin AMD CPU’larında etkili bir şekilde kullanılabildiğini keşfetti. Dolayısıyla şu anda, en büyük üç global CPU satıcısının (AMD, ARM ve Intel) CPU’ları hem Meltdown hem de Spectre açıkları karşısında risk altındadır. Bu CPU’lar, her iki güvenlik açığı ailesinin bazı çeşitlerine karşı savunmasızdır.

Neyse ki bu güvenlik açığı çeşitlerinin büyük bir kısmı, üç satıcının da (ARM, AMD ve Intel) CPU’larında çalışmaz. En azından yapılan testlerde, bu güvenlik açıkları söz konusu CPU’larda çalıştırılamadı. Ancak bu güvenlik açıklarının çoğu, en azından bir CPU’da kullanılabiliyor.

Şirketler, bu güvenlik açıklarını kapatmak için CPU mikro kodları, işletim sistemleri ve belirli programlar için Ocak 2018’den itibaren düzeltme ekleri yayınlamaya başladılar. Maalesef Spectre ve Meltdown donanım güvenlik açıkları olduğu için donanım düzeyinde bulunurlar. Bu nedenle yazılım düzeltme ekleriyle tamamen ortadan kaldırılmaları mümkün değildir.

Mesela Linux İşletim Sistemi çekirdeğine uygulanan düzeltme eklerinden biri, sistemi çok yavaşlattığı için bir süre sonra kaldırıldı.

Spectre güvenlik açığınyla ilgili başka sorunlar da var. Bu güvenlik açığı, farklı mikro mimari bileşenlerini hedef aldığı için her bileşene uygun ayrı bir düzeltme ekinin tasarlanması gerekiyor. Ayrıca bu düzeltme eklerinin her biri için belirli işlevlerin devre dışı bırakılması veya belirli ek eylemlerin gerçekleştirilmesi gerekli. Bu durum, performansı daha da düşürüyor.

Hatta düzeltme ekleri, birçok durumda performansı o kadar çok etkiliyor ki düzeltme eki uygulanan bir sistem, güvenlik açığı bulunan CPU bileşenlerinin tamamen kapatıldığı bir sisteme göre daha yavaş çalışıyor.

Radikal bir çözüm: Belirtilen noktaları delerek CPU’nun güvenlik açığı olan kısımlarını çıkarın (Tabii ki şaka yapıyoruz)

Spectre ve Meltdown’un Geleceği

Intel, 2018 yılının Ekim ayında yeni CPU’larının (2019’da çıkacak olan nesil) donanım düzeyinde Spectre ve Meltdown korumasına sahip olacağını açıkladı. Ancak bu açıklama, yukarıda da ele aldığımız birçok güvenlik açığı çeşidinin yalnızca iki “temel” türünü kapsıyordu. Aynı şekilde AMD de 2019 yılında piyasaya sürülecek olan yeni nesil Zen 2 mimarili işlemcilerinde Spectre’ın bir çeşidine karşı düzeltme eki uygulamayı planlıyor. ARM de donanım güncellemeleri uygulayacaklarını taahhüt ediyor ve “gelecekteki tüm işlemcilerinin Spectre tarzı saldırılara karşı dayanıklı olacağını” iddia ediyor.

Tabii ki, bu harika haberler, gelecekte yeni cihaz alacaklar için geçerli. 2018 yılı ve öncesinde Intel, AMD ya da ARM CPU kullanan bir bilgisayar, akıllı telefon ya da başka bir cihaz satın alanların, neredeyse tüm bileşenler için düzeltme eki yüklemeleri gerekecek ve bu nedenle performans büyük ölçüde azalacak. Muhtemelen bazı insanlar buna vakit bile ayırmayacak.

CPU üreticileri, donanım düzeyindeki güvenlik açıklarını uzun zaman görmezden geldi ve CPU’larını yalnızca performans açısından optimize etti. Ancak tüm bu optimizasyonların bir bedeli oldu: Bazı özellikler gerçekten iyileştirilirken diğerlerindeki sorunlar arttı. Şimdi, uzun bir süre görmezden gelinmiş olan bu güvenlik açıklarından kurtulmak çok zor olacak. Yine de bu güvenlik açıklarından yararlanmanın o kadar da kolay olmadığını ve bunun umut verici olduğu ifade etmeliyiz. En azından yeni nesil CPU’lar çıkana kadar…