
İşletim sistemi bütünlüğü
Apple, işletim sistemi yazılımını özünde güvenlikle tasarlar. Bu tasarım, güvenli başlatmayı etkinleştiren bir donanım güven kökü ile hızlı ve güvenli bir yazılım güncelleme süreci içerir. Apple işletim sistemleri, işletim sisteminin çalışması sırasında kötüye kullanmayı engellemeye yardımcı olmak için belirli bir amaca uygun geliştirilmiş Silicon tabanlı donanım yeteneklerini de kullanır. Bu çalıştırma sırası özellikleri, çalıştırılırken güvenilir kodun bütünlüğünü korur. Apple’ın işletim sistemi yazılımı, ister kötü amaçlı bir yazılımdan ister web’den isterse başka bir kanaldan gelsin saldırıları ve kötü amaçlı teknikleri azaltmaya yardımcı olur. Bu korumalar iOS, iPadOS, Apple Silicon yongalı bir Mac’teki macOS, tvOS, visionOS ve watchOS de dahil olmak üzere, desteklenen Apple tasarımı SoC’lere sahip aygıtlarda bulunur.
Özellik | A10 | A11, S3 | A12-A14 S4-S10 | A15-A18 | M1 | M2-M4 | A19 M5 |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
1 |
2 |
|
| |
|
|
|
|
|
2 |
2 | |
Geliştirilmiş Bellek Etiketleme Genişletmesi ile Bellek Bütünlüğünü Sağlama |
|
|
|
|
|
|
|
1: Güvenli Sayfa Tablosu Monitörü (SPTM); A15 veya daha yeni ve M2 veya daha yeni SoC’ler üzerinde desteklenir ve desteklenen platformlarda Sayfa Koruma Katmanı’nın (PPL) yerine geçer.
2: Sayfa Koruma Katmanı (PPL) ve Güvenli Sayfa Tablosu Monitörü (SPTM), macOS hariç tüm platformlarda imzalanmış ve güvenilir kodların çalıştırılmasını zorunlu tutar (çünkü macOS herhangi bir kodu çalıştıracak şekilde tasarlanmıştır). Sayfa tablolarını koruma da dahil olmak üzere diğer tüm güvenlik özellikleri desteklenen platformların hepsinde bulunur.
Çekirdek Bütünlük Koruması
İşletim sistemi çekirdeği ilklendirmeyi tamamladıktan sonra çekirdekte ve sürücü kodunda değişiklikleri engellemeye yardımcı olmak için Çekirdek Bütünlük Koruması (KIP) etkinleştirilir. Bellek denetleyici, iBoot’un çekirdeği ve çekirdek genişletmelerini yüklemek için kullandığı bir korumalı fiziksel bellek bölgesi sağlar. Başlatma tamamlandıktan sonra bellek denetleyici, korumalı fiziksel bellek bölgesine yazma işlemlerini reddeder. Uygulama işlemcisinin Bellek Yönetimi Birimi (MMU), korumalı bellek bölgesinin dışındaki fiziksel bellekten ayrıcalıklı kod eşlemeyi ve çekirdek belleği bölgesi içindeki fiziksel belleğin yazılabilir eşlemelerini önlemeye yardımcı olmak için ayarlanmıştır.
Yeniden yapılandırmayı önlemek için, KIP’yi etkinleştirmek amacıyla kullanılan donanım, başlatma işlemi tamamlandıktan sonra kilitlenir.
Hızlı İzin Sınırlamaları
Apple A11 Bionic ve S3 SoC’leri ile başlayarak yeni bir donanım temel öğesi tanıtılmıştır. Hızlı İzin Sınırlamaları olarak adlandırılan bu temel öğe, izinleri işlem parçacığına göre çabucak sınırlayan bir CPU yazmacı içerir. Hızlı İzin Sınırlamaları (APRR yazmaçları olarak da bilinir) ile desteklenen işletim sistemleri, sistem çağrısı ve sayfa tablosu yazma/boşaltma maliyeti olmadan çalıştırma izinlerini bellekten silebilir. Bu yazmaçlar, özellikle çalışma zamanında derlenen (JIT derlemesi) kodlar için web’den saldırıları bir kat daha azaltır çünkü bellek okunurken ve yazılırken aynı zamanda etkin bir şekilde çalıştırılamaz.
Sistem Yardımcı İşlemcisi Bütünlük Koruması
Yardımcı işlemci firmware’i birçok kritik sistem görevini yönetir (örneğin Secure Enclave, görüntü sensörü işlemcisi ve hareket yardımcı işlemcisi). Bu nedenle bu firmware’in güvenliği de genel sistemin güvenliğinin önemli bir bölümüdür. Apple, yardımcı işlemci firmware’inin değiştirilmesini engellemek için Sistem Yardımcı İşlemcisi Bütünlük Koruması (SCIP) adında bir mekanizma kullanır.
SCIP daha çok KIP gibi çalışır: Başlatma zamanında, iBoot her yardımcı işlemcinin firmware’ini KIP bölgesinden ayrılmış korumalı bir bellek bölgesine yükler. iBoot her yardımcı işlemcinin bellek birimini aşağıdakileri engellemeye yardımcı olacak şekilde ayarlar:
Kendi korumalı bellek bölgesinin dışındaki çalıştırılabilir eşlemeler
Kendi korumalı bellek bölgesinin içindeki yazılabilir eşlemeler
Ayrıca başlatma zamanında Secure Enclave için SCIP’yi yapılandırmak amacıyla da Secure Enclave işletim sistemi kullanılır. Başlatma işlemi tamamlandıktan sonra, SCIP’yi etkinleştirmek için kullanılan donanım kilitlenir. Bu, yeniden ayarlanmayı önlemek için tasarlanmıştır.
İşaretçi Kimlik Doğrulama Kodları
İşaretçi Kimlik Doğrulama Kodları (PAC’ler), bellek bozulması hatalarının kötüye kullanımına karşı koruma sağlar. Sistem yazılımı ve yerleşik uygulamalar, işlev işaretçilerinin ve iade adreslerinin (kod işaretçileri) değiştirilmesini önlemeye yardımcı olmak için PAC’yi kullanır. PAC, çekirdek yönergelerini ve verilerini imzalamak için 128 bitlik beş gizli değer kullanır ve her kullanıcı alanı işleminin kendi B anahtarı vardır. Öğelere, aşağıda belirtildiği gibi salt ve imza eklenir.
Öğe | Anahtar | Salt |
|---|---|---|
İşlev İade Adresi | IB | Depolama adresi |
İşlev İşaretçileri | IA | 0 |
Blok Çağırma İşlevi | IA | Depolama adresi |
Blok Açıklayıcı İşaretçisi | DA | Depolama adresi + 0xC0BB |
Objective-C Metot Önbelleği | IB | Depolama adresi + Sınıf + Seçici |
Objective-C Isa İşaretçisi | DA | Depolama adresi + 0x6AE1 |
Objective-C Super İşaretçisi | DA | Depolama adresi + 0xB5AB |
Seçici Türü Objective-C ivars | DB | Depolama adresi + 0x57C2 |
Objective-C Salt Okunur Sınıfı Veri İşaretçisi | DA | Depolama adresi + 0x61F8 |
C++ V Tablosu Girişleri | IA | Depolama adresi + Özet (karıştırılmış metot adı) |
C++ V Tablosu İşaretçileri | DA | Saklama adresi + Özet (karıştırılmış baz V Tablosu adı) |
Hesaplanan Git Etiketi | IA | Özet (işlev adı) |
Çekirdek İş Parçacığı Durumu | GA | • |
Kullanıcı İş Parçacığı Durumu Yazmaçları | IA | Depolama adresi |
İmza değeri, 64 bit işaretçinin en üstündeki kullanılmayan doldurma bitlerinde saklanır. İmza, kullanılmadan önce doğrulanır ve işaretçi adresinin çalışmasını sağlamak için doldurma bitleri eski hâline döndürülür. İmza doğrulanamazsa işlem durdurulur. Bu doğrulama, veri yığınında saklanan işlev iade adreslerini manipüle ederek var olan kodu kötü amaçla çalıştırması için aygıtı kandırmaya çalışan iade yönlü programlama (ROP) saldırısı gibi birçok saldırıyı daha zor hâle getirir.
Sayfa Koruma Katmanı
iOS’teki, iPadOS’teki, visionOS’teki ve watchOS’teki Sayfa Koruma Katmanı (PPL), kod imzası doğrulama işlemi tamamlandıktan sonra kullanıcı alanındaki kodun değiştirilmesini engellemek için tasarlanmıştır. KIP ve Hızlı İzin Sınırlamaları üzerine kurulan PPL, kullanıcı kodunu ve sayfa tablolarını içeren korumalı sayfaları yalnızca PPL’nin değiştirebilmesini sağlamak üzere sayfa tablosu izin geçersiz kılmalarını yönetir. Bu, sistem genelinde kod bütünlüğü uygulanmasını destekleyerek (saldırıya uğramış bir çekirdekte bile) saldırı zeminini büyük oranda azaltır. PPL yalnızca tüm çalıştırılabilir kodun imzalanmış olması gereken sistemlerde geçerli olduğu için bu koruma macOS’te sunulmaz.
Güvenli Sayfa Tablosu Monitörü ve Güvenilir Çalıştırma Monitörü
iOS, iPadOS, macOS ve visionOS üzerinde Güvenli Sayfa Tablosu Monitörü (SPTM) ve Güvenilir Çalıştırma Monitörü (TXM), hem kullanıcı hem de çekirdek işlemleri için sayfa tablolarını değiştirilmeye karşı korumaya yardımcı olmak için birlikte çalışacak şekilde tasarlanmıştır. Buna, saldırganların çekirdeğe yazma yeteneğine sahip olduğu ve denetim akışı korumalarını atlayabildiği durumlar da dahildir. SPTM bunu, çekirdekten daha yüksek bir ayrıcalık düzeyi kullanıp ayrıcalığı daha düşük TXM’i kod çalıştırmayı yöneten politikaları uygulamak için yapar. Bu sistem, TXM’in saldırıya uğramasının, aralarındaki bu ayrıcalık ayrımı ve güven yönetimi nedeniyle otomatik olarak bir SPTM atlaması anlamına gelmeyecek şekilde tasarlanmıştır. A15 veya daha yeni ve M2 veya daha yeni SOC’lerde, SPTM (TXM ile birlikte) PPL’nin yerini alır ve erken başlatma sırasında bile çekirdeğin güvenine güvenmeyen daha küçük bir saldırı yüzeyi sağlar. SPTM, PPL’nin kullandığı Hızlı İzin Sınırlamaları’nın gelişimindeki yeni Silicon temel öğelerine güvenir ve yalnızca yukarıdaki tabloda listelenen işlemcilerde kullanılabilir.
Bellek Bütünlüğünü Sağlama
Bellek Bütünlüğünü Sağlama (MIE), A19 ve M5 işlemcilerinde veya daha yenilerinde kullanılabilen Apple platformları için kapsamlı bir bellek güvenliği korumasıdır. MIE; genişletilmiş Etiket Gizliliğini Sağlama tarafından desteklenen, eşzamanlı modda Geliştirilmiş Bellek Etiketleme Genişletmesi (EMTE) ile birlikte Apple’ın güvenli bellek ayırıcıları tarafından sağlanan sağlam temel üzerine kurulmuştur. MIE, Apple Silicon’a yerleşiktir ve kullanıcıların beklediği güç ve performansı korurken çekirdek de dahil anahtar saldırı yüzeylerinde eşsiz, her zaman açık bellek güvenliği koruması sunar. Daha fazla bilgi için Apple Güvenlik Araştırma Blogu’nda Bellek Bütünlüğünü Sağlama: Apple aygıtlarında bellek güvenliğine eksiksiz bir bakış konusuna bakın.
Bellek Etiketleme Genişletmesi
Arm, bellek bozulma hatalarını bulmaya yardımcı olmak üzere donanım için bir araç olarak 2019’da Bellek Etiketleme Genişletmesi (MTE) özelliğini yayımladı. MTE, her bir bellek ayırmanın bir sırla etiketlendiği bellek etiketleme ve etiket denetleme sistemidir. Donanım, daha sonraki belleğe erişim isteklerinin yalnızca istek doğru sırrı içeriyorsa verileceğini garanti eder. Sırlar eşleşmiyorsa uygulama çöker ve etkinlik günlüğe kaydedilir. Bu, geliştiricilerin bellek bozulma hatalarını oluştukları anda tanımlamalarına olanak tanır.
Geliştirilmiş Bellek Etiketleme Genişletmesi
EMTE, yalnızca daha güvenli eşzamanlı modu destekleme de dahil olmak üzere MTE’nin etkin bir koruma olmasını engelleyen boşlukları kapatır. Ek olarak, etiketli bi bellek bölgesindeki etiketlenmemiş belleğe erişmek için bölgenin etiketini bilmek, saldırganların dinamik etiketli bellekte sınır dışı hataları etiketlenmemiş ayırmaları doğrudan değiştirerek EMTE’den kaçınacak bir biçime dönüştürmesini önemli ölçüde zorlaştırmak gerekir.
Etiket Gizliliğini Sağlama
Etiket Gizliliğini Sağlama, güvenli ayırıcıların uygulatılmasını teknik tehditlerden korur; yan kanal ve şüpheli çalıştırma saldırılarına karşı da dahil olmak üzere EMTE etiketlerinin gizliliğini korur. Güvenli Sayfa Tablosu Monitörü çekirdek ayırıcı yedekleme deposunu ve etiket saklama alanını korur. Sistem, çekirdek bir uygulama yerine belleğe eriştiğinde onun da kullanıcı alanı olarak aynı etiket denetleme kurallarına tabi olmasını sağlar. Etiket Gizliliğini Sağlama, zamanlama veya şüpheli saldırılar nedeniyle etiket sızıntısını azaltacak şekilde tasarlanmıştır ve hatta Spectre V1’e karşı bir koruma içerir.