Adres Alanı Düzeni Randomizasyonu (ASLR), ilk olarak 2001 yılında uygulanan işletim sistemlerinde kullanılan bir güvenlik tekniğidir. Tüm büyük işletim sistemlerinin (iOS, Android, Windows, macOS ve Linux) mevcut sürümlerinde ASLR koruması bulunur. Ancak geçen hafta, ASLR'yi atlamanın yeni bir yöntemi bulunmuş . Öyleyse endişelenmeli misin?
Düşük seviyede programlama geçmişi olmayanlar için ASLR kafa karıştırıcı olabilir. Bunu anlamak için önce sanal belleği anlamalısınız.
Sanal Bellek Nedir?
Sanal Bellek, birçok faydası olan bir bellek yönetimi tekniğidir, ancak öncelikle programlamayı kolaylaştırmak için oluşturulmuştur. 4 GB RAM'e sahip bir bilgisayarda Google Chrome, Microsoft Word ve diğer birkaç programın açık olduğunu hayal edin. Bir bütün olarak, bu bilgisayardaki programlar 4 GB'den çok daha fazla RAM kullanır. Ancak, tüm programlar her zaman aktif olmayacak veya bu RAM'e aynı anda erişime gerek duymayacaktır.
İşletim sistemi, adı verilen programlara bellek parçaları ayırır. . Tüm sayfaları aynı anda depolamak için yeterli RAM yoksa, ihtiyaç duyulma olasılığı en düşük olan sayfalar daha yavaş (ancak daha geniş) sabit sürücüde depolanır. Depolanan sayfalara ihtiyaç duyulduğunda, şu anda RAM'de bulunan daha az gerekli sayfalarla boşluklar arasında geçiş yaparlar. Bu işleme sayfalama denir ve adını Windows'ta pagefile.sys dosyası .
Sanal bellek, programların kendi belleğini yönetmesini kolaylaştırır ve ayrıca onları daha güvenli hale getirir. Programların, diğer programların nerede veri depoladığı veya ne kadar RAM kaldığı konusunda endişelenmesine gerek yoktur. İşletim sisteminden gerektiğinde ek bellek isteyebilirler (veya kullanılmayan belleği iade edebilirler). Programın gördüğü tek şey, sanal adresler adı verilen özel kullanımı için tek bir sürekli bellek adresleri yığınıdır. 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 çeviri yaparak bu bilgileri işletim sistemine döndürür. Program hiçbir noktada doğrudan RAM ile etkileşime girmez.
ASLR nedir?
Adres Alanı Düzeni Randomizasyonu (ASLR), öncelikle arabellek taşması saldırılarına karşı koruma sağlamak için kullanılır. Bir arabellek taşmasında, saldırganlar bir işlevi işleyebildiği kadar önemsiz veri ve ardından kötü niyetli bir yük ile besler. Yük, programın erişmeyi amaçladığı verilerin üzerine yazacaktır. Kodda başka bir noktaya atlama talimatları yaygın bir yüktür. Ünlü JailbreakMe iOS 4 jailbreak yöntemi örneğin, bir arabellek taşması saldırısı kullandı ve Apple'dan iOS 4.3'e ASLR eklemesini istedi.
Arabellek taşmaları, bir saldırganın programın her bir parçasının bellekte nerede bulunduğunu bilmesini gerektirir. Bunu anlamak genellikle zor bir deneme yanılma sürecidir. Bunu belirledikten sonra, bir faydalı yük oluşturmalı ve onu enjekte etmek için uygun bir yer bulmalıdırlar. Saldırgan hedef kodunun nerede olduğunu bilmiyorsa, onu kullanmak zor veya imkansız olabilir.
ASLR, bellekteki programın farklı bölümlerinin konumlarını rastgele hale getirmek için sanal bellek yönetimiyle birlikte çalışır. Program her çalıştırıldığında, bileşenler (yığın, yığın ve kitaplıklar dahil) sanal bellekte farklı bir adrese taşınır. Saldırganlar artık hedeflerinin nerede olduğunu deneme yanılma yoluyla öğrenemezler çünkü adres her seferinde farklı olacaktır. Genellikle uygulamaların ASLR desteği ile derlenmesi gerekir, ancak bu varsayılan hale geliyor ve hatta Android 5.0 ve sonraki sürümlerde gereklidir.
Peki ASLR Sizi Hala Koruyor mu?
Geçen Salı, SUNY Binghamton ve University of California, Riverside'dan araştırmacılar, ASLR'nin Üzerinden Atlama: ASLR'yi Atlatmak İçin Şube Tahmin Edicilerine Saldırı . Makale, Şube Hedef Tamponuna (BTB) saldırmanın bir yolunu ayrıntılarıyla anlatıyor. BTB, sonucu tahmin ederek ifadeler varsa hızlanan işlemcinin bir parçasıdır. Yazarların yöntemini kullanarak, çalışan bir programda bilinen şube talimatlarının yerlerini belirlemek mümkündür. Söz konusu saldırı, Intel Haswell işlemciye sahip bir Linux makinesinde gerçekleştirildi (ilk olarak 2013'te piyasaya sürüldü), ancak muhtemelen herhangi bir modern işletim sistemi ve işlemciye uygulanabilir.
Bununla birlikte, mutlaka umutsuzluğa kapılmamalısınız. Belge, donanım ve işletim sistemi geliştiricilerinin bu tehdidi azaltabilecekleri birkaç yol sunuyordu. Daha yeni, ince taneli ASLR teknikleri saldırganın daha fazla çaba göstermesini gerektirecek ve entropi miktarını (rastgelelik) artırmak, Jump Over saldırısını imkansız hale getirebilir. Büyük olasılıkla, daha yeni işletim sistemleri ve işlemciler bu saldırıya karşı bağışık olacaktır.
Öyleyse ne için kaldı yapmak? Jump Over bypass yenidir ve henüz vahşi doğada tespit edilmemiştir. Saldırganlar onu kullandığında, kusur, bir saldırganın cihazınızda verebileceği potansiyel hasarı artıracaktır. Bu erişim düzeyi emsalsiz değildir; Microsoft ve Apple, 2007 ve sonrasında yayımlanan işletim sistemlerinde yalnızca ASLR'yi uyguladı. Bu saldırı tarzı sıradan hale gelse bile, Windows XP günlerinde olduğundan daha kötü durumda olmayacaksınız.
Saldırganların herhangi bir zarar vermeleri için yine de kodlarını cihazınıza almaları gerektiğini unutmayın. Bu kusur, onlara size bulaştırmak için herhangi bir ek yol sağlamaz. Her zamanki gibi yapmalısın en iyi güvenlik uygulamalarını takip edin . Antivirüs kullanın, karmaşık web sitelerinden ve programlardan uzak durun ve yazılımınızı güncel tutun. Bu adımları izleyerek ve kötü niyetli oyuncuları bilgisayarınızdan uzak tutarak, hiç olmadığı kadar güvende olacaksınız.
Resim Kredisi: Steve / Flickr