Intel İşlemcilerle İlgili Güvenlik Zaafiyeti Hakkında

Yakın zamanın en önemli olaylarından biri olan ve her kesim tarafından farklı şekillerde yorumlanan Intel işlemcilerdeki güvenlik sorunu ile ilgili Twitter’ da detaylı açıklama yapan Gökhan Topçu ile görüşüp konu hakkındaki paylaşımlarını bir yazı haline getirmeye çalıştık.

Gökhan Topçu’ nun Gözünden Intel İşlemcilerdeki Sorun Nedir?

  • 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 bir kaçı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 anti-virü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 cache’lenmiş 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 anti-virü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 process’in virtual memory’isi 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öntem.
  • Tabi 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 🙂

Paylaşmamıza izin verdiği için Gökhan Topçu’ ya teşekkür ediyoruz. Konu ile ilgili olarak katılmadığınız maddeler varsa yorum ekleyebilir veya Twitter’ dan Gökhan’ a cevap yazabilirsiniz.

Gökhan Topçu Twitter Adresi: @ifndefgt

Cevap Ver