Apple Silicon yongalı Mac için LocalPolicy dosyasının içeriği
LocalPolicy, Secure Enclave tarafından imzalanmış bir Image4 dosyasıdır. Image4, Apple platformlarında güvenli başlatma zinciri nesneleri hakkında bilgileri açıklamak için kullanılan bir ASN.1 (Abstract Syntax Notation One) DER kodlu veri yapısı biçimidir. Image4 tabanlı bir güvenli başlatma modelinde, güvenlik politikaları merkezi bir Apple imzalama sunucusuna gönderilen bir imzalama isteği tarafından başlatılan yazılım yükleme zamanında istenir. Politika uygunsa imzalama sunucusu, birçok dört karakterlik kod (4CC) dizisi içeren imzalı bir Image4 dosyasını geri döndürür. Bu imzalı Image4 dosyaları ve 4CC’ler, Boot ROM veya LLB gibi yazılımlar tarafından başlangıçta değerlendirilir.
İşletim sistemleri arasında sahiplik aktarma
Sahip Kimliği Anahtarı'na (OIK) erişim “Sahiplik” olarak adlandırılır. Kullanıcıların politika veya yazılım değişiklikleri yaptıktan sonra LocalPolicy’yi bırakmalarına olanak tanımak için sahiplik gerekir. OIK, Mühürlü Anahtar Koruma (SKP) bölümünde açıklandığı şekilde aynı anahtar hiyerarşisiyle korunur; OIK, disk bölümü şifreleme anahtarı (VEK) ile aynı anahtar şifreleme anahtarı (KEK) tarafından korunur. Bu, onun normal şartlarda hem kullanıcı parolaları hem de işletim sistemi ve politika ölçümleri ile korunduğu anlamına gelir. Mac’teki tüm işletim sistemleri için tek bir OIK vardır. Bu yüzden ikinci bir işletim sistemi yüklenirken sahipliği ikinci işletim sistemindeki kullanıcılara aktarmak için birinci işletim sistemindeki kullanıcıların açık onayı gerekir. Ancak yükleyici birinci işletim sisteminden çalıştırılırken ikinci işletim sisteminin kullanıcıları henüz yoktur. Normalde işletim sistemi başlatılıp Ayarlama Yardımcısı çalıştırılana dek işletim sistemindeki kullanıcılar oluşturulmaz. Bu yüzden Apple Silicon yongalı bir Mac’te ikinci bir işletim sistemi yüklenirken iki yeni eylem gerekir:
İkinci işletim sistemi için bir LocalPolicy yaratma
Sahipliği aktarmak için bir “Yükleme Kullanıcısı” hazırlama
Yükleme Yardımcısı çalıştırılıp yükleme hedefi olarak ikinci bir boş disk bölümü belirtildiğinde kullanıcıya şu anki disk bölümünde bulunan bir kullanıcıyı kopyalayıp ikinci disk bölümünün ilk kullanıcısı yapmak isteyip istemediği sorulur. Kullanıcı kabul ederse yaratılan “Yükleme Kullanıcısı” aslında seçilen kullanıcının parolası ile donanım anahtarlarından türetilen ve ikinci işletim sistemine aktarılan OIK’yi şifrelemek için kullanılan bir KEK’dir. Daha sonra, ikinci işletim sistemindeki Yükleme Yardımcısı’nda yeni işletim sisteminin Secure Enclave’indeki OIK’ye erişmeye izin vermek için o kullanıcının parolası istenir. Kullanıcılar, kullanıcı kopyalamamayı tercih ederse Yükleme Kullanıcısı aynı şekilde yaratılır ama kullanıcı parolası yerine boş bir parola kullanılır. Bu ikinci akış, bazı sistem yönetimi senaryolarında bulunur. Yine de birden fazla disk bölümüne yükleme yapmak ve Sahiplik aktarımını en güvenli şekilde gerçekleştirmek isteyen kullanıcılar her zaman birinci işletim sistemindeki bir kullanıcıyı ikinci işletim sistemine kopyalamayı tercih etmelidir.
Apple Silicon yongalı Mac’te LocalPolicy
Apple Silicon yongalı Mac için yerel güvenlik politikası denetimi, Secure Enclave’de çalışan bir uygulamaya devredilmiştir. Bu yazılım, güvenlik politikasını kimin ve hangi başlatma ortamından değiştirebileceğini belirlemek için kullanıcının kimlik bilgilerini ve birincil CPU’nun başlatma modunu kullanabilir. Bu, kötü amaçlı yazılımların daha fazla ayrıcalık kazanmak üzere güvenlik politikası denetimlerinin modunu düşürerek bunları kullanıcıya karşı kullanmasını engeller.
LocalPolicy bildiri özellikleri
LocalPolicy dosyası; kart veya model kimliği (BORD), belirli bir Apple yonga bilgisi (CHIP) ya da Özel Yonga Kimliği (ECID) gibi çoğu Image4 dosyasında bulunan bazı mimari 4CC’ler içerir. Ancak aşağıdaki 4CC’ler yalnızca kullanıcının ayarlayabileceği güvenlik politikalarına odaklanır.
Not: Apple, açma/kapama düğmesine fiziksel olarak tek sefer basıp bekleme eylemini kullanarak eşlenen recoveryOS’te bir başlatmayı belirtmek için Paired One True recoveryOS (1TR) terimini kullanır. Bu, NVRAM veya çift basıp bekleme eylemi kullanılarak gerçekleşen ya da başlangıçta hatalar oluştuğunda gerçekleşebilecek normal bir recoveryOS başlatmasından farklıdır. Belirli bir türde fiziksel düğmeye basılması, macOS’e girebilmeyi başarmış yalnızca yazılım kullanan bir saldırganın başlatma ortamına erişemeyeceğine olan güveni artırır.
LocalPolicy Nonce Özeti (lpnh)
Tür: OctetString (48)
Değişebilir ortamlar: 1TR, recoveryOS, macOS
Açıklama:
lpnh
, LocalPolicy’nin yeniden gönderilmesini önlemek için kullanılır. Bu, güvenli saklama alanı bileşeninde saklanan ve Secure Enclave Boot ROM veya Secure Enclave kullanılarak erişilebilen bir LocalPolicy Nonce’ının (LPN) SHA384 özetidir. Bu ham yeniden göndermeyi önleme değeri, uygulama işlemcisi tarafından asla görülmez, yalnızca sepOS tarafından görülür. LLB’yi yakaladığı önceki LocalPolicy’nin geçerli olduğuna ikna etmek isteyen bir saldırganın bir değeri yeniden göndermek istediği LocalPolicy’de bulunan aynılpnh
değeriyle özetleyen güvenli saklama alanı bileşenine yerleştirmesi gerekir. Normalde sistemde geçerli tek bir LPN vardır. Ancak yazılım güncellemeleri sırasında, bir güncelleme hatası olması durumunda eski yazılımı başlatma olanağı sağlamak için eşzamanlı olarak iki LPN bulunur. Herhangi bir işletim sistemi için herhangi bir LocalPolicy değiştiğinde, tüm politikalar güvenli saklama alanı bileşeninde bulunan yeni LPN’ye karşılık gelen yeni lpnh değeriyle yeniden imzalanır. Bu değişiklik, kullanıcı güvenlik ayarlarını değiştirdiğinde veya yeni LocalPolicy’lerle yeni işletim sistemleri yarattığında gerçekleştirilir.
Uzaktaki Politika Nonce Özeti (rpnh)
Tür: OctetString (48)
Değişebilir ortamlar: 1TR, recoveryOS, macOS
Açıklama:
rpnh
,lpnh
ile aynı biçimde davranır ama yalnızca uzaktaki politika güncellendiğinde (örneğin Bul kaydının durumunu değiştirirken) güncellenir. Bu değişiklik, kullanıcı kendi Mac’inde Bul’un durumunu değiştirdiğinde gerçekleştirilir.
recoveryOS Nonce Özeti (ronh)
Tür: OctetString (48)
Değişebilir ortamlar: 1TR, recoveryOS, macOS
Açıklama:
ronh
, lpnh ile aynı şekilde davranır ancak yalnızca sistem recoveryOS için LocalPolicy’de bulunur. Yazılım güncellemeleri gibi sistem recoveryOS güncellendiğinde güncellenir. Bir aygıt Bul tarafından etkisiz bir duruma getirildiğinde, sistem recoveryOS hâlâ yeniden başlatılabilir durumda bırakılarak var olan işletim sistemlerinin (LPN’leri ve RPN’leri güvenli saklama alanı bileşeninden silinerek) etkisizleştirilebilmesi içinlpnh
ilerpnh
’den ayrı bir yeniden göndermeyi önleme değeri kullanılır. Bu şekilde, sistem sahibi Bul hesabı için kullanılan iCloud parolasını girerek sistem üzerinde denetimini kanıtladığında işletim sistemleri yeniden etkinleştirilebilir. Bu değişiklik, kullanıcı sistem recoveryOS’i güncellediğinde veya yeni işletim sistemleri yarattığında gerçekleştirilir.
Sonraki Aşama Image4 Bildiri Özeti (nsih)
Tür: OctetString (48)
Değişebilir ortamlar: 1TR, recoveryOS, macOS
Açıklama: nsih alanı, başlatılan macOS’i açıklayan Image4 bildiri verilerinin bir SHA384 özetini temsil eder. macOS Image4 bildirisi iBoot, statik güven önbelleği, aygıt ağacı, Başlatma Çekirdeği Koleksiyonu ve imzalı sistem disk bölümü (SSV) kök özeti gibi tüm başlatma nesneleri için ölçümleri kapsar. LLB, belirli bir macOS’i başlatmak için yönlendirildiğinde, iBoot’a iliştirilmiş macOS Image4 bildirisi özetinin LocalPolicy’nin
nsih
alanında yakalananla eşleştiğinden emin olmak için tasarlanmıştır. Bu şekildensih
, kullanıcının LocalPolicy’yi yaratma amacı olan işletim sistemini yakalar. Kullanıcılar, bir yazılım güncelleme gerçekleştirdiklerinde dolaylı yoldannsih
değerini değiştirirler.
Cryptex1 Image4 Bildirisi Özeti (spih)
Tür: OctetString (48)
Değişebilir ortamlar: 1TR, recoveryOS, macOS
Açıklama:
spih
alanı, Cryptex1 Image4 bildirisi veri yapısının bir SHA384 özetini temsil eder. Cryptex1 Image4 bildirisi, cryptex’lerinin ölçümlerini, dosya sistemi mühürlerini ve ilişkili güven önbelleğini içerir. macOS başlarken XNU çekirdeği ve Sayfa Koruma Katmanı, Cryptex1 Image4 bildirisi özetinin iBoot’un LocalPolicy’ninspih
alanından paylaştığıyla eşleşmesini sağlar. Kullanıcılar, bir Hızlı Güvenlik Yanıtı yüklediklerinde veya bir yazılım güncelleme gerçekleştirdiklerinde dolaylı yoldanspih
değerini değiştirirler. Cryptex1 Image4 Bildirisi Özeti, Sonraki Aşama Image4 Bildirisi Özeti’nden bağımsız olarak güncellenebilir.
Cryptex1 Nesli (stng)
Tür: 64 bit imzalanmamış tamsayı
Değişebilir ortamlar: 1TR, recoveryOS, macOS
Açıklama:
stng
alanı, Cryptex1 Image4 Bildirisi Özeti’nin bir LocalPolicy’de son güncellendiği zamanı temsil eden bir karşı değerdir. Incoming Cryptex’i uygulamaya yönelik yerel politikanın Sayfa Koruma Katmanı değerlendirmesi sırasındalpnh
yerine bir yeniden göndermeyi önleme değeri sağlar. Kullanıcılar, Hızlı Güvenlik Yanıtı veya bir yazılım güncelleme yüklediklerinde dolaylı yoldanstng
değerini artırırlar.
Yardımcı Çekirdek Koleksiyonu (AuxKC) Politikası Özeti (auxp)
Tür: OctetString (48)
Değişebilir ortamlar: macOS
Açıklama:
auxp
, kullanıcı yetkili kext listesi (UAKL) politikasının bir SHA384 özetidir. Bu, AuxKC oluşturma zamanında yalnızca yetkili kext’lerin AuxKC’ye dahil edildiğinden emin olmaya yardımcı olmak için kullanılır. Bu alanı ayarlamak içinsmb2
ön koşuldur. Kullanıcılar, Sistem Ayarları’nda Gizlilik ve Güvenlik’ten (macOS 13 veya daha yenisi) ya da Sistem Tercihleri’nin Güvenlik ve Gizlilik bölümünde (macOS 12 veya daha eskisi) bir kext’i onaylayarak UAKL’yi değiştirdiklerinde dolaylı yoldanauxp
değerini değiştirirler.
Yardımcı Çekirdek Koleksiyonu (AuxKC) Image4 Bildiri Özeti (auxi)
Tür: OctetString (48)
Değişebilir ortamlar: macOS
Açıklama: Sistem, UAKL özetinin LocalPolicy’nin
auxp
alanında bulunanlarla eşleştiğini doğruladıktan sonra, AuxKC’nin LocalPolicy imzalamadan sorumlu Secure Enclave işlemci uygulaması tarafından imzalanmasını ister. Sonra, önceden imzalanan AuxKC’lerin karıştırılma ve başlatma zamanında bir işletim sistemiyle eşleştirilme olasılığından kaçınmak için AuxKC Image4 bildiri imzasının bir SHA384 özeti LocalPolicy’ye yerleştirilir. iBoot,auxi
alanını LocalPolicy’de bulursa AuxKC’yi depolama alanından yüklemeyi ve imzasını doğrulamayı dener. AuxKC’ye iliştirilmiş Image4 bildirisinin özetininauxi
alanında bulunan değerle eşleştiğini de doğrular. AuxKC herhangi bir nedenden dolayı yüklenemezse sistem bu başlatma nesnesi olmadan ve (dolayısıyla) üçüncü parti kext’ler yüklenmeden başlatmayı sürdürür.auxp
alanı, LocalPolicy’de auxi alanını ayarlamanın ön koşuludur. Kullanıcılar, Sistem Ayarları’nda Gizlilik ve Güvenlik’ten (macOS 13 veya daha yenisi) ya da Sistem Tercihleri’nin Güvenlik ve Gizlilik bölümünde (macOS 12 veya daha eskisi) bir kext’i onaylayarak UAKL’yi değiştirdiklerinde dolaylı yoldanauxi
değerini değiştirirler.
Yardımcı Çekirdek Koleksiyonu (AuxKC) Alındı Özeti (auxr)
Tür: OctetString (48)
Değişebilir ortamlar: macOS
Açıklama:
auxr
, AuxKC’ye eklenmiş olan kext’lerin tam kümesini belirten AuxKC alındı belgesinin SHA384 özetidir. AuxKC alındı belgesi UAKL’nin alt kümesi olabilir, çünkü kext’ler kullanıcı yetkili olsa bile saldırılar için kullanıldıkları biliniyorsa AuxKC’nin dışında bırakılabilir. Ayrıca, kullanıcı çekirdek sınırını bozmak için kullanılabilen bazı kext’ler, Apple Pay’i kullanamama veya 4K ve HDR içeriği oynatamama gibi azaltılmış işlevselliğe yol açabilir. Bu özelliklere sahip olmak isteyen kullanıcılar daha sınırlayıcı bir AuxKC’nin dahil edilmesini seçer.auxp
alanı, LocalPolicy’deauxr
alanını ayarlamanın ön koşuludur. Kullanıcılar, Sistem Ayarları’nda Gizlilik ve Güvenlik’ten (macOS 13 veya daha yenisi) ya da Sistem Tercihleri’nin Güvenlik ve Gizlilik bölümünde (macOS 12 veya daha eskisi) yeni bir AuxKC oluşturduklarında dolaylı yoldanauxr
değerini değiştirirler.
CustomOS Image4 Bildiri Özeti (coih)
Tür: OctetString (48)
Değişebilir ortamlar: 1TR
Açıklama:
coih
, CustomOS Image4 bildirisinin SHA384 özetidir. Bu bildiri verisi, iBoot tarafından (XNU çekirdeği yerine) denetimi aktarmak için kullanılır. Kullanıcılar, 1TR modundakmutil configure-boot
komut satırı aracını kullandıklarında dolaylı olarakcoih
değerini değiştirirler.
APFS disk bölümü grubu UUID’si (vuid)
Tür: OctetString (16)
Değişebilir ortamlar: 1TR, recoveryOS, macOS
Açıklama:
vuid
, çekirdeğin kök olarak kullanması gereken disk bölümü grubunu belirtir. Bu alan birincil olarak bilgilendiricidir ve güvenlik kısıtlamaları için kullanılmaz. Buvuid
, yeni bir işletim sistemi yüklemesi yaratırken kullanıcı tarafından dolaylı olarak ayarlanır.
Anahtar şifreleme anahtarı (KEK) Grup UUIDsi (kuid)
Tür: OctetString (16)
Değişebilir ortamlar: 1TR, recoveryOS, macOS
Açıklama:
kuid
, başlatılan disk bölümünü belirtir. Anahtar şifreleme anahtarı genellikle Veri Koruma için kullanılır. Her LocalPolicy’de, LocalPolicy imzalama anahtarını korumak amacıyla kullanılır.kuid
, yeni bir işletim sistemi yüklemesi yaratırken kullanıcı tarafından dolaylı olarak ayarlanır.
Eşli recoveryOS Güvenilir Başlatma Politikası Ölçümü (prot)
Tür: OctetString (48)
Değişebilir ortamlar: 1TR, recoveryOS, macOS
Açıklama: Eşli RecoveryOS Güvenilir Başlatma Politikası Ölçümü (TBPM), zaman içinde (
lpnh
gibi yeniden göndermeyi önleme değerleri sıklıkla güncellendiği için) tutarlı bir ölçüm vermek için yeniden göndermeyi önleme değerlerini dışarıda tutarak LocalPolicy’nin Image4 bildirisi üzerinde özel bir yinelenen SHA384 özet hesaplamasıdır. Yalnızca her bir macOS LocalPolicy’sinde bulunanprot
alanı, macOS LocalPolicy’sine karşılık gelen recoveryOS LocalPolicy’sini belirtmek için bir eşleme sunar.
Secure Enclave İmzalı recoveryOS Yerel Politikası Var (hrlp)
Tür: Boole
Değişebilir ortamlar: 1TR, recoveryOS, macOS
Açıklama:
hrlp
,prot
değerinin (yukarıdaki), Secure Enclave imzalı recoveryOS LocalPolicy ölçümü olup olmadığını belirtir. Değilse recoveryOS LocalPolicy, macOS Image4 dosyaları gibi öğeleri imzalayan Apple çevrimiçi imzalama sunucusu tarafından imzalanır.
Yerel İşletim Sistemi Sürümü (love)
Tür: Boole
Değişebilir ortamlar: 1TR, recoveryOS, macOS
Açıklama:
love
, LocalPolicy’nin yaratılma nedeni olan OS sürümünü belirtir. Sürüm, LocalPolicy yaratma sırasında sıradaki durum bildirisinden alınır ve recoveryOS eşleme sınırlamalarını uygulamak için kullanılır.
Güvenli Çoklu Başlatma (smb0)
Tür: Boole
Değişebilir ortamlar: 1TR, recoveryOS
Açıklama:
smb0
varsa ve doğruysa LLB, kişisel imza istemek yerine sonraki aşama Image4 bildirisinin genel olarak imzalanmasına izin verir. Kullanıcılar, Azaltılmış Güvenlik moduna düşürmek için Başlangıç Güvenliği İzlencesi veyabputil
komutu ile bu alanı değiştirebilir.
Güvenli Çoklu Başlatma (smb1)
Tür: Boole
Değişebilir ortamlar: 1TR
Açıklama:
smb1
varsa ve doğruysa iBoot, özel bir çekirdek koleksiyonu gibi nesnelerin LocalPolicy ile aynı anahtarla Secure Enclave imzalı olmasına izin verir.smb0
varlığı,smb1
varlığının ön koşuludur. Kullanıcılar, Sıkı Olmayan Güvenlik moduna düşürmek içincsrutil
veyabputil
gibi komut satırı araçlarını kullanarak bu alanı değiştirebilir.
Güvenli Çoklu Başlatma (smb2)
Tür: Boole
Değişebilir ortamlar: 1TR
Açıklama:
smb2
varsa ve doğruysa iBoot, Yardımcı Çekirdek Koleksiyonu’nun LocalPolicy ile aynı anahtarla Secure Enclave imzalı olmasına izin verir.smb0
varlığı,smb2
varlığının ön koşuludur. Kullanıcılar, Azaltılmış Güvenlik moduna düşürmek ve üçüncü parti kext’leri etkinleştirmek için Başlangıç Güvenliği İzlencesi’ni veyabputil
komutunu kullanarak bu alanı değiştirebilir.
Güvenli Çoklu Başlatma (smb3)
Tür: Boole
Değişebilir ortamlar: 1TR
Açıklama:
smb3
varsa ve doğruysa aygıttaki kullanıcı, sisteminin mobil aygıt yönetimi (MDM) denetimini seçmiştir. Bu alanın varlığı, yerel kullanıcı kimlik doğrulaması gerektirmek yerine LocalPolicy denetimli Secure Enclave işlemci uygulamasının MDM kimlik doğrulamasını kabul etmesini sağlar. Kullanıcılar, üçüncü parti kext’ler ve yazılım güncellemeleri üzerinde yönetilen denetimi etkinleştirmek için Başlangıç Güvenliği İzlencesi’ni veyabputil
komutunu kullanarak bu alanı değiştirebilir. (macOS 11.2 veya daha yenisinde, geçerli güvenlik modu Tam Güvenlik ise MDM en son macOS sürümüne bir güncelleme de başlatabilir.)
Güvenli Çoklu Başlatma (smb4)
Tür: Boole
Değişebilir ortamlar: macOS
Açıklama:
smb4
varsa ve doğruysa aygıt, Apple Okul Yönetimi, Apple İşletme Yönetimi veya Apple İşletme Temelleri kullanılarak işletim sisteminin MDM denetimini seçmiştir. Bu alanın varlığı, yerel kullanıcı kimlik doğrulaması gerektirmek yerine LocalPolicy denetimli Secure Enclave uygulamasının MDM kimlik doğrulamasını kabul etmesini sağlar. Bu alan, aygıtın seri numarasının bu üç servisten herhangi birinde göründüğünü algıladığında MDM çözümü tarafından değiştirilir.
Sistem Bütünlük Koruması (sip0)
Tür: 64 bit imzalanmamış tamsayı
Değişebilir ortamlar: 1TR
Açıklama:
sip0
, daha önce NVRAM’de saklanan mevcut Sistem Bütünlük Koruması (SIP) politika bitlerini tutar. Yeni SIP politika bitleri LLB tarafından değil, yalnızca macOS’te kullanılıyorsa (aşağıdaki gibi LocalPolicy alanlarını kullanmak yerine) buraya eklenir. Kullanıcılar, SIP’i etkisizleştirmek ve Sıkı Olmayan Güvenlik sürümüne indirmek için 1TR’decsrutil
kullanarak bu alanı değiştirebilir.
Sistem Bütünlük Koruması (sip1)
Tür: Boole
Değişebilir ortamlar: 1TR
Açıklama:
sip1
varsa ve doğruysa iBoot, SSV disk bölümü kök özetini doğrulama hatalarına izin verir. Kullanıcılar, 1TR’decsrutil
veyabputil
kullanarak bu alanı değiştirebilir.
Sistem Bütünlük Koruması (sip2)
Tür: Boole
Değişebilir ortamlar: 1TR
Açıklama: sip2 varsa ve doğruysa iBoot, çekirdek belleğini yazılamaz olarak işaretleyen CTRR (Ayarlanabilir Metin Salt Okunur Bölgesi) donanım kaydını kilitlemez. Kullanıcılar, 1TR’de
csrutil
veyabputil
kullanarak bu alanı değiştirebilir.
Sistem Bütünlük Koruması (sip3)
Tür: Boole
Değişebilir ortamlar: 1TR
Açıklama:
sip3
varsa ve doğruysa iBoot, boot-args NVRAM değişkeni için çekirdeğe geçirilen seçenekleri filtreleyen yerleşik izin listesini zorunlu kılmaz. Kullanıcılar, 1TR’decsrutil
veyabputil
kullanarak bu alanı değiştirebilir.
Sertifikalar ve RemotePolicy
LocalPolicy imzalama anahtarı yaratma ve yönetme bölümünde açıklandığı gibi LocalPolicy Image4, Sahip Kimliği Sertifikası’nı (OIC) ve gömülü RemotePolicy’yi de içerir.