1 poin oleh GN⁺ 2025-03-21 | 1 komentar | Bagikan ke WhatsApp

Kebocoran kata sandi (dan banyak lagi!) di macOS

Pengantar

Tulisan ini menjelaskan kerentanan CVE-2024-54471 yang disertakan dalam pembaruan keamanan Apple. Kerentanan ini telah ditambal di macOS Sequoia 15.1, macOS Sonoma 14.7.1, macOS Ventura 13.7.1. Jika Anda menggunakan perangkat macOS, disarankan untuk memperbarui ke versi terbaru.

Apa itu kernel?

Dalam sistem operasi, kode yang berkomunikasi dengan perangkat keras dan menyediakan model multitasking untuk aplikasi disebut kernel. Kernel macOS adalah XNU, sebuah kernel hibrida yang mencakup varian kernel BSD dan kernel Mach.

Sejarah Mach

Kernel Mach sangat terkait dengan perang Unix pada tahun 1980-an dan 90-an. Mach dimulai sebagai proyek riset sistem operasi di Carnegie Mellon University, digunakan dalam sistem operasi NeXTSTEP, yang pada akhirnya menjadi fondasi macOS.

Mengapa Mach?

Mach dikembangkan untuk mengurangi kompleksitas dalam desain dan penggunaan sistem Unix. Mach terdiri dari empat abstraksi dasar, yang masih digunakan di macOS modern.

Arsitektur Mach

Empat abstraksi

  • Task: lingkungan tempat thread dapat berjalan, dan merupakan unit dasar alokasi sumber daya.
  • Thread: unit dasar pemanfaatan CPU, yang beroperasi dengan penghitung program independen di dalam task.
  • Port: saluran komunikasi untuk pesan, yang dilindungi oleh kernel.
  • Pesan: sekumpulan objek data yang digunakan untuk komunikasi antarthread.

Task, port, dan hak port

Port hanya ada di ruang kernel, dan diekspos ke ruang pengguna sebagai hak port. Beberapa task dapat memiliki hak kirim ke suatu port, tetapi hak terima hanya dapat dimiliki oleh satu task.

Struktur pesan

Setiap pesan Mach terdiri dari header, deskriptor opsional, payload arbitrer, dan trailer yang ditambahkan oleh kernel.

Cara memperoleh hak kirim

macOS memiliki bootstrap server, yang memegang hak terima atas port yang semua task miliki hak kirimnya. Klien dapat meminta hak kirim ke layanan Mach dengan nama tertentu kepada bootstrap server.

Mach Interface Generator (MIG)

Pengantar

MIG adalah alat untuk menghasilkan antarmuka fungsional untuk pengiriman dan penerimaan pesan Mach. Ini menyediakan antarmuka bergaya RPC berbasis pesan yang meningkatkan keamanan memori.

Detail teknis

MIG adalah pembungkus untuk pesan Mach; setiap fungsi disebut routine, dan kumpulan routine disebut subsystem. Subsystem diindeks ke field ID pesan.

Kerentanan pada server MIG

Keamanan server MIG

Jika server MIG tidak memverifikasi pengirim pesan, task yang memiliki hak kirim dapat memanggil routine server.

Menemukan server MIG

Anda dapat menggunakan alat CLI ipsw untuk mencari biner yang menggunakan simbol NDR_record. Ini berguna untuk menemukan server dan klien MIG.

Kerentanan di NetAuthAgent

Pengantar NetAuthAgent

NetAuthAgent adalah daemon yang menangani kredensial server file di macOS. Sebelum kerentanan ini ditambal, daemon ini akan memberikan kredensial server jika diminta.

Cara kerja NetAuthAgent

NetAuthAgent menggunakan Keychain macOS untuk menyimpan kredensial. Keychain adalah pengelola rahasia terpusat, dan setiap entri memiliki access control list-nya sendiri.

Server MIG NetAuthAgent

NetAuthAgent mengekspos server MIG yang terdaftar di bootstrap server dengan nama com.apple.netauth.user.gui. Server ini menyediakan routine yang dapat membaca, membuat, dan menimpa kredensial.

Dampak kerentanan

Paparan token API iCloud

Kerentanan ini dapat mengekspos token API iCloud, sehingga penyerang dapat membocorkan informasi pengguna atau melacak lokasi perangkat lain.

Apa yang seharusnya dilakukan Apple

Tulisan ini mencakup pembahasan tentang langkah-langkah yang seharusnya diambil Apple untuk mengatasi kerentanan ini.

1 komentar

 
GN⁺ 2025-03-21
Komentar Hacker News
  • Tulisan yang ditulis dengan baik. Ini mengingatkan pada insiden zero-day yang tampaknya sempat coba ditutupi Apple sampai tingkat tertentu. Itu adalah insiden ketika login root bisa dilewati dengan "mencoba kata sandi kosong dua kali". Kejadian ini sekitar tahun 2017 atau 2018

    • Jika memasukkan nama pengguna admin lalu mencoba login dengan kata sandi kosong, awalnya akan muncul peringatan bahwa kata sandinya salah. Jika peringatan itu diabaikan dan tombol login ditekan untuk kedua kalinya, maka akan masuk sebagai pengguna tersebut
    • Masalah ini segera ditambal setelah menyebar di media sosial. Tetap saja ini terlihat seperti kesalahan besar
    • Mekanisme autentikasi di Mac tampaknya masih punya masalah. Menarik bahwa sistem port disebutkan. Ini adalah fakta tentang kernel Mach yang tidak begitu dikenal
  • "ACLs don’t": <a href="https://waterken.sourceforge.net/aclsdont/current.pdf" rel="nofollow">https://waterken.sourceforge.net/aclsdont/current.pdf</a>;

  • Jika sebuah proses mengekspos mekanisme yang memungkinkan proses lain mem-proxy kueri keychain, hal itu dapat melemahkan keamanan seluruh sistem

  • Ada sedikit koreksi pada artikelnya

    • Pemeriksaan izin tidak berada di lapisan Mach kernel
    • <a href="https://github.com/nmggithub/wts/commit/2bdce1c0c76c7adc360e17a6a42ee547462b99d3" rel="nofollow">https://github.com/nmggithub/wts/…;
    • Itu adalah perubahan satu kata untuk memperbaiki kesalahan faktual tentang cara kerja XNU
  • Butuh 8 jam, tetapi postingan ini sekarang tidak lagi berada di 5 besar halaman depan (saat ini #27, masih di halaman depan tetapi di bagian bawah). Terima kasih untuk semua komentarnya

  • Saya penasaran apakah penulis menyediakan kode PoC yang benar-benar berfungsi. Saya ingin menguji langkah mitigasinya. Saya melihat kode contohnya, tetapi tampaknya tidak lengkap

    • Saya penasaran risiko seperti apa yang realistis di dunia nyata
  • Artikel yang sangat menarik. Saya tidak tahu ada begitu banyak cerita di balik pembuatan kernel Mach dan Darwin

  • Saat ini Mach terasa seperti sumber bug yang andal di macOS. Saya tahu Apple bekerja keras untuk mengunci semuanya, tetapi saya penasaran apakah ada jalur untuk sepenuhnya keluar dari Mach

  • [dead]