iOS işletim sistemi güvenlik açısından bir çok özellik barındırıyor. Her geçen gün yapılan iyileştirmelerle bu güvenlik mekanizmalarını aşmak daha da zor bir hal alıyor. Bu yazıda kısaca iOS işletim sisteminde yer alan güvenlik mekanizmalarından ve özelliklerinden bahsetmek istiyorum.

-ios_securitypng

1.) Öncelikle iOS'da saldırı yüzeyini düşürmek amacıyla Flash desteği verilmiyor. Birçok iOS kullanıcısının en çok şikayet ettiği konu olan Flash desteğinin olmaması konusuna bu açıdan bakıldığında gayet makul bir adım olarak görülebiliyor. Bunun yanı sıra PDF render yapan kodların da birçok özelliği kısılmış durumda, bu sayede güvenlik arttırılmaya çalışılıyor.

2.) Kullanıcı Hakları Kontrolü ile iOS'da kullanıcı ile etkileşimi olan ve app store'dan indirilen uygulamalar mobile kullanıcısı ile çalışıyor. Sadece sistemdeki kritik process'ler root hakkıyla çalışıyor. Bu sayede herhangi bir app'de bir açıklık çıkarsa, saldırganın sadece o process'in veya o app'in çalıştığı haklar ile işlem yapabilir hale gelmesi ve sistem seviyesinde kritik işlemleri gerçekleştirememesi amaçlanıyor.

3.) Kod İmzalama (Code Signing) mekanizması ile bir kod parçası çalıştırılmadan önce onun güvenilir bir kaynak tarafından imzalanıp imzalanmadığı kotrol ediliyor. Tüm kütüphane ve binary'ler de çalıştırılmadan önce imza kontrolünden geçriliyor. Bu saydede herhangi bir app çalışmaya başladıktan sonra internetten bir kod parçası indirse bile bu kod parçası imza kontrolünden geçemediği için çalıştırılamıyor. JailBreak yapmak bu code signing mekanizmasını devre dışı bırakarak imzalanmamış kodların çalıştırılabilir hale getirilmesini sağlıyor.

4.) Data Execution Prevention - DEP sayesinde bellekte çalıştırılabilir kod ile data (veri) birdirinden ayrılıyor. ve sadece çalıştırılabilir kodların çalıştırılmasına izin veriyor. Data olarak nitelendirilen kısımdaki kodların çalıştırılmasına izin verilmiyor. Bu sayede RAM'e bir şekilde yüklenen zararlı kod data olarak görüldüğünden çalıştırılamıyor. DEP'i atlatmak için Return Oriented Programming ROPkullanılıyor. ROP'u kısaca, halihazırdaki kodların bazı parçalarının tekrar kullanılarak olağan işlemeri dışında farklı işlemler yaptırılması olarak özetleyebliriz (Reusing existing code snippets). Ayrıca Kod imzalama (Code Signing) sayesinde herhangi bir imzasız kodun çalıştırılması da mümkün değil olmuyor. Bu yüzden hem Code Signing hem de DEP sayesinde iOS için istismar kodu geliştirmek çok zor bir süreç haline geliyor.

5.) Address Space Layout Randomization - ASLR sayesinde ROP'un önüne geçilmeye çalışılıyor. ROP'da kod parçalarını tekrar kullanmaktan bahsedilmekteydi. Ancak kullanılmak istenilen kod parçasının çalıştırılabilmesi için bellekteki lokasyonunu bilmemiz gerekiyor. İşte ASLR da tam bu noktada devreye giriyor. Binary'ler, kütüphaneler, dinamik linkerlar, stack, ve heap bellek addresleri randomize ediliyor. Böylece DEP ile ASLR birlikte ciddi bir güvenlik önlemi sağlamış oluyor. Saldırgan ancak bellek sızmaları (memory leak) ile kod parçalarının yerlerini tespit edebilir ki bu da çok zor bir süreç anlamına geliyor.

6.) Sandboxing sayesinde kullanıcı hakları kontrolünün üzerine bir katman daha güvenlik getirilmiş oluyor. Aynı kullanıcı haklarıyla çalışsalar dahi uygulamalar sadece kendilerine izin verilen sandbox'un erişime izin verdği kaynaklara erişebiliyorlar. Örneğin SMS uygulaması ile web tarayıcı uygulaması ikisi de mobile kullanıcısı ile çalışıyorlar. Ancak SMS uygulaması browser cookie'lerine erişemiyor ya da borwser sms gönderemiyor. Bu durumda herhangi bir uygulama Code Signing, DEP, ASLR önlemlerini bir şekilde aşıp ROP ile kendi kodunu çalıştırabilir hale gelse dahi sadece kendi sandbox'ı içerisinde kalıyor ve sandbox'ın dışındaki kaynaklara erişemez hale geliyor.

Görüldüğü üzere iOS isşletim sistemi çok çeşitli güvenlik mekanizmalarına ve güvenlik özelliklerine sahip. Her güncellemede yeni güvenlik fonksiyonları ve özellikleri de eklenmeye devam ediyor. Ancak saldırganlar da bu güvenlik mekanizmalarını atlatmanın yollarıını bulmak adına çalışmalarını hız kesmeden devam ettiriyor.