
Exploit für CVE-2023-38571
macOS Music und TV führen eine unsichere Umbenennung durch, was zu FDA führt, indem man die volle Kontrolle über die TCC.db des Benutzers erlangt.
Ich habe diesen Fehler in separaten Tickets für jede App gemeldet; bitte bei Bedarf zusammenführen.
Das zugrunde liegende Problem ist, dass diese Apps FDA besitzen, aber ihre Dateioperationen nicht absichern.
Music und TV sind in dieser Hinsicht fast identisch, nur die Pfade sind unterschiedlich. Ich verwende ab hier Music als Beispiel. Für TV siehe bitte den Exploit-Code; er ist sehr einfach.
Music bietet eine Funktion zum Kopieren von Dateien in die Benutzer-Mediathek über einen speziellen Ordner, in den ein Benutzer Dateien "ablegen" kann.
Ein Benutzer kann einfach eine Datei in ~/Music/Music/Media.localized/Automatically Add to Music.localized/ erstellen.
Music nimmt diese Datei und führt eine unsichere Umbenennung in "~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized" durch.
Wenn wir eine gültige TCC.db verwenden (die der Exploit generiert), wird sie in den Ordner "Not Added.localized" kopiert, da es sich nicht um eine Mediendatei handelt. Das ist sehr hilfreich, da wir diese Umbenennung mithilfe eines einfachen Symlink-Race in den tatsächlichen Speicherort der TCC.db umleiten können.
Der Exploit ist technisch gesehen eine Race Condition, aber er ist so zuverlässig, dass ich nicht einmal einen Wiederholungsmechanismus implementiert habe, da er immer beim ersten Versuch gelingt.
Verwendung für Music:
DEBUG=1 ./librarian.py 1
Verwendung für TV:
DEBUG=1 ./librarian.py 2
Zum Zurücksetzen der TCC.db zwischen Tests:
launchctl stop com.apple.tccd launchctl start com.apple.tccd sleep 1 tccutil reset All