5 Ocak 2018 Cuma

Meltdown ve Spectre CPU Zafiyeti Hakkında


Merhaba bu durum baya bir sıkıntılı süreç başlatacak bilişim dünyası için bir çok makale yazı çıkacak ve bilgi kirliliği olacak ama Gökhan Topçu arkadaş çok güzel Twitter üzerinden yazmış bende kopyaladım ve yazı çok güzel anlatıyor durumu ve şu an için neler yapılabilir şu anda en güncel çözümlerde var bilginize.

Ayrıca VMware bu konuda bir bilgi yayınladı link burada : https://www.vmware.com/us/security/advisories/VMSA-2018-0002.html
Çünkü yazılan makalelerde sanal sistemler içinde bu durumun etklili olduğu söyleniyor.

Windows  7/8/10 için KB ve Patch Yayınlandı :  https://www.catalog.update.microsoft.com/Search.aspx?q=KB4056892

Daha fazla detay haberde : https://thehackernews.com/2018/01/meltdown-spectre-patches.html



Yazımıza Başlayalım; 

"Intel işlemcilerle ilgili güvenlik zaafiyetiyle hakkında, Türkçe kaynaklar oldukça kötü durumda ve çok fazla spekülasyon var. Bulanıklığı gidermek adına konunun ne olduğuna ve olmadığına dair birkaç şey söylemek istiyorum.
Profesyonel güvenlik araştırmacısı, OS veya CPU designer değilim, bu nedenle yazdıklarım belirli bir oranda hata içer(ebil)ir. Amacım herkesin anlayacağı sadelikte konudan bahsedebilmek. Eksik ve yanlışlar için şimdiden özür dilerim.

Öncelikle dijital çağın en büyük güvenlik problemiyle karşı karşıya olduğumuzu söyleyebilirim. Son 10-20 yılda üretilen neredeyse tüm işlemciler sorundan etkileniyor.Sorunun sadece Intel işlemcilere ait olduğu bilgisi yanlış. Açığı ortaya çıkartan(lardan) Project Zero ekibinin raporuna göre ARM ve AMD işlemciler de açıktan farklı biçimlerde etkileniyor.



Daha doğru ifade edersek, açığın çeşitli türevleri var. AMD ve ARM bunların birkaçından etkileniyor. Bu anlamda Intel'e göre bir nebze daha güvenli oldukları söylenebilir.Teknik detaylara girersek; modern CPU'larda out of order execution isimli bir feature var, bu feature sayesinde işlemciler önbelleği ve registerları daha efektif kullanmak için çalıştırılan instruction(komut)ların sırasını değiştirebiliyor.Speculative execution; CPU'larda pipeline'ın daha efektif kullanılması adına, bir sonraki işlemin sonucunun tahmin edilerek ona uygun sonucun çalıştırılmasını sağlayan bir optimizasyon. Eğer bu tahminde yanılma varsa CPU geri dönerek diğer sonucu çalıştırmaya devam eder.

Bu işlem için CPU üzerinde özel branch predictor devreler ve branch target predictor ve branch target buffer bulunur.

Bu sayede CPU kendi üzerinde akıllı bir yöntemle bir sonraki komutu bulur ve pipelina alıp işlemeye başlar.Örneğin; 1 den 1000'e kadarlık bir for döngüsünde, döngünün bitip bitmediğinin kontrolü esnasında branch predictor ilk değerleri baz alarak döngünün bitmediğini varsayarak işleme devam eder.Paralelde ise döngünün bitip bitmediği kontrolünü yapar. Predictor'ın tahmini doğruysa çok ciddi bir performans kazanımı olur, değilse CPU yaptığı işlemleri geri alır ve diğer senaryoyu işlemeye devam başlar.

Diğer kavramlarımız; user space ve kernel space. Uygulamalarımıza işletim sistemi tarafından verilen sanal bellek user space ve kernel space olarak ayrılır. User space'de uygulamaya ait memory alanı, kernel space ise işletim sistemine ait ortak bir alanı temsil eder.Uygulamalar kernel space e erişemez. Bunu gerektiren bir işlem olduğunda uygulama sistem çağrısı (syscall) yaparak bu işlemi kernel a devreder. Bu sürecin güvenliği işletim sisteminin kernel mode a geçmesi ve CPU protection ring ler sayesinde sağlanır.Kernel mode da çalışan bir işlem, işletim sisteminin -neredeyse- tüm kaynaklarına erişebilir, ve bir şeyleri değiştirebilir. Bu nedenle sadece sistem yazılımları, donanım sürücüleri ve antivirüs yazılımları gibi buna gerçekten ihtiyacı olan yazılımlar kernel mode da çalışabilir.

Konumuza dönersek; mevcut açık temel olarak, out of order execution ve speculative executiondan faydalanarak, normalde erişilememesi gereken, kernel space de yer alan bir memory alanına erişilebilmesini sağlıyor.

Bunu yaparken izlediği yöntem AFAIU; branch predictorın yanlış tahmin yapmasını sağlayarak, bu erişimin kontrolünü yapacak kodun daha geç çalıştırılmasına neden olarak, bu süre zarfında erişilmese de cachelenmiş olan kernel space e ait adres bilgilerine erişiyor.Açığın çeşitli türevleri var. Bu türevler, benzer yöntemlerle, farklı bir kod blogunun çalıştırılması(branchin manipüle edilmesi), kullanıcıya ait herhangi başka bir dataya erişilebilmesi/değiştirilebilmesi gibi yeteneklere sahipler.

Zaten bahsettiğim bu senaryolara göre kernel space e erişimi olan bir zararlı yazılım, yeterince yetenekliyse sistem genelinde istediği her şeyi yapabilir. Örneğin kendi bulunduğu disk veya memory alanını taramaya çalışan bir antivirüsü yanıltabilir.Kernel space e erişimi olan herhangi bir zararlı yazılım da aynı şeyi yapabilirken bu sefer durumu farklı kılan açığın etki alanının genişliği.Bugüne kadarki tüm açıklar bir işletim sistemini, bir uygulamayı veya bunların spesifik bir versiyon grubunu etkilerken bu açık son 10+ yıldaki modern işlemcilerin tamamını etkiliyor.Açığın hardware seviyesinde bir çözümü yok.

Çözüm olarak; işletim sistemlerinin mimarilerinin yamalarla değiştirilerek, eskiden performans için her processin virtual memorysi içerisinde yer alan kernel space in dışarıya alınması ve kernel space e ASLR uygulanması var.ASLR -> Adress space layout randomization; process in memory de her sefer farklı adreslere load edilmesi ve bu sayede saldırganın hedeflediği kısma (genelde fonksiyon adresi) ulaşmasını engelleyen bir yöntemTabi bu durumun da ilk testlere göre %5 ile %30 arasında bir performans kaybı oluşturacağı tahmin ediliyor.

Bu kaybın oranı uygulama içerisinde yapılan sistem çağrılarıyla doğru orantılı, peki bu ne anlama geliyor?Eğer uygulamanız kendi içerisinde algoritmik hesaplamalar yapan bir uygulama ise kaybınız oldukça düşük olacaktır. Ancak sistem çağrısı içeren virtualization, I/O, memory allocation gibi operasyonlara çokça ihtiyacınız performans kaybını daha ciddi biçimde hissedebilirsiniz.

Son kullanıcı ne yapmalı?

MacOS işletim sisteminin Aralık güncellemesinde açığı -kısmen- kapattığı söyleniyor.
Windows ve Linux için ise yamalar yolda. Bu yamaların çıkar çıkmaz yüklenmesi gerekiyor. Bu tarihe kadar web siteleri dahil dikkatli olmakta büyük fayda var.

10+ yıllık bu açığın 2 farklı grup tarafından aynı gün(!) bulunma tarihi Haziran 2017. Açığın açıklanması için planlanan tarih ise gelecek hafta. Bu süreye kadar bu açıktan kimler faydalandı veya bu 2 grup bunu nasıl aynı anda buldu bu soruların yanıtlarını bilmiyoruz.

Üzülerek belirtmeliyim ki, bugüne kadar ki tüm dijital verilerimiz birilerinin eline geçmiş olabilir. Sanırım bu duruma da hazırlık olmamız gerekiyor :)

Buraya kadar sabredip okuyan herkese teşekkür ederim. Her türlü soru, düzeltme, yorum ve katkıyı bekliyorum. Harcadığım eforu desteklemek adına, tweet serisini paylaşırsanız sevinirim. 

Güncellemeler gelene kadar;
Chrome/Chromium kullanıcıları: chrome://flags/#enable-site-per-process 'Strict site isolation' seçeneği Enable

Firefox kullanıcıları: about:config?filter=privacy.firstparty.isolate privacy.firstparty.isolate  True olarak set edilmeli
Safari ve Edge kullananların güncellemeleri beklemesi ve takip etmesi gerekiyor.

Yukarıdaki ayarlar değiştirildiğinde, browserınızda bir miktar yavaşlama olması ve cookie ile adtracking yapan sitelerin davranışlarının değişmesi olası.

Browserları restart etmeyi de unutmayalım.

Yazar : Gökhan Topçu @ifndefgt

Gökhan bey'e bu güzel ve açıklayıcı yazısı için teşekkür ederiz.

Hiç yorum yok:

Yorum Gönder

Yorumunuz için teşekkürler.