
iOS’te, iPadOS’te ve visionOS’te çalıştırma sırasında işlem güvenliği
iOS, iPadOS ve visionOS; “sandbox”, kesin yetki anahtarları ve Adres Alanı Yerleşimi Rasgele Dağıtımı (ASLR) kullanarak çalıştırma sırasında güvenliği sağlamaya yardımcı olur.
Sandbox ile koruma
Tüm üçüncü parti uygulamalar, diğer uygulamalar tarafından saklanan dosyalara erişmelerini veya aygıtta değişiklik yapmalarını sınırlamak için "korumalı" hâle getirilir. Sandbox ile koruma, uygulamaların diğer uygulamalar tarafından saklanan bilgileri toplamasını veya değiştirmesini engellemek için tasarlanmıştır. Her uygulamanın kendi dosyaları için benzersiz bir ana dizini bulunur ve bu ana dizin uygulama yüklendiğinde rasgele atanır. Bir üçüncü parti uygulamanın kendisine ait olmayan bilgilere erişmesi gerekirse bunu yalnızca iOS, iPadOS ve visionOS tarafından açıkça sağlanan servisleri kullanarak yapabilir.
Sistem dosyaları ve kaynakları da kullanıcıların uygulamalarından korunur. Çoğu iOS, iPadOS ve visionOS sistem dosyası ve kaynağı, tüm üçüncü parti uygulamalar gibi ayrıcalıksız kullanıcı “mobile” olarak çalıştırılır. İşletim sistemi bölüntüsünün tamamı salt okunur olarak bağlanır. Uzaktan oturum açma servisleri gibi gereksiz araçlar sistem yazılımına dahil değildir ve API’ler uygulamaların diğer uygulamaları ya da iOS’i, iPadOS’i ve visionOS’i değiştirmek için kendi ayrıcalıklarını artırmasına izin vermez.
Yetki anahtarlarının kullanımı
Üçüncü parti uygulamaların kullanıcı bilgileri ile iCloud ve genişletilebilirlik gibi özelliklere erişimi, kesin yetki anahtarları kullanılarak denetlenir. Yetki anahtarları, bir uygulamaya kayıtlı anahtar-değer çiftleridir ve UNIX kullanıcı kimliği gibi çalıştırma sırasındaki faktörlerin ötesinde kimlik doğrulamaya izin verir. Yetki anahtarları dijital olarak imzalandığından değiştirilemez. Yetki anahtarları, sistem uygulamaları ve arka plan programları tarafından, normalde işlemin root erişimiyle çalıştırılmasını gerektirecek özel ayrıcalıklı işlemleri gerçekleştirmek için yaygın şekilde kullanılır. Bu, saldırıya uğramış bir sistem uygulaması veya arka plan programının ayrıcalık artırması olasılığını önemli ölçüde azaltır.
Bunlara ek olarak, uygulamalar yalnızca sistem tarafından sağlanan API’ler aracılığıyla arka planda işlem gerçekleştirebilir. Bu, uygulamaların performansı düşürmeden veya pil ömrünü ciddi ölçüde etkilemeden çalışmayı sürdürmesini sağlar.
Adres Alanı Yerleşimi Rasgele Dağıtımı
Adres Alanı Yerleşimi Rasgele Dağıtımı (ASLR), bellek bozulması hatalarının kötüye kullanımına karşı koruma sağlamaya yardımcı olur. Yerleşik uygulamalar, tüm bellek bölgelerinin başlatmadan sonra rasgele dağıtılmasına yardımcı olmak için ASLR’yi kullanır. Başlatmadan sonra çalışmanın yanı sıra ASLR, çalıştırılabilir kodların, sistem kitaplıklarının ve ilgili programlama yapılarının bellek adreslerini rasgele düzenler ve pek çok kötüye kullanım olasılığını azaltır. Örneğin, bir return-to-libc saldırısı, yığın ve sistem kitaplıklarının bellek adreslerini değiştirerek bir aygıtın kötü amaçlı kodları çalıştırmasını sağlamaya çalışır. Bunların yerleşiminin rasgele hâle getirilmesi, saldırının özellikle birden fazla aygıtta çalıştırılmasını daha da zorlaştırır. Xcode ve iOS veya iPadOS geliştirme ortamları, üçüncü parti programları otomatik olarak ASLR desteği açık şekilde derler.
Execute Never özelliği
iOS ve iPadOS, ARM’nin bellek sayfalarını çalıştırılamaz olarak işaretleyen Execute Never (XN) özelliğini kullanarak daha fazla koruma sağlar. Hem yazılabilir hem de çalıştırılabilir olarak işaretlenen bellek sayfaları, yalnızca çok sıkı denetlenen koşullarda uygulamalar tarafından kullanılabilir: Çekirdek, yalnızca Apple’a özel dinamik kod imzalama yetki anahtarının olup olmadığını denetler. Bundan sonra bile, çalıştırılabilir ve yazılabilir bir sayfa isteğinde bulunabilmek için yalnızca tek bir mmap
çağrısı yapılabilir ve sayfaya rasgele dağıtılmış bir adres verilir. Safari bu işlevi JavaScript just-in-time (JIT) derleyicisi için kullanır.