İşlemcilerdeki Meltdown ve Spectre Açıkları Hakkında Bilmeniz Gerekenler

Sponsorlu Bağlantılar

TheNightMare.

TheNightMare.

Moderator
    Konu Sahibi
İşlemcilerdeki Meltdown ve Spectre Açıkları Hakkında Bilmeniz Gerekenler

Intel, AMD ve ARM işlemcilerde ortaya çıkan Meltdown ve Spectre açıkları hakkında bilmeniz gerekenler ve bu açıklardan korunmanın yolları.
Yakın zamanda işlemcilerde tespit edilen iki adet tasarım hatası, bilgisayar veya akıllı telefonlarınızdaki verilerin saldırganlar tarafından ele geçirilmesini mümkün kılıyor.

Meltdown ve Spectre isimli bu iki açık sayesinde saldırganlar, bilgisayarınızda normal şartlarda erişim iznine sahip olmadıkları belleğe erişebiliyorlar. Bu sayede bellekte yer alan bütün bilgiler yavaş da olsa ele geçirilebiliyor. Örneğin tarayıcıya banka şifrenizi giriyorsanız bu şifre başka bir program tarafından kolayca elde edilebiliyor.

Açıklar doğrudan işlemci tasarımının bir parçası olduğundan dolayı sorunu tamamen çözmek için işlemcinizi değiştirmeniz gerekiyor. Öte yandan yazılım ve BIOS güncellemeleri açığı hafifletebiliyor.

Hangi işlemciler etkileniyor?

  • , 1995 yılından beri üretilen – 2013 öncesi Atom ve Itanium modeller hariç- neredeyse bütün Intel işlemcilerde yer alıyor. Yine ARM işlemciler de açıktan etkilenmekte. Öte yandan Meltdown açığı AMD işlemcileri etkilemiyor.
  • ise Intel, AMD ve ARM işlemcileri etkilediğinden dolayı bütün masaüstü, dizüstü, tablet ve cep telefonlarını etkiliyor.
Hangi işletim sistemleri etkileniyor?
Açığın donanımsal olması, sorunu bütün işletim sistemlerine de taşıyor: Windows, Linux, macOS, FreeBDS, Android ve iOS da dahil olmak üzere bütün işletim sistemleri bu açıktan etkilenebiliyor.

Açığın yarattığı tehlikenin boyutunu anlatmak için şöyle bir örnek kullanalım: bir web sitesine girdiniz. Bu web sitesi hacklenmiş ve site koduna zararlı bir JavaScript kodu yerleştirilmiş. Zararlı kod çalıştığında, o an bellekteki bütün verilere erişebiliyor. Örneğin yan sekmede girdiğiniz banka şifreniz de bu açık ile ele geçirilebiliyor. Ya da o an bilgisayarınızda çalışan bir başka yazılıma ait veriler de bu açık ile saldırganlar tarafından okunabiliyor.

Yine birden çok sanal makine çalıştıran bir sunucuda sanal makinelerin birini kullanan saldırgan, makinedeki diğer kullanıcıların verilerine ve hatta sunucu içerisindeki verilere erişebiliyor.

Nasıl korunulur?
İyi haber, henüz bu açığı kullanan bir zararlı tespit edilmedi. Yine de işletim sisteminize ait bütün güncelleştirmeleri yapmanız gerek.

Benzer şekilde tarayıcılarınızı da güncellemeniz gerekiyor. Chrome, 64. sürümü ile birlikte bu açığa karşı yamalanmış olacak. Firefox ise sürüm 57 ile bu açığa karşı korumalı hale geldi. Yine Nexus telefonlar başı çekmek üzere bütün Android üreticileri açık için güncelleme yayınlayacak.

Performansa Etkisi
Son kullanıcıların performans konusunda endişelenmesini gerektirecek bir durum yok. Açık çoğu oyunda performansa etki etmezken bazı oyunlarda %1 ila %4 arasında performans düşüşüne sebep olabiliyor. Asıl performans düşüşü ise sunucularda görülebiliyor. Burada yavaşlama %30’lara çıkabiliyor.

Ne zaman Keşfedildi?
Meltdown açığı ilk olarak Haziran ayında üç bağımsız kurum tarafından tespit ediliyor:

  • Google
  • Cyberus Technology
  • Graz Teknoloji Üniversitesi
Spectre açığı da iki kişi tarafından bağımsız olarak tespit ediliyor:

  • Jann Horn (Google Project Zero)
  • Paul Kocher (ABD’li kriptografi uzmanı, Cryptography Research Şirketinin başkanı)
Açıklar yamaların yapılabilmesi için halktan gizli tutuluyor ve ilk olarak geliştiricilerle paylaşılıyor. Bu bağlamda macOS Aralık ayından beri açığa karşı yamanmış.

Komplo teorisi
Intel CEO’su kısa süre önce bütün hisselerini satmıştı. CEO’nun açığı önceden bildiği iddia ediliyor. Bu esnada Meltdown açığı AMD sistemleri etkilemediğinden dolayı AMD hisseleri büyük bir zıplama gösterdi.

Windows için Meltdown Güncellemesi
Microsoft, Windows 7, 8, 8.1 ve 10 için güncellemeler yayınladı. Kaiser isimli KB4056892 kodlu Meltdown güncellemesi sonrasında:

  • Oyunlarda devasa performans düşüşü yok.
    • Yapılan testlerde bazı oyunlarda %1 ila %4 performans düşerken bazılarında hiç değişiklik yok.
  • İçerik oluşturmada da devasa performans düşüşü yok.
  • NVMe SSD’lerde performans düşebiliyor.
    • Ardışık yazmada %5 performans düşü gözleniyor.
Spectre Güncellemesi
Spectre açığı işlemci tasarımında yer alan bir hata ve aslında açığı, işlemciyi değiştirene kadar tamamen kapatmak mümkün değil. BIOS güncellemesi açığı hafifletiyor fakat tamamen kapatmıyor.

Güncelleme sonrası Intel işlemcinin Branch Prediciton özelliğinin agresifliği azaltılıyor. Bu da işlemcinin IPC performansını azaltıyor. Şimdilik sadece ASUS güncelleme yayınladı ve bu da sadece Z370 anakartlar için. Diğer üreticiler de yakın zamanda BIOS güncellemesi yayınlayacak.

Öte yandan Google ve diğer teknoloji devleri açığın etkilerini azaltmak için yeni yöntemler üzerinde çalışıyor. Fakat yapılan açıklamalar konu hakkında daha iyi fikir edinmemizi sağlıyor: “Spectre, düzeltmesi kolay bir açık değil; bizi uzun zaman boyunca uğraştıracak.”[ ]

Peki bu açıklar neden ortaya çıktı?
İşlemci üreticileri uzun zamandır saat frekansı ve çekirdek artırmaktan başka performans artırmanın yollarını arıyordu. Burada en etkili yollardan birisi işlemci içinde yer alan önbelleği artırmak oldu zira sistem belleğine erişme zaman alan bir işlem.

İkinci büyük gelişme ise aynı anda birden çok komut setini birden çalıştırmak oldu.

Üçüncü en büyük ilerleme ise spekülatif çalıştırma oldu. İşlemci, daha önce yaptığı işlemlerin bir kaydını tutuyor ve bir sonraki işlemde bu kayda bakarak aynı işlemi tekrarlıyor. Yani işlemci, daha yönerge gelmeden, kodu daha önceki örneklere göre tahmin edip çalıştırıyor. Her sabah gittiğiniz restoranda aynı kahvaltı siparişini verdikten sonra zamanla aşçının siz gelmeden siparişini vereceğiniz kahvaltıyı hazırlaması gibi.

İşlemci burada yapmaması gereken bir işlem varsa bunu geri alabiliyor. Fakat bunu yapamadığı durumlar da olabiliyor. Bunun iki sebebi var: önbellek. Önbelleğe kopyalanan her şey halen daha önbellekte duruyor. İkincisi de Branch Predition History, yani işlemcinin daha önce seçtiği yola ait kayıtlar. Bu iki kısım performans için büyük önem taşıyor ve bu yüzden işlemci burada depolanan verileri silmiyor.

Meltdown nasıl çalışıyor?
Meltdown açığı ile bir komut seti, önbellekte yer alan bu veriler üzerinden kernel içerisindeki korumalı bir alanda yer alan değerleri okuyabiliyor. İkinci komut seti ise kernel belleğinden okunan bu bir bit’i kullanarak A adresinin mi yoksa B adresinin mi okunacağına karar veriyor.

Bu noktada ilk komut setinin durması gerekiyor zira bir kullanıcı işlemi, korumalı işletim sistemi çekirdeğine ait belleğe erişmeye çalışıyor. Fakat tam da bu noktada, kullanıcının bu belleğe erişip erişemeyeceğine karar verilen kontrol aşamasında, Branch Prediction kullanılıyor. Yani işlemci burada bir karar verip hangi daldan (Branch) gideceğine karar vermeli: ya bu adrese erişilebilir kararı ya da bu kural dışı (exception).

Neredeyse bütün adres erişim taleplerinde bir sorun olmadığından hemen hemen kesinlikle komut çalıştırılacak ve bir sonraki komuta geçilecektir. Bu durumda ikinci komutun da kernel belleği içerisinde işlem yapması ve kapatılmadan önce bellekte hedeflediği kısımdan veri yüklemesi mümkün olmaktadır.

Bir sonraki aşamada çekirdeğe erişmeye çalışan bu işleme kural dışı işlem komutu gönderilir ve işlem sonlandırılır. Fakat bu işlem bir defa veriyi işlemci içinde yer alan önbelleğe almıştır ve artık buraya çok daha hızlı erişebilecektir. Bu aşamada zararlı kod, iki farklı konum üzerinde yükleme hızı testi (timing) yapar ve hangi bit’in kernel’da olduğunu tespit eder. Sonrasında önbelleği boşaltır ve bir sonraki bellek bit’i için işlemi tekrarlar. Sonuç olarak tamamen buna adanmış bir işlem, bit bit bütün belleği okuyabilir.

Standart bir kullanıcının bu veriye erişebilmesindeki sebep ise çekirdek belleğinin kullanıcıya ait işlemlerin belleğine haritalanmasıdır. Böylece çekirdeğe herhangi bir sistem çağrısı yapıldığında, kernel gerekli bütün veriyi sağlayabilecektir. Tabii ki bu veri halen koruma altındadır ve normal şartlarda bir kullanıcı işlemi, izni olmayan bir kernel verisine erişmeye çalıştığında kural dışılık (Exception) hatası alır.

Birçok durumda bunun çözümü kernel belleğini artık kullanıcını alanına eşlememektir. Bir sistem çağrısı yapıldığında bellek eşleşmesini değiştirecek, sonra sistem çağrısını gerçekleştirecek ve sonrasında bellek eşleşmesini temizleyecektir. Fakat bu işlem çok fazla ek yük bindirecektir ve bu yüzden çekirdeğe erişmeye çalışmak %30 gibi bir oranda performans düşüşüne sebep olabilir.

Spectre açığı
Bu açık da Branch Prediciton üzerinden çalışıyor. Kernel hafızasını okumak yerine bellekteki tampon kısmın dışına erişmeye çalışıyor. Burada işlem eğer bir sanal makine tarafından yönetiliyorsa, örneğin tarayıcı içerisindeki bir JavaScrpit motoru, açığı kullanarak tarayıcı içerisinde rastgele bir bellek okunabiliyor. Saldırgan bu sayede çerezler ve erişim bilgilerine erişebiliyor.

Açığın bir başka kullanım şekli ise Branch Prediciton kodu kullanan bir işlem olduğunu biliyorsanız -ki hepsi kullanıyor- Branch Predition önbelleğini zehirleyip, önbellek gecikmesini kötüye kullanabilir ve böylece verileri okumaya zorlayabilirsiniz. Önbellek zamanlaması burada side-channel saldırı için kullanılabiliyor. Burada işlemci tasarımcısı kasten veri sızdırmayı amaçlamıyor fakat saldırgan, bu işlemin bir şekilde veriyi açığa çıkardığını tespit ediyor. Yani veri burada istemsiz bir şekilde sızdırılmış oluyor.

Açıkların Kodları
  • İlk varyant: Spectre (CVE-2017-5753)
    • AMD, Intel ve ARM işlemciler etkileniyor
    • İşletim sistemi güncellemesi ile hafifletilebiliyor
    • Güncelleme sonrasında performansta fark edilir bir değişiklik olmuyor.
  • İkinci Varyant: Spectre (CVE-2017-5715)
  • Üçüncü Varyant: Meltdown (CVE-2017-5754)
    • Intel ve ARM işlemcilerde var
    • Yazılım güncellemesi ile çözülebildi
Açıktan etkileniyor muyum?
Windows ortamında açıktan etkilenip etkilenmediğinizi hazırlanan bir script ile öğrenebilirsiniz.
  • Öncelikle buradaki Sciprt’i indirin:
  • ZIP dosyasını klasöre çıkartın ve klasörü de tercihen C:\ sürücüsüne kopyalayın. Klasör konumu şu şekilde olsun: C:\SpeculationControl
  • Şimdi başlat menüsüne sağ tıklayın ve PowerShell’i açın.
  • Burada şu komutları girin:
    • cd C:\SpeculationControl
    • Set-ExecutionPolicy RemoteSigned -Scope Currentuser
  • Çıkan soruyu “A” ve Enter’a basarak onaylayın.
  • Şimdi şu iki komutu girin:
    • Import-Module .\SpeculationControl.psd1
    • Get-SpeculationControlSettings
Burada “Hardware requires kernel VA shadowing: False” yazıyorsa açıktan etkileniyorsunuz demektir. Bu durumda anakart/sistem üreticinizin BIOS/Firmware güncellemesini yapmanız gerekiyor demektir. Script zaten sizi bu konuda uyaracaktır:
 
  • Beğen
Tepkiler: MAERKEK, BordoForces, PALA. ve 1 kişi daha


Üst Alt