Rehber Spectre ve Meltdown saldırıları

Giriş.

Türkiye içinde bütün teknoloji editörlerin anlatamadığı veya anlatmadığı bu açık nedir?
İşlemciler neden buna maruz kalır gibi soruların cevabı olmakta.
Ve saldırının sonuçları.

Technopat'tan herkese merhaba! Ben, @351633.
Bu gün sizlere işlemcilerin kabusu olan Meltdown ve Spectre saldırılarını anlatacağım.
Başlamadan önce bazı kavramlara öğrenip saldırıların işleme prensiplerine bakacağız.
Gelin başlayalım.


Bilmeniz gereken kavramlar.

cahce.png


Sırasız yürütüm (Tahminsel yürütme): Modern işlemciler tarafından kullanılan işlemci performansını arttırmak için kullanılan bir teknik.
Bu teknik içinde basit bir çalışma mantığı vardır.

Çalışma mantığı: Bir yazılım yaptığınız varsayalım. Yazılımınız RAM veya işlemci L3 belleğinden bir veri okumak istiyor.
Bunu yaparken ne yapması gerekir?
Bir bellek okuma kodu yürütür.
Yani, basit bir İf veya Else döngüsü kullanır.

Örneğin sizlere basit bir mantıkla anlatacağım:
Eğer, X bir bellek verisi ise hedef bellek adresinden önbelleğe getir.
Eğer, X doğru bir program verisiyse onu getirilen önbellek üstünden oku.

Normal bir program veriyi böyle okur.
Kod olarak bir benzerini siz deneyebilirsiniz.

İşlemci önbelleği (L1, L2, L3): İşlemcilerin bellekleri RAM'dir bu gayet doğru.
Fakat, RAM ile işlemci arasında olan iletişim uzundur bu yüzden işlemci kendi verilerini daha hızlı işlemek ve sürekli RAM kullanmak yerine kendi önbelleğini kullanır.
İşlemci sürekli RAM'i rahatsız etmemek için RAM üsütnden işlem yapacağı zaman veriyi RAM'den alır kendisine kopyalar.

Yani, veri hem RAM hem İşlemci Önbelleğine gelmiş olur.

Bütün, işlemciler Sırasız yürütme, İşlemci önbelleği kullanır.


Meltdown saldırıları.

Spectre and Meltdown.png


Bu saldırı türünün hedef işlemcileri Intel ve ufak bir ARM ailesidir.
Intel işlemciler için geliştirilen bu özel yöntem ile istediğiniz İşlemci önbellek verisini okuyabilir veya çalabilirsiniz.
Gayet basit bir saldırı.
Basit bir mantık içinde işlese bile büyük kayıplara neden olmakta.

İşletim sistemleriniz hassas verilerinizi (şifre, donanım kimliği, kritik belgeler) RAM bellek içinde saklar.
Belleğin ayrılan bu kısmı korumalı bellektir.
Yani, İşletim sistemi ve işlemci hariç kimse buraya erişemez ve kullanıcılar bunu düzenleyemez.
Yani, korumalı bellek özel bir kısımdır ve herkes işlem yapamaz.

Kısaca, işletim sistemleri kendi verisini koruma altına alır.

Evet, bu kısmına kadar gayet güzel verilerimiz korunmakta.
Ama bir sorun var.
İşlemciler Sırasız yürütüm yaparken korumalı bellek verisini normal bellek verisi olarak kabul etmekte ve bu istismara açık bir kapı bırakmakta.
Yani, işlemciye göre işletim sisteminin koruduğu veri normal bir veri.

Şimdi, saldırı başlıyor!
Diyelim şifrenizi çalmak isteyen bir kötü amaçlı bir komut var.
Bu komut ilk olarak şifrenizin İşlemci Önbelleği içinde olup olmadığından emin olmalıdır.
İlk başta gayet masum verileri yazar, basit erişim izinleri rastgele resimler gibi.
Ve, işlemcinin tahminlerini kendi istekleri doğrultusunda manipüle eder.

Fakat, kritik veriler RAM içinde tutulduğu gibi İşlemci Önbelleği içinde tutulmaktadır.
İşlemci Önbelleği dolup artık işlemci tahminlerini kendi istediği gibi manipüle edebileceğinden veri saldırısı kısmı başlar.
Komut son olarak bir resim veya döküman okutur.
Bunun nedeni ise eğer hedef veri hedef alan içindeyse bir resim Pixel'i veya bir döküman yazısı okutarak başarısını kontrol edecektir.

İşlemci Önbelleği dolduğundan ve tahminler manipüle edildiğinden artık korumalı bellek üstünden şifrenizin ilk harfini veya rakamını okumaya başlayacaktır.


[CODE title="Bellekten verinin okunması"]if ( readMemory (182379) ==="1"){
Read target=Pixel (1)
}[/CODE]

Bu kod ile şifrenizin ilk rakamını tahmin etmeye başlar örneğin: 1 sayısı.
Eğer, rakamı yani şifrenizi bularsa yazdığı rastgele bir resim verisinden Önbelleğe bir Pixel görüntü okuyacaktır.
Fakat, işletim sistemi müdahale edecektir diyorsanız yanılıyorsunuz!

Çünkü, işlemci Sırasız yürütüm yapınca korumalı veri normal veri olduğundan kritik verinizi çalacak olan bu kodu arka plan içinde kaza sonucu çalıştırdı.
Verinizi tahmin edecek açık ortamı hazır olduğuna göre final aşamasına doğru gidilir ve hedef veri konumu ve başarımı saptanmak için ikinci bir komut yürütülür.

Eğer, bu komut çalışırken veri hemen gelirse veri İşlemci Önbelleği içindedir fakat, daha geç gelirse RAM içindedir.
Eğer, veri hemen gelirse şifrenin rakamının 1 olduğunu biliriz çünkü işlemci bunu yürütmüştür.
Ama, geç gelirse hedef veri Önbellek içinde değildir ve işletim sistemi saldırıyı durdurur.

Bu saldırı ile sadece bir şifre rakamı değil direkt bütün şifreleri bulabilirsiniz.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Bu video sizlere Meltdown saldırısı ile bir kullanıcıya ait izinsiz bir resmin okunmasını göstermekte.
İşte olayın boyutu sandığınızdan daha büyük.

Ve saldırının sonucu olarak size ait tüm veriler saldırganlarca okunur.


Spectre saldırıları.

Spectre and Meltdown.png


Ve, şimdi bütün işlemcileri etkileyen genel saldırı olan Spectre saldırsını ele alacağız.
Meltdown sadece belli bir veriyi okurken Spectre ile ne isterseniz okumanız veya erişmeniz mümkündür.
Gelin, başlayalım.

İlk olarak basit bir koşul önerilir.
Ve bu koşul işlemci içinde yürütülür.

[CODE title="Basit bir koşul önerimi"]if (Koşul1) {
int a= cache[adress1];
...
else if (Koşul2) {
int a= cache[adress2];
...
}
else{

{
[/CODE]

Öncelikle işlemciye böyle normal bir koşul önerilir.
Bu koşul bellekte bir adres okumak ister.
Eğer, koşul1 doğruysa adres okunur ve Önbelleğe çağrılır.
Ama, doğru değilse koşul2 yürütülür ve veriler çağrılır.

Bu koşul masum aslen normal bir yazma.
İşlemci RAM ile gereksiz uzun iletişim kurmamak. bu verileri Önbelleğe almakta.
Ama, koşul1 yanlış çıksa dahi işlemci bunu anlayana kadar hedef veriler getirilmekte.
Yani, işlemci koşul1 yanlış olduğunu anlayana kadar koşul2 ve koşul1 verileri Önbelleğe gelmekte.

Normal olarak işlemci bu koşulların yanlış olduğunu anlar.
Ama, sadece fiziksel işlemleri durdurma emri verir.
Örneğin: Yazmaçlar durur.
Ama, Önbelleğe gelen veri geçersiz hale getirilmiyor.


Yani fiziksel işlemler dursa bile Önbellek ve mantıksal işlemler durmuyor.
Asıl zafiyetin ana nedeni işte bu.

Artık, Spectre verinin hedefe gelip gelmediğini anlamak için çapraz kanal saldırısı yapar.

Evet, Spectre artık hedef veriyi Önbellek içinde bırakmayı başardı.
Şimdi, veri Önbellek içindeyse emin olmak için basit bir zamanlama saldırısı yapacaktır.

[CODE title="Zamanlama saldırısı"]int a = cahce[adress][/CODE]

Bu saldırı yapar, sonuçları değerlendirir.
Eğer, hedef veri Önbellek içindeyse erişim süresi kısadır çünkü işlemci hemen cevap verir.
Ama, Korumalı bellek içindeyse erişim uzun sürer.

Bu saldırıyı yapmasının nedeni: hedef verinin Önbellek içinde olup olmadığını anlamak ve sürecin doğru gittiğini kontrol etmek.
Her şey yerinde gidiyorsa saldırıya devam eder ve sonuca ulaşır.

[CODE title="Basit bir koşul önerimi"]if (Koşul1) {
int a= cache[adress1];
...
else if (Koşul2) {
int a= cache[adress2];
...
}
else{

{
[/CODE]

Daha sonra bu kod tekrar yürürlüğe girer ve saldırı aslen okumaması gereken bir veriyi okur.
Size ait bir şifre olabilir veya bir döküman.

İşte her şey bundan ibaret.

Başta önerilen bu koşul yanlıştı fakat, tekrar yürütme yaptığından artık kafası iyice karışan işlemci bütün veriyi verir.
Ve size ait bütün veriler elden gider.


Korunma yolları.

Gerekli sistem güncelleştirmelerini yapmanızı tavsiye ediyorum.
BIOS güncellemek güncel işlemci kullanmak ve açıkları yamalayacak yardımcı yazılımları kullanabilirsiniz.

Son olarak, bu saldırıdan korunma yolları pek bulunmamakta.
Sadece, yazılımsal yamalar yapılmakta.


Sonuç.

Bu gün sizlere meşhur açıkları ve işleyişlerini anlattık.
Artık, soru işaretlerine yer kalmıyor.
Sorularınız olursa sorabilirsiniz.

Ben, @351633.

İyi Sosyal'ler.
 
Son düzenleme:
Güzel makale hocam, bu kadar basit şeyler ile bizim için altın değerindeki veriler gidiyormuş.

Evet, gidiyor.

İşlemci yanlış tahmin etmesi gereksiz sırasız yürütüm yapması nelere bedel işte.

Birileri gelsin anca "Kaspersky kur" desin.

Güvenlik bunların sandığından daha karışık bir şey ama izah edene.
Güzel makale hocam, bu kadar basit şeyler ile bizim için altın değerindeki veriler gidiyormuş.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Bu videoyu izle ve sağ tarafa bak oraya bakarsan okunan verileri görebilirsin.
 
Evet, gidiyor.

İşlemci yanlış tahmin etmesi gereksiz sırasız yürütüm yapması nelere bedel işte.

Birileri gelsin anca "Kaspersky kur" desin.

Güvenlik bunların sandığından daha karışık bir şey ama izah edene.


Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Bu videoyu izle ve sağ tarafa bak oraya bakarsan okunan verileri görebilirsin.
Hocam bu saldırıları yapanlar genelde Linux ya da Windows kullanmasının bir önemi var mı yoksa önemli olan yaptıkları iş mi?
 
Faydalı bilgi için teşekkür ederim. Ben bu olaya performans olarak bakıyordum. İşin güvenlik boyutu daha ciddiymiş. Eskiden "amaan kim bize böyle saldıracak." derdim. Ta ki arkadaşımın başına gelene kadar.
Eskiden böyle bir eğitim eklemiştim Udemy'de fakat ilgilenmemiştim.

1627135059618.png


Şimdi daha çok ilgimi çekmeye başladı.
 
Faydalı bilgi için teşekkür ederim. Ben bu olaya performans olarak bakıyordum. İşin güvenlik boyutu daha ciddiymiş. Eskiden "amaan kim bize böyle saldıracak." derdim. Ta ki arkadaşımın başına gelene kadar.
Eskiden böyle bir eğitim eklemiştim Udemy'de fakat ilgilenmemiştim.

Eki Görüntüle 1116929

Şimdi daha çok ilgimi çekmeye başladı.

Gelmez demeyin bu açık yüzünden şirketler dahil kocaman veri kayıpları yaşanmakta.
 

Geri
Yukarı