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?

 

  • Meltdown açığı, 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.
  • Spectre 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: https://gallery.technet.microsoft.com/scriptcenter/Speculation-Control-e36f0050
  • 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:

 

  • Speculation control settings for CVE-2017-5715 [branch target injection]
  • Hardware support for branch target injection mitigation is present: False
  • Windows OS support for branch target injection mitigation is present: True
  • Windows OS support for branch target injection mitigation is enabled: False
  • Windows OS support for branch target injection mitigation is disabled by system policy: False
  • Windows OS support for branch target injection mitigation is disabled by absence of hardware support: True

 

Speculation control settings for CVE-2017-5754 [rogue data cache load]

 

  • Hardware requires kernel VA shadowing: False

 

Suggested actions

 

* Install BIOS/firmware Güncellemesi provided by your device OEM that enables hardware support for the branch target injection mitigation.

 

  • BTIHardwarePresent             : False
  • BTIWindowsSupportPresent       : True
  • BTIWindowsSupportEnabled       : False
  • BTIDisabledBySystemPolicy      : False
  • BTIDisabledByNoHardwareSupport : True
  • KVAShadowRequired              : False
  • KVAShadowWindowsSupportPresent : True
  • KVAShadowWindowsSupportEnabled : False
  • KVAShadowPcidEnabled           : False

Extra kaynak: https://spectreattack.com/

(ALINTI)

Kaynak: https://www.technopat.net/
Tarih:
Hit: 3684
Yazar: Draenei



Yorumlar


Yorum yapabilmek için üye girişi yapmalısınız.

Yorumlar

Basayev tarafından yazıldı. Tarih: 16/Nis/18 17:50
Maşallah Hocam.
oinomaos tarafından yazıldı. Tarih: 15/Şub/18 16:34
Adam kitap yazmış mübarek haber vermemiş. Eline sağlık dostum kaliteli çalışma
Draenei tarafından yazıldı. Tarih: 29/Oca/18 19:48
teşekkür ederim. lakin gecen hafta micsoft bir açıklama yaptı. yayınlamış olduğumuz yamaları kurmayın dedi :S kafalar karışık yani. kuranlar için ve daha hiç bir şey update etmeyenler için yeni düzeltmeler yayınlayacaklar ama. ne zaman olacağı belli değil. ama sonuç olarak donanımdan (işlemci) kaynaklanan açığı nasıl %100 yazılımsal olarak kapatılır... tarışılır. ama dikkatli olmakta fayda var.
alli tarafından yazıldı. Tarih: 29/Oca/18 03:48
Sağol hocam genel bilgilendirmeden ince detaylara kadar güzel bir derleme hazırlamışsın. Sana muhabirlik kariyerinde başarılar diliyorum
rappermcs tarafından yazıldı. Tarih: 22/Oca/18 12:51
eyv paylaşım için..

shadowing True lakin altında kırmızı 2 uyarı çıkıyor acaba ne anlama geliyor..


Hardware requires kernel VA shadowing: True
Windows OS support for kernel VA shadow is present: False
Windows OS support for kernel VA shadow is enabled: False
nessaj tarafından yazıldı. Tarih: 20/Oca/18 13:41
haber gibi haber. adamsın.