Merhaba Arkadaşlar Bu Makalemizde Sizlere İOS Güvenlik Mekanizmasından Bahsedeceğiz.
iOSda saldırı yüzeyini düşürmek amacıyla iOSda 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üroyuz. 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.
iOSda shell yok. Bu sayede herhangi bir appda bir açıklık bulunursa shell alamıyoruz. Sadece o appin hakkıyla işlem yapabiliyor oluyoruz.
iOSda kullanıcı ile etkileşimi olan ve app storedan indirilen uygulamalar mobile kullanıcısı ile çalışıyor. Sadece sistemdeki kritik processler root hakkıyla çalışıyor. Bu sayede herhangi bir appde bir açıklık çıkarsa, saldırganın sadece o processin veya o appin çalıştığı haklar ile işlem yapabilir hale gelmesi ve sistem seviyesinde kritik işlemleri gerçekleştirememesi amaçlanıyor.
Code Signing mekanizması ile bir kod parçası çalıştırılmadan önce onun güvenilir bir kaynak tarafından imzalanıp imzalanmadığı kotrol edilir. Tüm kütüphane ve binaryler çalıştırılmadan önce imza kontrolünden geçrilmektedir. Bu saydede herhangi bir app çalışmaya başladıktan sonra internetten bir kod parçası indirip onu çalıştıramaz. Çünkü o kod parçası imza kontrolünden geçemez. Bu code signing işlemini atlatmak için jailbreak yapılıyor. Bu sayede güvenilir olmayan kaynaklardan gelen kodlar çalıştırılabilir hale geliyor.
DEP Data Execution Prevention sayesinde bellekte çalıştırabililr code ile data birdirinden ayrılıyor. DEP 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 RAMe bir şekilde yüklenen payload data olarak görüldüğünden çalıştırılamıyor. DEPi atlatmak için Return Oriented Programming ROP kullanılıyor. ROPu 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 Code Signing sayesinde herhangi bir imzasız kodun çalıştırılması da mümkün değil. Bu yüzden hem Code Signing hem de DEP yüzünden iOS için exploit development çok zor bir süreç haline geliyor.
Address Space Layout Randomization ASLR sayesinde ROPun önüne geçilmeye çalışılıyor.Ancak kullanılmak istenilen kod parçasının bellekteki lokasyonunu bilmemiz gerekiyor ki çalıştırabilelim. İşte ASLR da tam bu noktada devreye giriyor. Binaryler, kütüphaneler, dynamic linkerlar, stack, and heap bellek addresleri ramdoize ediliyor. Böylece DEP ile ASLR birlikte ciddi bir güvenlik önlemi sağlamış oluyor. Saldırgan ancak memory leakler ile kod parçalarının yerlerini tespit edebilir ki bu da çok zor bir süreç anlamına geliyor.
Sandboxing sayesinde kullanıcı hakları kontrolünün üzerine bir katman daha güvenlik getirilmiş oluyor. Aynı user haklarıyla çalışsalar dahi uygulamalar sadece kendilerine izin verilen sandboxun erişime izin verdği kaynaklara erişebiliyorlar. Örneğin SMS applikasyonu ile web browser ikisi de mobile kullanıcısı ile çalışıyorlar. Ancak SMS uygulaması browser cookielerine 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.
iOSda saldırı yüzeyini düşürmek amacıyla iOSda 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üroyuz. 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.
iOSda shell yok. Bu sayede herhangi bir appda bir açıklık bulunursa shell alamıyoruz. Sadece o appin hakkıyla işlem yapabiliyor oluyoruz.
iOSda kullanıcı ile etkileşimi olan ve app storedan indirilen uygulamalar mobile kullanıcısı ile çalışıyor. Sadece sistemdeki kritik processler root hakkıyla çalışıyor. Bu sayede herhangi bir appde bir açıklık çıkarsa, saldırganın sadece o processin veya o appin çalıştığı haklar ile işlem yapabilir hale gelmesi ve sistem seviyesinde kritik işlemleri gerçekleştirememesi amaçlanıyor.
Code Signing mekanizması ile bir kod parçası çalıştırılmadan önce onun güvenilir bir kaynak tarafından imzalanıp imzalanmadığı kotrol edilir. Tüm kütüphane ve binaryler çalıştırılmadan önce imza kontrolünden geçrilmektedir. Bu saydede herhangi bir app çalışmaya başladıktan sonra internetten bir kod parçası indirip onu çalıştıramaz. Çünkü o kod parçası imza kontrolünden geçemez. Bu code signing işlemini atlatmak için jailbreak yapılıyor. Bu sayede güvenilir olmayan kaynaklardan gelen kodlar çalıştırılabilir hale geliyor.
DEP Data Execution Prevention sayesinde bellekte çalıştırabililr code ile data birdirinden ayrılıyor. DEP 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 RAMe bir şekilde yüklenen payload data olarak görüldüğünden çalıştırılamıyor. DEPi atlatmak için Return Oriented Programming ROP kullanılıyor. ROPu 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 Code Signing sayesinde herhangi bir imzasız kodun çalıştırılması da mümkün değil. Bu yüzden hem Code Signing hem de DEP yüzünden iOS için exploit development çok zor bir süreç haline geliyor.
Address Space Layout Randomization ASLR sayesinde ROPun önüne geçilmeye çalışılıyor.Ancak kullanılmak istenilen kod parçasının bellekteki lokasyonunu bilmemiz gerekiyor ki çalıştırabilelim. İşte ASLR da tam bu noktada devreye giriyor. Binaryler, kütüphaneler, dynamic linkerlar, stack, and heap bellek addresleri ramdoize ediliyor. Böylece DEP ile ASLR birlikte ciddi bir güvenlik önlemi sağlamış oluyor. Saldırgan ancak memory leakler ile kod parçalarının yerlerini tespit edebilir ki bu da çok zor bir süreç anlamına geliyor.
Sandboxing sayesinde kullanıcı hakları kontrolünün üzerine bir katman daha güvenlik getirilmiş oluyor. Aynı user haklarıyla çalışsalar dahi uygulamalar sadece kendilerine izin verilen sandboxun erişime izin verdği kaynaklara erişebiliyorlar. Örneğin SMS applikasyonu ile web browser ikisi de mobile kullanıcısı ile çalışıyorlar. Ancak SMS uygulaması browser cookielerine 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.