15Sep

ASLR Nedir ve Bilgisayarınızı Nasıl Güvenli Tutuyor?

aslr_cpu

Adres Uzayı Düzen Rasgelemesi( ASLR), ilk önce 2001'de uygulanan işletim sistemlerinde kullanılan bir güvenlik tekniğidir. Tüm önemli işletim sistemlerinin( iOS, Android, Windows, MacOS ve Linux) mevcut sürümleri ASLR korumasına sahiptir. Fakat geçen hafta, ASLR'yi atlamak için yeni bir yöntem bulundu. Peki, endişelenmeli misin?

Düşük seviyeli bir programlamaya sahip olmayanlara, ASLR kafa karıştırıcı olabilir. Anlamak için önce sanal belleği anlamalısınız.

Sanal Bellek Nedir?

Sanal Bellek birçok fayda içeren bir bellek yönetim tekniğidir, ancak öncelikle programlamayı kolaylaştırmak için oluşturulmuştur.4 GB RAM'li bir bilgisayarda Google Chrome, Microsoft Word ve birkaç başka programın açık olduğunu düşünün. Bir bütün olarak, bu bilgisayardaki programlar 4 GB'den fazla RAM kullanıyor. Bununla birlikte, tüm programlar her zaman aktif olmayacak ya da o RAM'e eşzamanlı erişime ihtiyaç duymayacaktır.

İşletim sistemi, sayfaları olarak adlandırılan programlara bellek yığını ayırır. Tüm sayfaları bir defada saklamaya yetecek kadar RAM yoksa, en az ihtiyaç duyulan sayfalar daha yavaş( ama daha geniş) sabit sürücüye kaydedilir. Saklanan sayfalara ihtiyaç duyulduğunda, şu anda RAM'de daha az gerekli sayfa olan boşlukları değiştirirler. Bu işleme çağrılama denir ve adını Windows'ta pagefile.sys dosyasına borç verir.

Sanal bellek, programların kendi belleğini yönetmesini kolaylaştırır ve daha da güvenli hale getirir. Programların, diğer programların nerede veri depoladığını veya ne kadar RAM bıraktığını merak etmeleri gerekmez.İşletim sisteminden ek belleği isteyebilirler( veya kullanılmayan belleği geri getirirler).Tüm programlar, sanal adresler olarak adlandırılan tek kullanımlık bellek adresleri yığınını görürler. Programın başka bir programın belleğine bakmasına izin verilmez.

Bir programın belleğe erişmesi gerektiğinde, işletim sistemine sanal bir adres verir.İşletim sistemi, CPU'nun bellek yönetim birimi( MMU) ile iletişim kurar. MMU, sanal ve fiziksel adresler arasında çevirir ve bu bilgileri işletim sistemine döndürür. Hiçbir noktada program RAM ile doğrudan etkileşim kurmaz.

ASLR Nedir?

Adres Uzayı Düzen Rasgelemesi( ASLR) öncelikle arabellek taşması saldırılarına karşı koruma sağlamak için kullanılır. Bir arabellek taşması durumunda, saldırganlar işleyebileceği kadar önemsiz veri olarak bir işlev gönderir ve onu kötü niyetli bir yük alır. Yük, programın erişmek istediği verilerin üzerine yazacaktır. Kodun başka bir noktasına atlamak için kullanılan talimatlar genel bir yüktür.Örneğin iOS 4'ü jailbreaklemek için kullanılan ünlü JailbreakMe yöntemi, Apple'ın iOS 4.3'e ASLR eklemesine neden olan bir arabellek taşması saldırısı kullandı.

Arabellek taşmaları, bir saldırganın programın her bölümünün belleğe yerleştirildiğini bilmesini gerektirir. Bunu anlamak zor bir deneme yanılma işlemidir. Bunu belirledikten sonra, bir yük hazırlayarak enjekte etmek için uygun bir yer bulmaları gerekir. Saldırgan, hedef kodun nerede olduğunu bilmiyorsa, saldırganın bu kodu kullanması zor veya imkansız olabilir.

ASLR, bellekte programın farklı bölümlerinin yerlerini randomize etmek için sanal bellek yönetimi ile birlikte çalışır. Program her çalıştırıldığında, bileşenler( yığın, yığın ve kitaplıklar dahil olmak üzere) sanal bellekteki farklı bir adrese taşınır. Saldırganlar artık hedefleri deneme yanılma yoluyla nerede öğrenebilirler, zira her seferinde adres farklı olacak. Genellikle, uygulamalar ASLR desteği ile derlenmelidir, ancak bu varsayılan duruma gelmektedir ve Android 5.0 ve üzeri sürümlerde bile gereklidir.

Yani ASLR Hâlâ Sizi Korumuyor mu?

Geçtiğimiz Salı, SUNY Binghamton ve Riverside Üniversitesi'nden araştırmacılar, ASLR Üzerinden Geçiş adlı bir bildiri sundular: ASLR'yi Atlamak İçin Şube Tahmin Edicilere Saldırı.Makale Şube Hedef Tamponuna( BTB) saldırmanın bir yolunu ayrıntılarıyla anlattı.BTB, sonuçları tahmin ederek if ifadelerini hızlandıran işlemcinin bir parçasıdır. Yazarlar yöntemini kullanarak, çalışan bir programda bilinen branş talimatlarının yerlerini belirlemek mümkündür. Söz konusu saldırı, bir Intel Haswell işlemcisi( ilk önce 2013'de piyasaya sürülen) içeren bir Linux makinesinde gerçekleştirildi, ancak muhtemelen modern bir işletim sistemine ve işlemcisine uygulanabilir.

Buna göre mutlaka umutsuz olmamalısın. Makale, donanım ve işletim sistemi geliştiricileri tarafından bu tehdidi azaltmak için birkaç yol önerdi. Daha yeni, ince taneli ASLR teknikleri saldırganın daha fazla çaba gerektirir ve entropi miktarının( rasgele) arttırılması Jump Over saldırılarını başarısız kılar. Büyük olasılıkla, daha yeni işletim sistemleri ve işlemcileri bu saldırıya karşı bağışık olacak.

Peki için yapmak için bırakılan şey nedir? Atlamak Üzerinden Geçiş yeni ve henüz vahşi olarak fark edilmedi. Saldırganlar onu kullandığında, bu kusur bir saldırganın cihazınızda olabilecek olası zararı artıracaktır. Bu erişim seviyesi eşi benzeri değildir;Microsoft ve Apple yalnızca 2007 ve sonrası yayınlanan işletim sistemlerinde ASLR'yi uyguladı.Bu saldırı tarzı yaygınlaşsa bile, Windows XP'nin günlerine döndüğünüzden daha kötüsü olmayacaksınız.

Aktüel saldırganların zarar görmesi için kodlarını cihazınızda alması gerektiğini unutmayın. Bu kusur, size enfekte etmek için ek yollar sağlamaz. Her zaman olduğu gibi en iyi güvenlik yöntemlerini takip etmelisiniz. Antivirüs kullanın, kabataslak web sitelerinden ve programlardan uzak durun ve yazılımınızı güncel tutun. Bu adımları izleyerek ve kötü niyetli aktörleri bilgisayarınızdan uzak tutarak, şimdiye kadar olduğunuz kadar güvende olursunuz.

Resim Kredisi: Steve / Flickr