1 puan yazan GN⁺ 2025-03-21 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2025-03-21
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ı

    • Yönetici kullanıcı adı girilip boş parola ile oturum açılmaya çalışıldığında, ilk seferde parolanın yanlış olduğuna dair bir uyarı çıkıyordu. Uyarı göz ardı edilip giriş düğmesine ikinci kez basılınca o kullanıcı olarak oturum açılıyordu
    • Bu sorun sosyal medyada yayıldıktan kısa süre sonra yamalandı. Hâlâ büyük bir hata gibi görünüyor
    • Mac'in kimlik doğrulama mekanizmasında hâlâ sorunlar var gibi görünüyor. Port sisteminden bahsedilmesi ilginç. Mach çekirdeğiyle ilgili pek bilinmeyen bir gerçek
  • "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ı

    • Yetki kontrolü çekirdeğin Mach katmanında değil
    • <a href="https://github.com/nmggithub/wts/commit/2bdce1c0c76c7adc360e17a6a42ee547462b99d3" rel="nofollow">https://github.com/nmggithub/wts/…;
    • XNU'nun nasıl çalıştığına dair olgusal bir hatayı düzeltmek için yapılan tek kelimelik bir değişiklikti
  • 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

    • Gerçekte ne tür bir risk olduğunun merak ediyorum
  • Ç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ü]