Der Mac OS Kernel, besser bekannt als XNU, gilt als eines der fortschrittlichsten Betriebssystemkerne, vor allem durch seine Kombination von Mach-Kernel-Elementen und BSD-Komponenten. Trotz dieser Robustheit ist das System nicht frei von Fehlern. Einer der bemerkenswertesten und technisch komplexesten Fehler, der als CVE-2025-24118 bekannt wurde, zeigt eindrucksvoll die Herausforderungen bei der gleichzeitigen Speicherverwaltung und der sicheren Speicherfreigabe. Diese Schwachstelle verdeutlicht, wie selbst ausgeklügelte Speicherverwaltungsmechanismen wie Safe Memory Reclamation unter bestimmten Bedingungen versagen können und damit die Systemsicherheit gefährden. Bei dieser Gelegenheit lohnt es sich, die zugrunde liegenden Konzepte, die Funktionsweise des Fehlers und dessen Auswirkungen im Detail zu beleuchten.
Safe Memory Reclamation (SMR) ist ein moderner Ansatz, um Speicher in parallelen und nebenläufigen Systemen sicher freizugeben, ohne auf klassische Sperren zurückgreifen zu müssen. Ziel ist es, sogenannte Use-After-Free-Fehler zu verhindern, die zu Instabilität und Sicherheitslücken führen können. Das Besondere am XNU Kernel ist der Einsatz von epoch-basierten SMR-Mechanismen, die eine effiziente Koordination zwischen lesenden und schreibenden Threads erlauben. In diesem Modell erhöht das System kontinuierlich einen sogenannten Epoch-Counter. Jeder Thread signalisiert durch das Betreten oder Verlassen eines SMR-Kritischen Abschnitts, welchen Epochenzustand er aktuell bearbeitet.
Alte Speicherbereiche werden erst dann freigegeben, wenn eindeutig feststeht, dass keine Threads mehr auf sie zugreifen. Ein zentrales Merkmal ist dabei die atomare Aktualisierung von Zeigern, die auf die so verwalteten Datenstrukturen zeigen. Die Herausforderungen beginnen jedoch, wenn mehrere Threads gleichzeitig lesen und schreiben und die Schreibvorgänge nicht korrekt atomar ausgeführt werden. Die macOS-Entwickler haben darüber hinaus eine weitere Sicherheitsmaßnahme eingeführt, um kritische Datenstrukturen gegen Angriffe zu schützen – sogenannte Read-Only-Pages. Diese Methode sorgt dafür, dass sensible Daten wie Prozess-Credentials in schreibgeschützten Speicherbereichen abgelegt werden, um Datenmanipulationen durch Angreifer zu erschweren.
Dabei kommt die spezielle Arena-Allokation des Kernels zalloc_ro zum Einsatz, die ausschließlich schreibgeschützten Speicher verwaltet. Veränderung an diesen Daten erfolgt ausschließlich durch kontrollierte, von der Kernel-Architektur vorgegebene Mechanismen. Idealerweise müssten auch hier atomare Operationen zum Einsatz kommen, um inkonsistente Zustände bei Updates zu verhindern. Genau hier setzt die Schwachstelle CVE-2025-24118 an. Sie tritt auf, wenn das Kernelmodul kauth_cred_proc_update versucht, das Zeigerfeld p_ucred innerhalb der struct proc_ro zu aktualisieren.
Dieses Feld ist SMR-geschützt und verweist auf die Credential-Objekte eines Prozesses. Das Problem entsteht dadurch, dass zur Aktualisierung zalloc_ro_mut verwendet wird – eine Funktion, die letztlich auf das normale memcpy zurückgreift, um die Veränderung im Speicher vorzunehmen. Dabei kommt auf x86_64 Architektur der Maschinenbefehlszyklus rep movsb zum Tragen, der jedoch keine atomare Byte-Kopie garantiert, sondern die Daten byteweise kopiert. Das bedeutet, während mehrere Threads gleichzeitig auf das Feld p_ucred zugreifen, kann durch das Schreibvorgangstiming ein Lesevorgang einen Zeiger auf eine halbfertige, teilweise neu geschriebene Adresse erhalten. Diese inkonsistente Zeigerversion kann nun auf falsche oder unerwünschte Speicherbereiche verweisen und führt im schlimmsten Fall zu einer Pointer-Corruption.
In der Praxis bedeutet das, dass der Credential-Zeiger einer Prozessstruktur auf eine falsche oder sogar manipulierte Speicheradresse zeigt. Folgen können dabei von einem Kernel-Panic über das Abstürzen von Anwendungen bis hin zur ungewollten oder bösartigen Änderung von Prozessrechten reichen. Denn durch das aus Überschneidungen zusammengesetzte Pointer-Fragment kann sich ein Prozess plötzlich andere, möglicherweise höhere Zugriffsrechte erschleichen. Besonders brisant ist der Umstand, dass dieser Fehler bereits von unprivilegierten lokalen Benutzern ausgenutzt werden konnte. Dazu wurde ein sogenannter Race-Condition-Angriff zwischen zwei Threads im Kernel entwickelt.
Ein Thread erzeugt schnelle wiederholte Änderungen der Gruppen-ID (setgid), wodurch die Credentials des Prozesses laufend aktualisiert werden. Der andere Thread liest zeigergeschützte Prozessinformationen ab. Durch dieses parallele und fortlaufende Ändern und Lesen kann ein inkonsistenter Zustand beim Credential-Zeiger erzeugt werden. Diese Kombination führt zum Auslösen des CVE-2025-24118. Der Kern des Bugs im kauth_cred_proc_update ist damit eine Kombination aus Anwendung einer nicht-atomaren Kopierfunktion in einem Bereich, der atomare Aktualisierung verlangt, zusammen mit einer hochparallelen, locklosen Speicherverwaltungsstrategie.
Diese hohe Parallelität ist genau die Stärke moderner Betriebssystemkerne, bietet aber zugleich Angriffspotenzial, wenn einzelne Operationen nicht stringent atomar ausgeführt werden. Apple reagierte auf die Meldung dieses Bugs mit entsprechenden Korrekturen in der Speicheraktualisierung. Dabei wurde anstatt von zalloc_ro_mut nun eine atomare Variante zalloc_ro_mut_atomic verwendet, welche garantierte atomare Lese- und Schreiboperationen auf die Zeiger sicherstellt. Der Fix beseitigte die Race-Condition und damit die Gefahr eines inkonsistenten Credential-Zeigers. Daraus zeigt sich ein interessantes Bild über moderne Betriebssystementwicklung und Sicherheitsforschung.
Selbst in hochqualifizierten Entwicklerteams und bei Technologien mit modernsten Ansätzen wie epoch-basierter SMR und schreibgeschützten Speicherbereichen sind subtile Hardware-Implementierungsdetails wie die nicht-atomare Arbeitsweise von rep movsb ein entscheidender Faktor für Systemsicherheit. Für Entwickler und Forscher verdeutlicht dieser Fall, wie wichtig es ist, von der Hardwareebene bis hin zu komplexen Kernelmechanismen jedes Detail zu betrachten und richtig miteinander zu verknüpfen. Darüber hinaus zeigen die Ausführungen zur Credential-Verwaltung des XNU Kernels, dass macOS einem fein granularen Sicherheitsmodell folgt, bei dem auch einzelne Threads innerhalb desselben Prozesses unterschiedliche Credentials und Rechte besitzen können. Diese Flexibilität schafft Komplexität und erhöht potentiell die Angriffsfläche, wenn Synchronisationsmechanismen versagen. Praktisch hatte die Entdeckung und Analyse von CVE-2025-24118 eine unmittelbare Auswirkung für Mac-Nutzer, da der Fehler bei hoher Auslastung und bestimmten Workloads Kerninstabilitäten und Abstürze hervorgerufen hat.
Auch wenn es schwierig ist, die Race-Condition gezielt auszulösen, so konnten sogenannte Proof-of-Concepts lokal innerhalb von Setgid-Binaries ohne Root-Zugriff den Fehler reproduzieren und demonstrieren. Für die IT-Sicherheit bedeutet das, dass potenzielle Angreifer ohne Administratorrechte durch clevere Nutzung von Kernelmechanismen erweiterte Zugriffsrechte erlangen könnten. Im Endeffekt wurde die Schwachstelle bereits mit der macOS-Version 15.3 im Januar 2025 geschlossen. Die fachliche Dokumentation und der veröffentlichte Quellcode des Fixes zeigen eindrucksvoll, wie komplex diese Änderungen waren und wie strukturiert Apple den Problemverlauf angegangen ist.
Abschließend sei festgehalten, dass CVE-2025-24118 als Paradebeispiel für moderne Sicherheitsherausforderungen im Betriebssystemkernel steht. Die Zusammenführung von hochkomplexen Parallelitätsmechanismen, Schutz durch Leseschutz und fein abgestimmte Zugriffsrechte erzeugt nicht nur neue Möglichkeiten, sondern fordert auch größte Sorgfalt und präzise Implementierung. Für Entwicklerschaften ist es eine Mahnung, neben der Logik der Softwareentwicklung auch die Eigenarten der Hardwarearchitektur zu berücksichtigen. Nur mit ganzheitlichem Verständnis lassen sich sichere und stabile Systeme bauen, die den heutigen Anforderungen an Leistung und Schutz zugleich gerecht werden.