İnsanlığın elektronik bilgisayarlar ile tanıştığı ilk günden bu yana karşılaşılan en büyük güvenlik açığı. Meltdown (Erime) ve Spectre (Hayalet). İki farklı güvenlik araştırmacısı grup tarafından aynı tarihlerde açıklanmış, CPU (işlemci) tasarımının kötüye kullanılmasına izin veren donanım tabanlı bir güvenlik açığı. Intel, AMD, ARM ve VIA gibi firmaların modern işlemcilerinin tamamının etkilendiği bu güvenlik açığını tam olarak kapatmanın bir yolu yok. İlk başlarda CVE raporlarında yazılan ve sonradan geri adım atılan “işlemciyi değiştirmek” ibaresi durumun ciddiyetini ortaya koyuyor. Lakin şuan böyle bir işlemci yok. İşte bu güvenlik açığını insanlık tarihinin en büyük açığı haline getiren durum da bu. İnsanlığın tüm dijital varlığı yazılımla kapatılamayacak bir şekilde tehdit altında.

Bu güvenlik açığı tam olarak nedir?

İşletim sistemleri programları CPU’ya gönderip çalıştırmadan önce diskten okuyarak belleğe kopyalarlar. Programı oluşturan byte’lar, teker teker bellekten okunarak işlemciye gönderilir ve çalıştırılır. Bu esnada; işletim sistemi (daha doğrusu işletim sisteminin çekirdeği) belleği iki ana kısma ayırarak yönetir. Kernel space ve user space. İşletim sisteminin en önemli görevi kullanıcı programlarının kendi bellek alanlarında çalışmalarını ve dışarıya çıkamamalarını garanti etmektir. Bu güvenlik için çok gerekli bir durumdur. Yani çekirdeğin RAM’de çalışmakta olduğu, kernel-space adı verilen alanı koruma altındadır. Kernel buranın user space programlardan korunmasını garanti eder. Eğer bir user-space program kernel-space’e erişebilirse (okuma/yazma) işletim sistemi genelinde “herşeyi” yapabilir. Bu açık CPU’nun donanımsal bir tasarım hatasını (aslında meltdown ve spectre keşfedilene kadar bu bir feature’dı) kullanarak erişilmemesi gereken bellek alanlarına erişilebilmeyi mümkün kılıyor. Spectre grubunun bulduğu güvenlik açığı ile kernel-space’e erişilebilirken, Meltdown grubunun açığı ile tüm fiziksel belleğe (RAM) erişmek mümkün oluyor. Dolayısıyla açıklar herhangi bir işletim sistemi veya yazılımdan kaynaklanmıyor. Bu sefer açık CPU’nun içinde.

Açık kullanılarak neler yapılabilir?

  • Yetki yükseltmesi yapılabilir. İşletim sisteminden bağımsız olarak sıradan bir kullanıcı yönetici yetkilerine sahip olabilir.
  • Antivirüsler kernel-space’de çalıştıklarından devre dışı bırakılabilir veya atlatılabilir.
  • Meltdown ile bir sanal sunucu içinden diğer sanal sunuculara ve hatta fiziksel makineye zıplanabilir.
  • Bir javascript kodu ile sistemde en yüksek düzeyde yetkiye sahip olup, kötücül yazılım yüklenebilir.

Hangi işlemciler etkileniyor?

Kabaca son 20 yılda üretilmiş pipelining kullanan tüm modern işlemciler bu açıklardan etkileniyor. En büyük üreticilerin etkilenen işlemcilerini görmek için aşağıdaki bağlantıları kullanabilirsiniz. Bu açığın en büyük özelliği belli bir micro-code’u ya da kod zafiyetini hedef alması değil bir mikro işlemci tasarım modelini ya da mimarisini hedef alması. Stackoverflow kaynaklarından gözlemlediğim kadarıyla, henüz açığı suistimal eden bir kod olmadığı için özellikle AMD ve ARM açıklama yapmaktan kaçınıyorlar.

İşlemci (CPU) üreticileri ne diyor?

Söylentilere göre işlemciler üzerindeki bu açık 1 yıl kadar önce ilgili firmalara bildirilmiş fakat firmalar gerekli önlemleri almamışlar. Bu, akla NSA ve muadili kuruluşların erişimi için bilinçli bir arka kapı bırakıldığı fikrini getiriyor. Büyük işlemci üreticileri ortak istişare ile soruna micro-code güncellemesi ile geçici bir çözüm bulmaya çalışıyor. Kişisel fikrim: açık bir feature’ı hedef aldığından ki bu feature, donanımsal bir tasarıma karşılık geliyor (pipelining ve speculative execution) micro code güncellemeleri ile sağlanan çözüm de kısa sürede hacker’lar tarafından aşılacaktır. Çözüm böceksiz işlemciler piyasaya çıkmadan önce %30’a varan başarım kayıplarına razı olarak yamalı bir işletim sistemi kullanmaya devam etmek. Intel buradan micro-code güncellemelerini yayınlıyor. Listedeki Linux işletim sistemi dağıtımları güncellemeleri CPU’ya uygulayabiliyor.

İşletim sistemi üreticileri ne diyor?

Microsoft’un açıklamasına buradan bakabilirsiniz. Kısaca özetlemek gerekirse; Şu anda bu açığı suistimal eden bir atak raporlanmadı. cloud servislerimiz için gerekli aksiyonları aldık. Windows için gerekli yamaları yayınladık ancak firmware ve antivirus update’lerinizi (micro code güncellemelerini) yapmayı unutmayın deniyor.

Hızlı bir aksiyon almak için neler yapılabilir?

  • Antivirüs yazılımınızı güncelleyin. Bu açığa karşı aksiyon alan AV’lerin listesini buradan takip edebilirsiniz. Bu listede Windows yamasının yapılmasına engel olmayan AV’ler yer alıyor. Ancak bundan sonra Windows’u güncellenebiliyor.
  • Derhal update desteği olan bir işletim sistemine geçin ve işletim sisteminizi güncelleyin. Linux’larda bu işlemi yaptığınızda güncel micro-code update‘leri boot sırasında CPU’ya yazılıcak. Microsoft server sürümleri için gerekli yamaları yayınladı. Windows 10 gibi son kullanıcı sistemler için ise bir advisory yayınladı.
  • Anakart üreticisinin yayınladığı BIOS firmware’ini sisteminize uygulayın. Güncel cpu micro-code’lar firmware update ile CPU’ya yazılacak. Tarih olarak 3 Ocak 2018 ve sonrası tarihli güncellemeler olması önemli.
  • Buraya tıklayarak Chrome’un strict site isolation seçeneğini enable yapın ve chrome’u yeniden başlatın.
  • Buraya tıklayarak Firefox’un privacy.firstparty.isolate seçeneğini anable yapın ve Firefox’u yeninden başlatın.
  • Web tarayıcılarınızı güncelledikten sonra buradan güvenlik kontrolü yapın.
  • Android cihazlar için, telefon üreticinizin sunduğu güncellemeyi yüklemelisiniz. Google’un kendi ürettiği telefonlar için sunduğu güncelleme talimatı şu adreste. Bu noktada neden Google marka bir telefon satın almanın önemini anlayabiliyoruz. Markalar azami 2 yıl kadar güncelleme desteği veriyorlar.
  • Bulut ortamındaysanız misafir işletim sistemini ve supervisor yazılımını güncelleyin. Yamasız bulut sistemlerde guest içinden host’a veya diğer guest’lere zıplamak mümkün.
  • Canlı kanlı bir PoC çalıştırmak isterseniz github deposu burada.
  • Meltdown & Spectre özelinde AMD, Intel ve VIA işlemcilerinin mikro mimarisi burada.
  • *nix sistemlerinizi sınamak isterseniz github kodu burada.
  • Açıkların nasıl işlediğini bir programcı gözü ile incelemek isterseniz buradan.
  • https://ionescu007.github.io/SpecuCheck/ adresindeki SpecuCheck adlı uygulamayı Windows sisteminizde çalıştırarak CVE-2017-5754 ve CVE-2017-5715 açıklarına karşı yamanızın olup olmadığını görebilirsiniz.

Yama kontrolünü yapın?

  1. Microsoft hali hazırda açık için bir yama yayınlamış durumda ve bu windows update ile dağılıyor. Microsoft, CVE-2017-5715 ve CVE-2017-5754 açıklarına karşı sisteminizin korumasının olup olmadığını taramak için bir powershell eklentisi yayınlamış durumda. Buradan nasıl kurulup çalıştırılacağını görebilirsiniz. Eklentiyi kullanmadan önce powershell’i yönetici olarak çalıştırmalısınız.
  2. Korunaklı sistemlerin aşağıdaki gibi bir rapor görüntülemesi gerekiyor. Aksi durumda raporlanan parametreler ile ilgili yapılabilecekler aynı sayfada açıklanmış. False olarak bildirilen durumları gidermeniz gerekiyor:

    Speculation control settings for CVE-2017-5715 [branch target injection]
    Hardware support for branch target injection mitigation is present: True
    Windows OS support for branch target injection mitigation is present: True
    Windows OS support for branch target injection mitigation is enabled: True

    Speculation control settings for CVE-2017-5754 [rogue data cache load]
    Hardware requires kernel VA shadowing: True
    Windows OS support for kernel VA shadow is present: True
    Windows OS support for kernel VA shadow is enabled: True
    Windows OS support for PCID optimization is enabled: True

Açık hakkında teknik detaylar

Meltdown ve Spectre açıklarını yayınlayan grubun sayfasında detaylı bir dökümantasyon var. Şuan bu konuda bir exploit yayınlamış değil fakat açık hakkında ilk uyarı haziran ayında yapılmış. 3 ocakta yayınlanan teknik detaylar ışığında kısa sürede suistimal kodunun yazılabileceğine eminim. Açığı bulan grupların yayınladığı demostrasyonları şu videolardan görebilirsiniz: Demo-1, Demo-2

İlk video’da user-mode bir programın kernel-space’deki verileri okuyabildiği gösteriliyor (Bunu ali kullanicisinin Administrator’un veya Root’un home dizinini okuyabileceği olarak düşünün ve bu hatanın yazılım yoluyla düzeltilemeyeceğini hayal edin)

Diğerinde ise çalışmakta olan bir parola yöneticisinin giriş anahtarı bellekten simultane olarak okunuyor. Burada görüldüğü gibi user-mode bir proses  belleğinin istediği bir alanını okuyabiliyor.

Yukarıdaki başlıkta belirttiğim üzere bunun pratikteki en tehditkar karşılığı şu: Diyelimki bir VPS kiraladınız. (VPS fiziksel bir makine üzerinde oluşturulan sanal bilgisayarlardır). Bu VPS üzerinde çalıştıracağınız bir exploit ile aynı fiziksel makinede çalışan diğer sanal bilgisayarlara (VPS’ler) sınırsız erişebiliyorsunuz. Kullanıcı hesapları, kişisel veriler, veritabanları vb…

Açıkların CVE numaraları şöyle:

CVE-2017-5715 (branch target injection)
CVE-2017-5753 (bounds check bypass)
CVE-2017-5754 (rogue data cache load)

Karşılaştırma

Spectre Meltdown
Tetiklenme biçimi Dallanma tahmini yöntemi üzerinden spekülatif çalıştırma Sırasız yürütme
Etkilenen platformlar Dallanma tahmini yöntemi üzerinden spekülatif çalıştırma kullanan CPU’lar Sırasız yürütme komutları ile bellek okuma yapan CPU’lar
Başarılı bir saldırının zorluk seviyesi Yüksek – Kurban prosesin yazılım ortamına uyarlanma gerektirir Düşük – Kernel space memory’ye erişim için exploit çalıştırma yaygındır.
Etki alanı işlem içi (kernel space) bellek ifşası Kernel space memory’nin userspace’e açılması
Yazılımsal önlemler Varyant-1: Derleyici (compiler) yamaları. Javascript ile suistimalini önlemek için web tarayıcısı güncelleştirmeleri.

Varyan-2: Kernel yaması ile dolaylı dallanma tahmini. Buna uygun CPU microcode güncellemesi gerekir.[Kaynak]

Çekirdek bellek sayfalama tablosu izalasyonu. [Kaynak]

 

Micro-code nedir?

İşlemci üreticileri açığı mikro kod güncellemeleri ile giderecekler. İntel bu konuda inat ediyor. AMD kabul etmiyor. Durum oldukça vahim. CPU’nun içinde komutların (assembly komutları) hangi işi yapacaklarını söyleyen daha alt komutlar var bunlara mikro kod deniyor. Kaba tabirle; bir assembly komutunu fonksiyon, bu fonksiyonun tanımını oluşturan alt komutların herbirini de mikro kod olarak düşünebiliriz. Yani bir işlemci yeniden programlanarak farklı işler için özelleştirilebiliyor. Bu microcode altyapısının güncellenmesi için gördüğüm kadarıyla iki yol var. İlki UEFI/BIOS programı üzerinden. Anakart üreticileri son microcode’ları firmware’lerine entegre ediyorlar. BIOS da açılışta bu güncellemeyi işlemciye yüklüyor. İkinci yöntemde de aynı iş işletim sistemi tarafından yapılıyor. Çekirdek yüklenirken microcode güncelleştirmesi CPU’ya uygulanıyor. Windows’ların bunu yaptığını hiç duymadım. Açığın ilk günlerinde yaygın Linux dağıtımlarının bu güncellemeyi uyguladığını duymuştum.

Kaynak: http://www.wikizero.net/index.php?q=aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9jb2Rl

Uçuk Kaçık Komplo Teorileri

  1. 24 saat içinde dünyadaki tüm bilgisayarların çalışamaz duruma gelebilir. CSRF, XSS ve RFI aracılığıyla yüksek hit’li bir domain üzerinden kısa sürede yayılabilir. Client tarafında buna karşı duracak AV ya da kernel yok.
  2. 3-5 bitcoin karşılığı reklam vererek (adsense/facebook) hatırı sayılır bir miktarda bilgisayara tarayıcılar aracılığı ile ulaşılabilir.
  3. Mevcut CPU’ların önemli bir bölümünün  korunaksız kalacak olması (anakart üreticilerinin bios update yayınlamaması dolayısıyla), yıllarca güvenlik gediklerine neden olacak. Taki CPU’lar çekiçle ezilene kadar.
  4. Yama yüklenen sistemlerde %30’a varan oranlarda yaşanacak başarım kayıpları kendini daha fazla enerji tüketimi olarak gösterecek. Bu daha fazla karbon salınımı ve ısı artışı demek.
  5. CPU üreticileri kısa vadede bug-free CPU’lardan çok güzel para yapacaklar. Bu noktada üreticilerin böyle bir bug’dan mesul tutulmaları gerekir. Bu açık 6 ay önceden kendilerine bildirilmiş. Exploit’ler yazılmaya başladıkça bel büken tazminat davaları başlayabilir.
  6.  Boot sürecinin ilk stage’lerine yapışan bir specter zararlısı CPU’ya micro-code yazarak onu çöp haline getirebilir?
  7. Belkide güzel yanı; CPU üreticilerinin bu büyük başarısızlığı ve sorumsuzluğu, açık kaynak CPU tasarımı (open hardware) konusunu öne çıkartabilir.
  8. Bu işi ortaya çıkartan google’un zero takımının kapasitesi (kişi sayısı X teknik bilgi ve deneyim, hatta kişi başı maaş) düşünüldüğünde milyar dolarlık bütçeler ile espiyonaj faliyetlerinde bulunan devletlerin bunu yapmamış/yapamamış olma ihtimallerini çok düşük tutuyor. En azından bu mantık tüm bu saçmalıkların içindeki en mantıklı bakış açısı gibi duruyor. Dolayısıyla en güvenli bilgisayar fişi takılı olmayan bilgisayardır lafı da bir kez daha kendini doğruluyor.
  9. CPU üreticilerinin bunun bir bug degil feature olduğunu iddia ettikleri o kafa, kimbilir daha neler göreceğiz kafası ile yarışamaz.
  10. Güncelleme bulabilen herkes CPU’larına micro-code yükleme derdinde. Peki bu güncel micro-code’lar yeterince iyi kontrol edildi mi? NSA’in 6 aylık sürede backdoor’un babasını yapmadığının garantisi varmı. Bu nedenlerle o micro-code’lara da güvenmemek gerekir.
  11. İçinde CPU olan her şeyi yakıp bir dağ evinde sonunu beklemenin tam zamanı.

 

Türk Basınında Meltdown ve Spectre

CEVAP VER