Modern İşlemcilerdeki Meltdown ve Spectre Güvenlik Saldırılarının İncelenmesi

2
493
views
03.01.2017 tarihinde modern işlemcilerdeki (Intel, ARM, AMD gibi) tasarım hatalarını istismar eden zafiyetler duyurulmuştır. Bu yazıda Meltdown (CVE-2017-5754) ve Spectre (CVE-2017-5753 ve CVE-2017-5715) olarak adlandırılan ve nerede ise tüm elektronik cihazları da tehdit eden güvenlik zafiyetleri incelenecektir.

Zafiyetin Özeti

Detayları aşağıda verilecek olan bu zafiyetler ile işlemcilerin çalışma mekanizmaları istismar edilerek, işletim sisteminin bellek izolasyonu (Memory Isolation) atlatılmış olur:

  • Bellekte bir kullanıcı prosesi için ayrılmış alana, izin verilmemiş başka bir kullanıcı prosesinin erişebilmesi yasaktır.
  • Bellekte işletim sistemi çekirdeği için ayrılmış alana, bir kullanıcı uygulamasının doğrudan erişebilmesi yasaktır.

Böylece standart yetkileri olan bir kullanıcıya ait uygulama, aynı bilgisayardaki farklı bir kullanıcı uygulamasındaki verileri okuyabilir veya bu kullanıcı, işletim sisteminde en yetkili haklara sahip olabilir.

Ayrıca; bir oltalama saldırısı sonucunda, kullanıcının web tarayıcısında çalıştırılan Javascript kodu ile tüm bellek alanına (parolalara, banka hesap bilgilerine, maillere, vb.) erişim sağlanabilir.

Zafiyet ile ilgili aşağıdaki video izlenebilir.

 

Zafiyetin Kaynağı ve Etkisi

Modern işlemciler (Processor / CPU) bir komutu yerine getirirken, en çok kullandığı (erişeceği) değişkenleri kendi içerisindeki önbelleğe (L1, L2, L3 gibi “CPU Cache” yapıları) kaydeder. Ancak önbelleğin boyutu çok küçük olduğu için, daha az kullanılan veriler RAM‘de saklanır. CPU-önbellek arasındaki işlemler (okuma/yazma gibi) çok hızlı iken, CPU-RAM arasındaki işlemler ise biraz daha yavaştır. Eğer daha fazla veri saklama ihtiyacı olursa, bu sefer de erişimlerin daha yavaş olduğu disk (storage) üzerinde bu değişkenler saklanır ve gerektiğinde erişilir.

Modern işlemcilerdeki  Out-of-Order Execution (sırasız çalıştırma) ve Speculative Execution (spekülatif çalıştırma) adlı iki çalışma mekanizmasının istismarı zafiyete sebebiyet vermektedir. Bu mekanizmalar (özellikler); önbelleği ve yazmaçları (register) daha etkin kullanmak, işlemciyi tam kapasitede kullanmak, bekleme süresini en aza indirmek ve böylece işlemci performansı arttırmak için önem arz etmektedir. Bu özellikler sayesinde, işlemciler bir sonraki işlemin sonucu tahmin eder (Speculative Execution) ve bu tahmine uygun işlemin gerçekleştirilmesi, yani uygun dala (branch) atlanması sağlanır. Böylece, çalıştırılan komutların (instruction) sırası da değiştirilmiş olur (Out-of-Order Execution). Bu işlemler için işlemci üzerinde bir takım özel yapılar (Branch Predictor Devre, Branch Target Predictor, Branch Target Buffer vb.) bulunur. Bu sayede işlemci kendi üzerinde akıllı bir yöntemle bir sonraki komutu bulur ve sıraya (Pipeline) 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. Paralelinde ise döngünün bitip bitmediği kontrolünü yapar.

Tahmin işlemindeki 2 ihtimale göre iki durum ortaya çıkar:

  • Tahmin doğru ise, komut başarılı bir şekilde tamamlanır. Yani komutun sonuçlarına göre yazmaçlar (register) ve bellek uygun şekilde işlenir. Böylece büyük bir performans kazancı olur.
  • Tahmin yanlışsa, işlemci geri dönerek diğer komutu çalıştırır ve spekülatif olarak çalıştırılan komutun doğrudan etkileri (direct side-effects) geri alınır. Ancak CPU önbellek değişiklikleri gibi dolaylı yan etkiler (indirect side-effects) geri alınamaz. Bu gibi bir durumda, bellek erişim işlemlerindeki gecikme hesaplanarak, spekülatif olarak çalıştırılan komutlardaki veriler önbellekten sızdırılabilir.

Yan Kanal Analizi adı verilen teknik genellikle kriptografik işlemlerde yapılan ve gerçekleştirilen işlemlerin sonucuna/tepkisine (ses, ısı, sinyal gibi) göre bazı bilgiler/ipuçları elde etmeye yarar. Örneğin kimlik doğrulama algoritmasındaki zafiyet ile, parola doğrulaması/karşılaştırması işlemindeki süre farkları analiz edilerek parolanın keşfedilmesi/tahmin edilmesi sağlanabilir.

Side Channel” olarak sınıflandırılan Meltdown & Spectre saldırı türleri ile, bu tahmin işlemini kötüye kullanarak, normalde erişilememesi gereken bellek alanına erişilebilmeyi sağlar. Bu bellek alanı Meltdown zafiyetinde çekirdek bellek alanı (Kernel Space), Spectre için ise başka bir uygulamaya/kullanıcıya ait bellek alanı (User Space) olabilir. Bunun sebebi de Speculative Execution sırasında bir prosesin başka bir prosesin alanına erişilip erişilmeyeceğinin CPU önbelleğinde (RAM’de değil, RAM’de erişim kontrolü yapılmaktadır) yapılmaması ve yan kanal analizi ile bilgilerin ifşasına sebep olunabilmesidir.

Bu zafiyetler sebebi ile; son kullanıcı yetkilerinde çalışan bir proses (Internet Explorer, Notepad gibi) kendi bellek alanı haricindeki başka bir prosesin (LSASS.exe, winlogon.exe, başka bir kullanıcının çalıştırdığı Chrome.exe) alanındaki hassas bilgilere erişim sağlayabilir, yani işletim sistemindeki kullanıcı modu ve/veya çekirdek modundaki izolasyonu atlatılmış olur. İşletim sistemindeki izolasyon korumasının aşılması ile işletim sistemi tarafından saklanan verilere (parola, anahtar, doküman, mail, jeton/token, bellek tabloları, diğer uygulamalara ait verilere v.b.) ulaşılmasına imkan sağlamaktadır. Ayrıca, bu zafiyetin istismarı ile bulutta kiralanan sanal sunucu üzerinden, aynı platformdaki diğer sanal sunuculara ve tüm yapıya hakim olunabileceği değerlendirilmektedir.

Meltdown zafiyetini kullanan ve kullanıcının yazdığı parolayı alan (klavye hareketlerini erişim sağlayabilen) örnek bir istismar işlemi aşağıdaki gibidir.

 

Etkilenen Sistemler

Zafiyetler 1995 yılından sonra üretilmiş olan AMD, Intel ve ARM işlemciler etkilenmektedir.

  • İşlemcilerin etkilenmesi dolayısı ile Windows, Linux, MacOS, Android, iOS dahil olmak üzere hemen hemen tüm istemciler, sunucular, akıllı telefonlar / televizyonlar, IOT cihazları, tablet cihazlar,…vb. zafiyetten etkilenebildiği tespit edilmiştir.
  • Bunun yanında tek bir fiziksel cihaz üzerinde koşan sanal sistemleri etkilemesi nedeniyle fiziksel cihaz üzerinde koşan veri merkezlerindeki sistemlerin hafıza alanına erişim yapılabileceği gibi bulut üzerinde çalışan sistemleri (Amazon ve Google gibi) de etkileyebileceği rapor içerisinde belirtilmektedir.
  • Javascript kodları veya yerel istismar kodları ile sosyal mühendislik saldırıları gerçekleştirilebilir ve son kullanıcılar tehdit altına girebilmektedir.

Not: Yayınlanan raporda “Native kod kullanarak süreç izolasyon sınırlarını ihlal etmeye ek olarak, Spectre saldırıları aynı zamanda web tarayıcı sandbox’larını taşınabilir JavaScript kodunu bağlayarak ihlal edebilir. Tarayıcı sürecinin çalıştığı bellek alanında yer alan veriyi başarılı bir şekilde okuyan JavaScript programı da yazdık.” denilmektedir. Speculative Execution özelliğinin istismarı için kullanılabilecek örnek JavaScript kod parçacığı şu şekildedir:

 

Zafiyetin Çeşitleri

Modern işlemcilerdeki tasarım hatalarını istismar eden bu saldırı türleri Meltdown (CVE-2017-5754) ve Spectre (CVE-2017-5753 ve CVE-2017-5715) olarak adlandırılmıştır. CVE ID’si yayınlanan bu zafiyetlerin 3 farklı çeşidi bulunmaktadır:

  • CVE-2017-5753 (Bounds Check Bypass): Birinci tür Spectre olarak da adlandırılmaktadır.
  • CVE-2017-5715 (Branch Target Injection): İkinci tür Spectre olarak da adlandırılmaktadır.
  • CVE-2017-5754 (Rogue Data Cache Load): Meltdown olarak da adlandırılmaktadır.

Bu zafiyetlerin farklı etkileri, istismar yöntemleri ve önlemleri bulunmaktadır.

Zafiyetler aynı anda sunulması ve birbirine benzemesinin yanında Spectre ve Meltdown olarak farklı türlerdedir.

a) Spectre

  • İşlemcinin spekülatif çalışması sırasındaki Branch Prediction kabiliyeti istismar edilir.
  • Spekülatif olarak tahmin yapan işlemcilerde – Intel, ARM, AMD gibi tüm modern işlemcilerde – bu zafiyet bulunmaktadır.
  • İstismarı için hedef prosese ait uygulamaya göre özel (hedefli) bir çalışma yapılması gerektiği için kolay bir şekilde istismar edilemeyeceği düşünülmektedir.
  • İstismar sonucunda aynı bilgisayarda oturumu olan farklı kullanıcıların proseslerindeki bellek alanına (çekirdek bellek alanına) erişim sağlanabilir.

b)Meltdown

  • İşlemcinin sırasız çalışabilme (Out-of-Order Execution) kabiliyeti istismar edilir.
  • Sırasız çalışabilen modern Intel işlemcilerde (Intel Itanium ve 2013’den önce çıkan Intel Atom hariç) ve bazı ARM işlemcilerde bu zafiyet bulunmaktadır. Intel işlemcileri ve Xen Pv sanallaştırmaları kullanan, donanımsal sanallaştırma kullanmadan tek merkeze bağlı konteynırlar (Docker, LXC ya da OpenVZ) kullanan servis sağlayıcıları bu zafiyetlerden etkilenmektedir.
  • İstismar işlemi için özel bellek alanı hesaplaması yapılmaya gerek kalmadan istismar işlemi gerçekleştirilebilir.
  • İstismar sonucunda kullanıcı bellek alanı dışına çıkılarak, çekirdek bellek alanındaki veriler okunabilir. Böylece bilgi ifşası ve hak yükseltme gerçekleşmiş olur.

 

Zafiyetin Tespit Edilmesi

İşlemci üreticilerinin 2017 Haziran ayından beri (6 aydır) bu zafiyetten haberdar olduğu belirtilmektedir. Bu zafiyetin saldırganlar tarafından kötüye kullanılabilecek olması dolayısı ile kamuya açıklanmamış, işlemci ve işletim sistemi firmalarına yamalar için zaman tanınmıştır. Ancak zafiyete ilişkin bilgi sızıntılarının olması dolayısı ile zafiyet detayları 1 hafta erkenden yayınlanmıştır. Geçen aylar içerisinde de nerede ise, hiçbir üretici tarafından yamaların hazır edilmediği de görülmüştür. Yıllardır mevcut olan bu zafiyetler aynı vakitte (03.01.2017 tarihinde) 3 farklı ekip tarafından halka (public) duyrulmuştur.

  • United Kingdom National Cyber Security Centre
  • Google Project Zero
  • Institute of Applied Information Processing and Communications (IAIK) – Graz University of Technology (TU Graz)

 

Zafiyetin Mevcudiyetinin Tespiti

Intel tarafından aşağıdaki araçlar kullanılarak test edilebilir.

  • Windows: https://downloadcenter.intel.com/download/26755/INTEL-SA-00075-Detection-and-Mitigation-Tool
  • Linux: https://github.com/intel/INTEL-SA-00075-Linux-Detection-And-Mitigation-Tools

Microsoft tarafından yayınlanan Powershell modülü ile de kontroller gerçekleştirilebilir.

Install-Module SpeculationControl
Get-SpeculationControlSettings

Bunun yanında internetteki farklı kaynaklardan da kontrol amaçlı betikler bulunabilir. Örnek:

  • https://github.com/raphaelsc/Am-I-affected-by-Meltdown
  • https://ionescu007.github.io/SpecuCheck/ (Windows)
  • https://github.com/speed47/spectre-meltdown-checker (Linux)

 

Geçmişe Yönelik Tespit

Bu açıklık üzerinden gerçekleştirilmesi muhtemel saldırıların, işletim sisteminde herhangi bir iz bırakmaması ve bilinen malware korunma yöntemleri / metodları ile tespit edilemiyor olması nedeniyle geçmişe dönük bulgu elde etmek, analiz sonucunda bilgiye ulaşmak mümkün gözükmemektedir.

 

Geçilebilecek Yamalar: Firmware, İşletim Sistemi, Uygulama

Belirtilen zafiyetler işletim sistemi ve işlemci arasındaki etkileşime ait olduğu için sadece yazılımsal güncelleştirmeler ile giderilememektedir. Bu sebeple hem işletim sistemi hem de donanımsal olarak OEM’lerin sağlayacağı “microcode” güncelleştirmeleri yapılmalıdır. Yayınlanan yamalar, henüz her üç zafiyete de çözüm sağlamamaktadır. Açık durumdaki zafiyetler için ek yamalar beklenmektedir. İşlemci donanım üreticileri tarafından henüz firmware yükseltilmesi gibi herhangi bir çözüm sağlanmamıştır.

Mevcut yamalar aşağıdaki gibi sıralanabilir:

  • Amazon
  • AMD
  • Android
  • ARM
  • CentOS
  • Chromium
  • Citrix
  • F5
  • Google
  • Huawei
  • IBM
  • Intel
  • Lenovo
  • Linux
  • Microsoft Azure
  • Microsoft Windows
  • NVIDIA
  • OpenSuSE
  • Red Hat
  • SuSE
  • Trend Micro
  • VMware
  • Xen

Detaylar için CERT bağlantısı incelenebilir.

CERT bağlantısında da belirtildiği gibi Microsoft konu ile ilgili ADV180002 güvenlik önerisini yayınlamıştır. Microsoft, Windows 10 için bir out-of-band olarak yama güncellemesi (KB4056892) yayınlarken, Windows’un diğer sürümleri 9 Ocak 2018’de Salı günü yama ekinde düzeltilecek. Ayrıca yayınladığı kılavuz listesi aşağıdaki gibidir.

  • KB4073119: Windows İstemci
  • KB4072698: Windows Sunucu
  • KB4072699: Antivirüs
  • KB4073229: Donanım
  • KB4073225: SQL Server
  • KB4073235: Microsoft Enterprise Bulut

Microsoft yamalarının yanında “QualityCompat” kayıt değerlerinin uygulanması ile Antivirüs olmayan sistemlerin yama alınması amaçlanmıştır.

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\QualityCompat” /v cadca5fe-87d3-4b96-b7fb-a231484277cc /t REG_DWORD /d 0 /f

Ayrıca “Memory Management” değeri ile de zafiyet etkisi azaltılmaya çalışılmaktadır.

reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management” /v FeatureSettingsOverride /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management” /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f

Web tarayıcıları için 2 temel önlem sunulmaktadır.

  • AD Blocker kullanılması tavsiye edilmektedir.
  • Javascript devre dışı bırakılmalıdır. Ancak JS kullanan bir çok sayfaya girişte hata alınabilecektir.

Google Chrome özelinde URL alanına “chrome://flags/#enable-site-per-process” ile gelen ekranda “Strict Site Isolation” özelliğinin etkinleştirilerek Chrome uygulamasının yeniden başlatılması tavsiye edilmektedir. En az Chrome 63.0.3239.108 sürümüne geçilmesi de tavsiye edilmektedir. Ayrıca NoScript eklentisi de kurulabilir.

Mozilla Firefox özelinde URL alanına “about:config?filter=privacy.firstparty.isolate” ile gelen ekranda “privacy.firstparty.isolate” özelliğinin etkinleştirilerek Firefox uygulamasının yeniden başlatılması tavsiye edilmektedir. En az Firefox 57.0.4 sürümüne geçilmesi de tavsiye edilmektedir.

TrendMicro ürünleri (OfficeScan, Worry-Free Business Security, and Deep Security), Microsoft tarafından yayınlanan KB4072699 makalesindeki duruma göre etkilenmektedir. TrendMicro’nun uyumluluk testleri henüz tamamlanmamıştır. Şu andaki durum için bağlantı takip edilebilir.

Apple MacOS’un eski sürümleri için ne zaman güncelleme yayınlayacağını açıklamasa da son versiyon olan 10.13.2’nin güvenli olduğunu açıkladı. Önceki sürümler için henüz bir yama yayınlanmamıştır.

Apple, iPhone ve iPad için iOS 11.2 sürümü ile bazı zafiyet çeşitlerine karşı koruma sağlandığını belirtmektedir. iOhone 5s+, iPad Air+, and iPod touch 6. nesilde Safari ve WebKit yamaları için bağlantı incelenebilir.

Google, Android işletim sistemine sahip olan ve son güncellemeyi almış Nexus ve Pixel cihazlarının korunduğunu belirtmiştir.

Google, Google uygulamalarının (Gmail, Calendar, Drive, Sites) bu zafiyetlerden etkilenmediğini belirtmiştir. Chromebook kullanıcılarının ise gelecekte yayınlanacak bir güncellemeyi yüklemesi gerekecek.

Linux sistemler için Intel tarafından mikrokod güncellemeleri yayınlanmıştır. Güncel durum için bağlantı takip edilebilir.

Linux çekirdekleri için Kernel Page-Table Isolation (KPTI, eski adı ile KAISER) özelliği etkinleştirilebilir. Linux çekirdek geliştiricileri, KASLR (kernel address space layout randomization) özelliğinin atlatılamaması için, çekirdeği tamamen ayrı bir adres alanına taşıma yoluna giderek 4.15 çekirdek sürümünü çıkarmışlardır. Ancak bu önlem kullanıcı ve çekirdek bellek alanlarının ayrışmasını sağladığı (aynı bellek alanındaki prosesler arasındaki ayrışmayı sağlamadığı) için sadece Meltdown zafiyetinin etkisini azaltmak için uygulanabilir.

Ubuntu sistemler için testler devam etmektedir. Güncel durum için bağlantı takip edilebilir.

Debian sistemler için güncellemeler yayınlanmıştır. Güncel durum için bağlantı takip edilebilir.

Suse sistemler için güncellemeler yayınlanmıştır. Güncel durum için bağlantı takip edilebilir.

Redhat sistemler için güncellemeler yayınlanmıştır. Güncel durum için bağlantı takip edilebilir.

CheckPoint için imzalar yayınlanmıştir. Güncel durum için bağlantı takip edilebilir.

Oracle sistemler için güncellemeler yayınlanmıştır. Güncel durum için bağlantı takip edilebilir.

 

Not: Şu anda çıkan yamalar sadece Meltdown için geçerlidir. Spectre saldırısına karşı önlem alınması pek kolay görünmüyor ve bu konunun tamamen ortadan kaldırılması için işlemci mimarisinde değişikliklerin (CPU mikrokod güncelleme) yapılmasını gerekmektedir. Bunun yanında 32 bitlik Linux yüklü sistemlerin işlemcilerinde ikinci tür Spectre zafiyeti (CVE-2017-5715) için Indirect Branch Restricted Speculation (IBRS) özelliğinin etkinleştirilmesi tavsiye edilmektedir.

Assembly programcıları ve compiler hazırlayanlar için sunulan Intel, Amc ve VIA işlemcilerinin mikro mimarisi için bağlantıdaki doküman incelenebilir.

Not: Zafiyetlerden korunmak için işlemcilerin değiştirilmesi gibi pek uygulanabilir olmayan öneriler de bulunmaktadır.

 

Yamanın Yan Etkileri

Zafiyete karşı alınabilecek önlemlerin 2 temel yan etkisi öngörülmektedir.

  • KB4072699 referansına ve bağlantıdaki listede belirtildiğine göre, Microsoft tarafından yayınlanan yama, Antivirüs çözümleri ile uyumsuzluk gösterebilmektedir. Symantec bu ürünlerden birisidir. Bağlantıdaki kaynağa göre, Microsoft tarafından yayınlanan ilgili yamaları uygulamadan önce Symantec Endpoint Protection üzerinde ERASER Engine versiyonunun 117.3.0.358 veya daha üzeri bir versiyon olduğundan emin olunması gerekmektedir. Aksi durumda yama yüklendikten sonra Antivirus taraması yaparken Mavi ekran hatası ile karşılaşılabilir. (Virus Definition tarihinin 4 Ocak 2018 ve sonrası olması gerekmektedir. ). Microsoft yamalarının yükleme işlemi öncesinde mutlaka antivirüs güncellemesi yapılması önerilmektedir. Bunun yanında diğer antivirüs, HIPS, gibi mekanizmaların da etkisinin test edilmesi gerekmektedir.
  • Yayınlanan yamaların, işletim sisteminin veri saklama mekanizmasında ciddi değişiklikler (KAISER, KPTI v.b.) yapmaları nedeniyle işletim sisteminin veri akış metodlarının değişmesine sebep olabilmektedir. Bu da bazı kurumsal uygulamarda (PostgreSQL, Radis vb) %5-%30 arasındaki performans kayıplarına sebep olacağı öngörülmektedir. Ancak son kullanıcı bilgisayarlarında (Linux, Windows 10 gibi) yapılan testlerde çok büyük bir performans etkisi görülmemiştir.

 

Kaynaklar:

https://www.bgasecurity.com/2018/01/meltdown-ve-spectre-aciklari-hakkinda-bilgilendirme/
https://medium.com/codefiction/meltdown-ve-spectre-sahte-güvenlik-duygusu-ccec37c9d363

İşlemcilerin güvenlik açığında akla takılan 6 soru

Intel, ARM, AMD işlemcileri etkileyen kritik zafiyetler (Meltdown ve Spectre)


http://www.tolgasezer.com.tr/2018/01/meltdown-ve-spectre-zafiyeti.html
https://www.us-cert.gov/ncas/alerts/TA18-004A
https://www.kb.cert.org/vuls/id/584653
https://googleprojectzero.blogspot.com.tr/2018/01/reading-privileged-memory-with-side.html
https://spectreattack.com/spectre.pdf
https://meltdownattack.com/meltdown.pdf
https://en.wikipedia.org/wiki/Kernel_page-table_isolation
https://lkml.org/lkml/2018/1/4/615
https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html
http://www.tomshardware.com/news/meltdown-spectre-exploits-intel-amd-arm-nvidia,36219.htm
https://support.microsoft.com/en-us/help/4073119/protect-against-speculative-execution-side-channel-vulnerabilities-in


http://www.platinbilisim.com.tr/TR/Medya/Duyurular/meltdown-spectre-zaafiyeti
https://www.youtube.com/watch?time_continue=5&v=8FFSQwrLsfE

 

 

 

2 YORUMLAR

  1. Merhaba,

    Yazmış olduğunuz tüm yazıları çok faydalı buluyorum. İmkan oldukça tümünü okumaya çalışacağım. Siber güvenlik konusuna meraklı biz okurlarınıza yapmış olduğunuz katkılardan dolayı teşekkür etmek istedim. Umarım böyle yararlı içerik paylaşmaktan hiç yorulmazsınız.

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz