macOS’ta parola sızıntısı (ve daha fazlası!)
Giriş
Bu yazı, Apple’ın güvenlik güncellemelerine dahil edilen CVE-2024-54471 açığını açıklıyor. Bu açık macOS Sequoia 15.1, macOS Sonoma 14.7.1, macOS Ventura 13.7.1 sürümlerinde yamalandı. macOS cihazı kullanıyorsanız, en güncel sürüme güncellemeniz önerilir.
Kernel nedir?
İşletim sisteminde donanımla iletişim kuran ve uygulamalara çoklu görev modelini sağlayan koda kernel denir. macOS’un kernel’i XNU’dur; BSD kernel’i ile Mach kernel’inin varyantlarını içeren hibrit bir kernel’dir.
Mach’ın tarihi
Mach kernel’i, 1980’ler ve 90’lardaki Unix savaşlarıyla derinden iç içedir. Mach, Carnegie Mellon Üniversitesi’nde bir işletim sistemi araştırma projesi olarak başladı, NeXTSTEP işletim sisteminde kullanıldı ve bu da sonunda macOS’un temeli haline geldi.
Neden Mach?
Mach, Unix sistemlerinin tasarım ve kullanımındaki karmaşıklığı azaltmak için geliştirildi. Mach dört temel soyutlamadan oluşur ve bunlar modern macOS’ta hâlâ kullanılmaktadır.
Mach’ın mimarisi
Dört soyutlama
- Task: Thread’lerin çalışabileceği ortamdır ve kaynak tahsisinin temel birimidir.
- Thread: CPU kullanımının temel birimidir ve bir task içinde bağımsız bir program sayacıyla çalışır.
- Port: Mesajlar için bir iletişim kanalıdır ve kernel tarafından korunur.
- Message: Thread’ler arası iletişimde kullanılan veri nesneleri kümesidir.
Task, port ve port hakları
Port’lar yalnızca kernel alanında bulunur; kullanıcı alanına ise port hakları olarak açığa çıkar. Birden fazla task bir port üzerinde gönderme hakkına sahip olabilir, ancak alma hakkı yalnızca tek bir task’te bulunabilir.
Mesajların yapısı
Her Mach mesajı bir başlık, isteğe bağlı tanımlayıcılar, keyfi bir payload ve kernel’in eklediği bir trailer’dan oluşur.
Gönderme hakkı nasıl elde edilir?
macOS’ta bootstrap server bulunur; bu sunucu, tüm task’lerin gönderme hakkına sahip olduğu port’ların alma hakkını elinde tutar. İstemciler bootstrap server’dan belirli bir isimdeki Mach servisi için gönderme hakkı talep edebilir.
Mach Interface Generator (MIG)
Giriş
MIG, Mach mesajlarının gönderilip alınması için işlevsel arayüzler üreten bir araçtır. Mesaj tabanlı RPC tarzı bir arayüz sağlayarak bellek güvenliğini artırır.
Teknik ayrıntılar
MIG, Mach mesajları için bir sarmalayıcıdır; her işlev routine olarak adlandırılır ve routine kümesi subsystem olarak adlandırılır. Subsystem’ler, mesaj kimliği alanında indekslenir.
MIG sunucularındaki açık
MIG sunucularının güvenliği
MIG sunucusu mesajın göndericisini doğrulamazsa, gönderme hakkına sahip herhangi bir task sunucunun routine’lerini çağırabilir.
MIG sunucularını bulma
ipsw CLI aracı kullanılarak NDR_record sembolünü kullanan binary’ler aranabilir. Bu, MIG sunucularını ve istemcilerini bulmak için faydalıdır.
NetAuthAgent açığı
NetAuthAgent’e giriş
NetAuthAgent, macOS’ta dosya sunucularının kimlik bilgilerini işleyen bir daemon’dur. Bu açık yamalanmadan önce, sunucunun kimlik bilgileri istendiğinde bunları veriyordu.
NetAuthAgent nasıl çalışır?
NetAuthAgent, kimlik bilgilerini depolamak için macOS Keychain’ini kullanır. Keychain merkezi bir gizli bilgi yöneticisidir ve her öğenin kendi erişim kontrol listesi vardır.
NetAuthAgent’in MIG sunucusu
NetAuthAgent, bootstrap server’a com.apple.netauth.user.gui adıyla kayıtlı bir MIG sunucusu sunar. Bu sunucu, kimlik bilgilerini okuyabilen, oluşturabilen ve üzerine yazabilen routine’ler sağlar.
Açığın etkisi
iCloud API token’larının açığa çıkması
Bu açık iCloud API token’larını açığa çıkararak saldırganların kullanıcı bilgilerini sızdırmasına veya diğer cihazların konumunu takip etmesine olanak tanır.
Apple ne yapmalıydı?
Bu yazı, Apple’ın bu açığı gidermek için hangi adımları atması gerektiğine dair bir tartışma içeriyor.
1 yorum
Hacker News görüşleri
İyi yazılmış bir yazı. Apple'ın bir ölçüde gizlemeye çalıştığı bir zero-day olayı aklıma geldi. "Boş parolayı iki kez dene" yöntemiyle root oturum açmanın atlatılabildiği olaydı. Bu olay 2017 ya da 2018 civarındaydı
"ACLs don’t": <a href="https://waterken.sourceforge.net/aclsdont/current.pdf" rel="nofollow">https://waterken.sourceforge.net/aclsdont/current.pdf</a>
Bir sürecin başka bir süreç adına anahtar zinciri sorgularını proxy'leyebilmesine imkân veren bir mekanizmanın açığa çıkarılması, sistem genelindeki güvenliği zayıflatabilir
Makalede küçük bir düzeltme yapıldı
8 saat sürdü ama bu gönderi artık ana sayfanın ilk 5 sırasında değil (şu anda #27, hâlâ ana sayfada ama alt sıralarda). Tüm yorumlar için teşekkürler
Yazarın gerçekten çalışan bir PoC kodu verip vermediğini merak ediyorum. Hafifletme önlemlerini test etmek istiyorum. Örnek kodu gördüm ama eksik görünüyor
Çok ilginç bir makale. Mach ve Darwin çekirdeğinin yapımının arkasında bu kadar çok hikâye olduğunu bilmiyordum
Şu anda Mach, macOS'taki hataların güvenilir bir kaynağı gibi hissettiriyor. Apple'ın bunların hepsini kilitlemek için çok uğraştığını biliyorum ama Mach'tan tamamen uzaklaşabilecekleri bir yol olup olmadığını merak ediyorum
[ölü]