2 Punkte von GN⁺ 2025-04-28 | 1 Kommentare | Auf WhatsApp teilen
  • Vorstellung eines Falls, bei dem sich ein iPhone mithilfe von Eigenschaften und Schwachstellen des Darwin-Notification-Systems unbrauchbar machen ließ
  • Die Schwachstelle wurde als CVE-2025-24091 registriert, und der Melder erhielt eine Bug-Bounty von 17.500 US-Dollar (25 Millionen Won)
  • Ausgenutzt wurde, dass sich ohne besondere Berechtigungen Benachrichtigungen auf Systemebene senden ließen, wodurch sich das gesamte iOS-Gerät lahmlegen ließ
  • Mit einer einfachen einzeiligen Codezeile ließ sich der Modus "Restore in Progress" erzwingen, was zu einer Denial-of-Service-(DoS)-Attacke mit wiederholten Neustarts führen konnte
  • Mit dem iOS-18.3-Update wurde die Schwachstelle behoben, indem für das Senden wichtiger Darwin Notifications eingeschränkte Berechtigungen (Entitlements) erforderlich wurden

Darwin Notifications

  • Darwin Notifications sind in iOS und macOS ein Mechanismus auf CoreOS-Ebene, um zwischen Prozessen einfache Nachrichten auszutauschen
  • Mit notify_post wird ein Ereignis gesendet, mit notify_register_dispatch wird ein Ereignis empfangen; außerdem können Statuswerte (state) gelesen oder geschrieben werden
  • Senden und Empfangen sind ohne besondere Berechtigungen möglich, und es gibt keine Sicherheitsprüfung
  • Verschiedene Systemkomponenten waren von dieser Legacy-API abhängig

Überblick über die Schwachstelle

  • Alle Prozesse in Apples Betriebssystemen können Darwin Notifications empfangen, ohne dass dafür besondere Berechtigungen nötig sind
  • Es gab eine strukturelle Lücke, durch die selbst sandboxed Apps Darwin Notifications senden konnten
  • Wegen der begrenzten Datenmenge war das Risiko eines Abflusses sensibler Daten nicht besonders hoch
  • Das Senden bestimmter kritischer Systembenachrichtigungen, etwa einer Meldung zum Start einer Wiederherstellung, konnte das gesamte System beeinflussen
  • Dadurch wurde die Möglichkeit einer Denial-of-Service-(DoS)-Attacke entdeckt

EvilNotify und VeryEvilNotify

  • Mit der EvilNotify-App ließen sich verschiedene Systemreaktionen zwangsweise auslösen
    • Anzeige eines Symbols zur Flüssigkeitserkennung
    • Blockieren von Wi‑Fi und Erzwingen der Mobilfunknutzung
    • Blockieren von Gesten auf Sperrbildschirm und im Kontrollzentrum
    • Wechsel in den Verloren-Modus von „Wo ist?“ usw.
  • Insbesondere konnte man mit der einzelnen Zeile notify_post("com.apple.MobileSync.BackupAgent.RestoreStarted") den Zustand Restore in Progress auslösen
  • Dieser Modus schlägt fehl, weil das Gerät tatsächlich nicht wiederhergestellt wird; die einzige Lösung ist das Drücken der Schaltfläche „Neustart“
  • Die VeryEvilNotify-App wurde mithilfe einer Widget-Erweiterung so umgesetzt, dass der Angriff auch nach einem Neustart automatisch erneut starten konnte
  • Die Widget-Erweiterung wird vom System regelmäßig im Hintergrund ausgeführt und ruft die Funktion notify_post auf, um den Modus „Wiederherstellung läuft“ immer wieder auszulösen
  • Dadurch konnte das Gerät vollständig unbrauchbar werden

Zeitlinie und CVE-Registrierung

  • 26. Juni 2024: Einreichung des ersten Vorfallberichts bei Apple
  • 27. September 2024: Nachricht von Apple, dass an Gegenmaßnahmen gearbeitet wird
  • 28. Januar 2025: Problem behoben und Anspruch auf Bug Bounty bestätigt
  • 11. März 2025: Offizielle Registrierung als CVE-2025-24091 und Behebung in iOS/iPadOS 18.3
  • Die Bug-Bounty-Prämie betrug 17.500 US-Dollar

Reaktion und Gegenmaßnahmen

  • Für das Senden sensibler Darwin Notifications sind nun eingeschränkte Berechtigungen (Entitlements) erforderlich
  • Zum Beispiel wurde die bisherige Benachrichtigung com.apple.MobileBackup.BackupAgent.RestoreStarted in com.apple.private.restrict-post.MobileBackup.BackupAgent.RestoreStarted umbenannt
  • Auch Prozesse, die diese Benachrichtigung empfangen, verwenden den neuen Namen, um unbefugtes Senden durch nicht autorisierte Apps zu blockieren
  • Dieses System eingeschränkter Berechtigungen wurde ab iOS 18.2 Beta 2 eingeführt und in iOS 18.3 vollständig abgeschlossen

1 Kommentare

 
GN⁺ 2025-04-28
Hacker-News-Kommentare
  • Interessant ist, dass diese API für die gesamte Nutzung rund um Einstellungen und das Veröffentlichen von Benachrichtigungen keine Berechtigungen verlangt

    • Es gibt eine Möglichkeit, 64-Bit-Informationen zwischen Prozessen auf dem Gerät zu teilen
    • Das ist eine Funktion, die sich gut für appübergreifendes Nutzer-Tracking eignet
    • Wenn das System den Wert speichert und nicht nachverfolgt, aus welcher App er stammt, ist ein persistenter Speicher selbst nach dem Löschen und Neuinstallieren einer App möglich
    • Damit ließe sich das Zurücksetzen von IDFA oder IDFV umgehen
  • Die beschriebene Schwachstelle macht das Gerät nicht wirklich zum „Brick“

    • Zur Wiederherstellung ist eine tethered restore erforderlich
  • 17.500 US-Dollar sind ziemlich ordentlich

    • Bei Blogposts geht es oft um geringe Summen oder darum, dass Unternehmen die Schwachstelle beheben und keine Prämie zahlen
    • Apple hat sich seit 2019 in diesem Bereich verbessert
  • Großartige Arbeit

    • Es ist eine einfache, effektive und starke Schwachstelle
    • Das erinnert an die perfekte Server-Schwachstelle, über die ich vor 20 Jahren mit einem Studienfreund theoretisiert habe
    • Wurde vor zwei Jahren als CVE-2022-23093 entdeckt
  • Ich kann mir vorstellen, was für ein harter Tag das im Büro gewesen sein muss, als das iOS-Core-Team das geprüft hat

  • Mit einer einzigen Codezeile konnte man ein Gerät in den Modus „Wiederherstellung läuft“ versetzen

    • Jeder Prozess konnte eine Benachrichtigung senden und das System so in diesen Modus täuschen
  • Ich vermisse die alten IRC-Zeiten

    • Das erinnert daran, wie gefährlich kleine Änderungen in der Technik sein können
    • Ich frage mich, ob Sicherheit wirklich voraus ist oder nur ständig weitere Lecks stopft
  • Es deutet darauf hin, dass sich auch Drittanbieter-Apps mit eigenem Benachrichtigungssystem auf ähnliche Weise imitieren ließen

    • Ein Gerät ließe sich damit wohl nicht unbrauchbar machen, aber möglicherweise anderes Verhalten auslösen
  • Die Priorität könnte niedrig gewesen sein, weil Nutzer eine bösartige App aktiv installieren müssten

    • Der zeitliche Ablauf gibt mir dabei aber kein Vertrauen
  • Dieser Beitrag war eine großartige Lektüre

    • Er zeigt, wie mächtig eine sehr alte API war
    • Es war eine schöne Demo, die sämtliche Low-Level-Zustände von iOS auslösen konnte
    • Ich frage mich, was aus notify_post inzwischen geworden ist