macOS XPC Connecting Process Check
XPC Bağlantı Süreci Kontrolü
Bir XPC hizmetine bağlantı kurulduğunda, sunucu bağlantının izin verilip verilmediğini kontrol eder. Genellikle şu kontrolleri yapar:
Bağlanan işlem Apple tarafından imzalanmış bir sertifika ile mi imzalanmış (yalnızca Apple tarafından verilen)?
Bu doğrulanmazsa, saldırgan herhangi bir diğer kontrolle eşleşecek bir sahte sertifika oluşturabilir.
Bağlanan işlem kuruluşun sertifikası ile mi imzalanmış (takım kimliği doğrulaması)?
Bu doğrulanmazsa, Apple'dan herhangi bir geliştirici sertifikası, hizmete bağlanmak için kullanılabilir.
Bağlanan işlemde uygun bir paket kimliği bulunuyor mu?
Bu doğrulanmazsa, aynı kuruluş tarafından imzalanmış herhangi bir araç, XPC hizmetiyle etkileşimde bulunmak için kullanılabilir.
(4 veya 5) Bağlanan işlemin uygun bir yazılım sürüm numarası var mı?
Bu doğrulanmazsa, diğer kontroller yerinde olsa bile, eski, güvenlik açıklarına sahip istemciler, işlem enjeksiyonuna karşı savunmasız bir şekilde XPC hizmetine bağlanmak için kullanılabilir.
(4 veya 5) Bağlanan işlemin tehlikeli yetkilendirmelere sahip olmayan sertleştirilmiş çalışma zamanı olup olmadığı kontrol edilir (örneğin, keyfi kitaplıkları yüklemeye veya DYLD ortam değişkenlerini kullanmaya izin verenler).
Bu doğrulanmazsa, istemci kod enjeksiyonuna karşı savunmasız olabilir.
Bağlanan işlemin, hizmete bağlanmasına izin veren bir yetkilendirmeye sahip olup olmadığı kontrol edilir. Bu, Apple ikili dosyaları için geçerlidir.
Doğrulama, bağlanan istemcinin denetim belirtecine dayanmalıdır, işlem kimliği (PID) yerine. Çünkü ilkini kullanmak, PID yeniden kullanım saldırılarına karşı korur.
Geliştiriciler nadiren denetim belirteci API çağını kullanır çünkü bu özel bir çağrıdır, bu yüzden Apple herhangi bir zamanda değiştirebilir. Ayrıca, özel API kullanımı Mac App Store uygulamalarında izin verilmez.
processIdentifier
yöntemi kullanılıyorsa, savunmasız olabilirEn son belirli durumlarda savunmasız olabilen
xpc_connection_get_audit_token
yerinexpc_dictionary_get_audit_token
kullanılmalıdır.
İletişim Saldırıları
PID yeniden kullanım saldırısı hakkında daha fazla bilgi için kontrol edin:
xpc_connection_get_audit_token
saldırısı hakkında daha fazla bilgi için kontrol edin:
Trustcache - Düşürme Saldırılarına Karşı Önlem
Trustcache, Apple Silicon makinelerinde tanıtılan bir savunma yöntemidir ve yalnızca değiştirilmemiş izin verilen ikili dosyaların çalıştırılmasına izin veren bir CDHSAH veritabanını depolar. Bu, düşürme sürümlerinin yürütülmesini engeller.
Kod Örnekleri
Sunucu, bu doğrulamayı shouldAcceptNewConnection
adlı bir işlevde uygular.
NSXPCConnection nesnesinin özel bir auditToken
özelliği (kullanılması gereken ancak değişebilecek olan) ve genel bir processIdentifier
özelliği (kullanılmaması gereken) bulunmaktadır.
Bağlantı kurulan işlem şu şekilde doğrulanabilir:
Eğer bir geliştirici istemci sürümünü kontrol etmek istemiyorsa, en azından istemcinin işlem enjeksiyonuna karşı savunmasız olmadığını kontrol edebilir:
Last updated