macOS Dangerous Entitlements & TCC perms

Support HackTricks

Beachte, dass Berechtigungen, die mit com.apple beginnen, nicht für Dritte verfügbar sind, nur Apple kann sie gewähren.

Hoch

com.apple.rootless.install.heritable

Die Berechtigung com.apple.rootless.install.heritable ermöglicht es, SIP zu umgehen. Siehe dies für mehr Informationen.

com.apple.rootless.install

Die Berechtigung com.apple.rootless.install ermöglicht es, SIP zu umgehen. Siehe dies für mehr Informationen.

com.apple.system-task-ports (früher task_for_pid-allow)

Diese Berechtigung ermöglicht es, den Task-Port für jeden Prozess, außer dem Kernel, zu erhalten. Siehe dies für mehr Informationen.

com.apple.security.get-task-allow

Diese Berechtigung erlaubt es anderen Prozessen mit der Berechtigung `com.apple.security.cs.debugger, den Task-Port des Prozesses zu erhalten, der von der Binärdatei mit dieser Berechtigung ausgeführt wird, und Code darauf zu injizieren. Siehe dies für mehr Informationen.

com.apple.security.cs.debugger

Apps mit der Debugging-Tool-Berechtigung können task_for_pid() aufrufen, um einen gültigen Task-Port für nicht signierte und Drittanbieter-Apps mit der Berechtigung Get Task Allow, die auf true gesetzt ist, abzurufen. Selbst mit der Debugging-Tool-Berechtigung kann ein Debugger jedoch die Task-Ports von Prozessen, die nicht die Berechtigung Get Task Allow haben, und die daher durch die Systemintegritätsschutz geschützt sind, nicht abrufen. Siehe dies für mehr Informationen.

com.apple.security.cs.disable-library-validation

Diese Berechtigung ermöglicht es, Frameworks, Plug-ins oder Bibliotheken zu laden, ohne entweder von Apple signiert zu sein oder mit derselben Team-ID wie die Hauptanwendung signiert zu sein, sodass ein Angreifer einige beliebige Bibliotheksladungen missbrauchen könnte, um Code zu injizieren. Siehe dies für mehr Informationen.

com.apple.private.security.clear-library-validation

Diese Berechtigung ist sehr ähnlich zu com.apple.security.cs.disable-library-validation, aber anstatt die Bibliotheksvalidierung direkt zu deaktivieren, erlaubt sie dem Prozess, einen csops-Systemaufruf zu tätigen, um sie zu deaktivieren. Siehe dies für mehr Informationen.

com.apple.security.cs.allow-dyld-environment-variables

Diese Berechtigung ermöglicht es, DYLD-Umgebungsvariablen zu verwenden, die zum Injizieren von Bibliotheken und Code verwendet werden könnten. Siehe dies für mehr Informationen.

com.apple.private.tcc.manager oder com.apple.rootless.storage.TCC

Laut diesem Blog und diesem Blog, ermöglichen diese Berechtigungen, die TCC-Datenbank zu modifizieren.

system.install.apple-software und system.install.apple-software.standar-user

Diese Berechtigungen ermöglichen es, Software zu installieren, ohne den Benutzer um Erlaubnis zu fragen, was für eine Privilegieneskalation hilfreich sein kann.

com.apple.private.security.kext-management

Berechtigung, die benötigt wird, um den Kernel zu bitten, eine Kernel-Erweiterung zu laden.

com.apple.private.icloud-account-access

Mit der Berechtigung com.apple.private.icloud-account-access ist es möglich, mit dem com.apple.iCloudHelper XPC-Dienst zu kommunizieren, der iCloud-Token bereitstellt.

iMovie und Garageband hatten diese Berechtigung.

Für mehr Informationen über den Exploit, um iCloud-Token aus dieser Berechtigung zu erhalten, siehe den Vortrag: #OBTS v5.0: "Was auf deinem Mac passiert, bleibt in Apples iCloud?!" - Wojciech Regula

com.apple.private.tcc.manager.check-by-audit-token

TODO: Ich weiß nicht, was dies erlaubt.

com.apple.private.apfs.revert-to-snapshot

TODO: In diesem Bericht wird erwähnt, dass dies verwendet werden könnte, um die SSV-geschützten Inhalte nach einem Neustart zu aktualisieren. Wenn du weißt, wie, sende bitte einen PR!

com.apple.private.apfs.create-sealed-snapshot

TODO: In diesem Bericht wird erwähnt, dass dies verwendet werden könnte, um die SSV-geschützten Inhalte nach einem Neustart zu aktualisieren. Wenn du weißt, wie, sende bitte einen PR!

keychain-access-groups

Diese Berechtigung listet die Keychain-Gruppen auf, auf die die Anwendung Zugriff hat:

<key>keychain-access-groups</key>
<array>
<string>ichat</string>
<string>apple</string>
<string>appleaccount</string>
<string>InternetAccounts</string>
<string>IMCore</string>
</array>

kTCCServiceSystemPolicyAllFiles

Gibt Vollzugriff auf die Festplatte-Berechtigungen, eine der höchsten TCC-Berechtigungen, die man haben kann.

kTCCServiceAppleEvents

Erlaubt der App, Ereignisse an andere Anwendungen zu senden, die häufig zum Automatisieren von Aufgaben verwendet werden. Durch die Kontrolle anderer Apps kann es die Berechtigungen missbrauchen, die diesen anderen Apps gewährt wurden.

Wie zum Beispiel, sie dazu zu bringen, den Benutzer nach seinem Passwort zu fragen:

osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'

Oder sie dazu bringen, willkürliche Aktionen auszuführen.

kTCCServiceEndpointSecurityClient

Erlaubt unter anderem, die TCC-Datenbank der Benutzer zu schreiben.

kTCCServiceSystemPolicySysAdminFiles

Erlaubt es, das NFSHomeDirectory-Attribut eines Benutzers zu ändern, was seinen Home-Ordner-Pfad ändert und somit ermöglicht, TCC zu umgehen.

kTCCServiceSystemPolicyAppBundles

Erlaubt das Modifizieren von Dateien innerhalb von App-Bundles (innerhalb von app.app), was standardmäßig nicht erlaubt ist.

Es ist möglich zu überprüfen, wer diesen Zugriff hat in Systemeinstellungen > Datenschutz & Sicherheit > App-Verwaltung.

kTCCServiceAccessibility

Der Prozess wird in der Lage sein, die Zugänglichkeitsfunktionen von macOS auszunutzen, was bedeutet, dass er beispielsweise Tastenanschläge drücken kann. Er könnte also Zugriff anfordern, um eine App wie Finder zu steuern und den Dialog mit dieser Berechtigung zu genehmigen.

Mittel

com.apple.security.cs.allow-jit

Diese Berechtigung erlaubt es, Speicher zu erstellen, der beschreibbar und ausführbar ist, indem das MAP_JIT-Flag an die mmap()-Systemfunktion übergeben wird. Überprüfen Sie dies für weitere Informationen.

com.apple.security.cs.allow-unsigned-executable-memory

Diese Berechtigung erlaubt es, C-Code zu überschreiben oder zu patchen, die längst veraltete NSCreateObjectFileImageFromMemory (die grundsätzlich unsicher ist) zu verwenden oder das DVDPlayback-Framework zu nutzen. Überprüfen Sie dies für weitere Informationen.

Das Einbeziehen dieser Berechtigung setzt Ihre App gängigen Schwachstellen in speicherunsicheren Programmiersprachen aus. Überlegen Sie sorgfältig, ob Ihre App diese Ausnahme benötigt.

com.apple.security.cs.disable-executable-page-protection

Diese Berechtigung erlaubt es, Abschnitte seiner eigenen ausführbaren Dateien auf der Festplatte zu ändern, um gewaltsam zu beenden. Überprüfen Sie dies für weitere Informationen.

Die Berechtigung zum Deaktivieren des Schutzes für ausführbaren Speicher ist eine extreme Berechtigung, die einen grundlegenden Sicherheitschutz Ihrer App entfernt, wodurch es einem Angreifer möglich wird, den ausführbaren Code Ihrer App unbemerkt umzuschreiben. Bevorzugen Sie, wenn möglich, engere Berechtigungen.

com.apple.security.cs.allow-relative-library-loads

TODO

com.apple.private.nullfs_allow

Diese Berechtigung erlaubt es, ein nullfs-Dateisystem zu mounten (standardmäßig verboten). Tool: mount_nullfs.

kTCCServiceAll

Laut diesem Blogbeitrag wird diese TCC-Berechtigung normalerweise in folgender Form gefunden:

[Key] com.apple.private.tcc.allow-prompting
[Value]
[Array]
[String] kTCCServiceAll

Erlaube dem Prozess, nach allen TCC-Berechtigungen zu fragen.

kTCCServicePostEvent

Unterstütze HackTricks

Last updated