macOS Dangerous Entitlements & TCC perms
Zauważ, że uprawnienia zaczynające się od com.apple
nie są dostępne dla stron trzecich, tylko Apple może je przyznać.
Wysokie
com.apple.rootless.install.heritable
com.apple.rootless.install.heritable
Uprawnienie com.apple.rootless.install.heritable
pozwala na obejście SIP. Sprawdź to dla więcej informacji.
com.apple.rootless.install
com.apple.rootless.install
Uprawnienie com.apple.rootless.install
pozwala na obejście SIP. Sprawdź to dla więcej informacji.
com.apple.system-task-ports
(wcześniej nazywane task_for_pid-allow
)
com.apple.system-task-ports
(wcześniej nazywane task_for_pid-allow
)To uprawnienie pozwala uzyskać port zadania dla dowolnego procesu, z wyjątkiem jądra. Sprawdź to dla więcej informacji.
com.apple.security.get-task-allow
com.apple.security.get-task-allow
To uprawnienie pozwala innym procesom z uprawnieniem com.apple.security.cs.debugger
uzyskać port zadania procesu uruchamianego przez binarny plik z tym uprawnieniem i wstrzyknąć w niego kod. Sprawdź to dla więcej informacji.
com.apple.security.cs.debugger
com.apple.security.cs.debugger
Aplikacje z uprawnieniem Debugging Tool mogą wywołać task_for_pid()
w celu pobrania prawidłowego portu zadania dla aplikacji niepodpisanych i stron trzecich z uprawnieniem Get Task Allow
ustawionym na true
. Jednak nawet z uprawnieniem narzędzia do debugowania, debugger nie może uzyskać portów zadań procesów, które nie mają uprawnienia Get Task Allow
, a więc są chronione przez System Integrity Protection. Sprawdź to dla więcej informacji.
com.apple.security.cs.disable-library-validation
com.apple.security.cs.disable-library-validation
To uprawnienie pozwala na ładowanie frameworków, wtyczek lub bibliotek bez podpisywania przez Apple lub podpisywania tym samym identyfikatorem zespołu co główny plik wykonywalny, więc atakujący mógłby wykorzystać niektóre arbitralne ładowanie bibliotek do wstrzyknięcia kodu. Sprawdź to dla więcej informacji.
com.apple.private.security.clear-library-validation
com.apple.private.security.clear-library-validation
To uprawnienie jest bardzo podobne do com.apple.security.cs.disable-library-validation
ale zamiast bezpośrednio wyłączać walidację bibliotek, pozwala procesowi wywołać wywołanie systemowe csops
w celu jej wyłączenia.
Sprawdź to dla więcej informacji.
com.apple.security.cs.allow-dyld-environment-variables
com.apple.security.cs.allow-dyld-environment-variables
To uprawnienie pozwala na użycie zmiennych środowiskowych DYLD, które mogą być używane do wstrzykiwania bibliotek i kodu. Sprawdź to dla więcej informacji.
com.apple.private.tcc.manager
lub com.apple.rootless.storage
.TCC
com.apple.private.tcc.manager
lub com.apple.rootless.storage
.TCC
Zgodnie z tym blogiem i tym blogiem, te uprawnienia pozwalają na modyfikację bazy danych TCC.
system.install.apple-software
i system.install.apple-software.standar-user
system.install.apple-software
i system.install.apple-software.standar-user
Te uprawnienia pozwalają na instalowanie oprogramowania bez pytania o zgodę użytkownika, co może być pomocne dla eskalacji uprawnień.
com.apple.private.security.kext-management
com.apple.private.security.kext-management
Uprawnienie potrzebne do poproszenia jądra o załadowanie rozszerzenia jądra.
com.apple.private.icloud-account-access
com.apple.private.icloud-account-access
Uprawnienie com.apple.private.icloud-account-access
pozwala na komunikację z usługą XPC com.apple.iCloudHelper
, która dostarczy tokeny iCloud.
iMovie i Garageband miały to uprawnienie.
Aby uzyskać więcej informacji na temat wykorzystania do uzyskania tokenów iCloud z tego uprawnienia, sprawdź prezentację: #OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula
com.apple.private.tcc.manager.check-by-audit-token
com.apple.private.tcc.manager.check-by-audit-token
TODO: Nie wiem, co to pozwala zrobić
com.apple.private.apfs.revert-to-snapshot
com.apple.private.apfs.revert-to-snapshot
TODO: W tym raporcie wspomniano, że może to być używane do aktualizacji chronionych zawartości SSV po ponownym uruchomieniu. Jeśli wiesz, jak to zrobić, prześlij PR!
com.apple.private.apfs.create-sealed-snapshot
com.apple.private.apfs.create-sealed-snapshot
TODO: W tym raporcie wspomniano, że może to być używane do aktualizacji chronionych zawartości SSV po ponownym uruchomieniu. Jeśli wiesz, jak to zrobić, prześlij PR!
keychain-access-groups
keychain-access-groups
Ta lista uprawnień określa grupy kluczy do których ma dostęp aplikacja:
kTCCServiceSystemPolicyAllFiles
kTCCServiceSystemPolicyAllFiles
Daje uprawnienia do Pełnego dostępu do dysku, jedno z najwyższych uprawnień TCC, jakie można mieć.
kTCCServiceAppleEvents
kTCCServiceAppleEvents
Pozwala aplikacji wysyłać zdarzenia do innych aplikacji, które są często używane do automatyzacji zadań. Kontrolując inne aplikacje, może nadużyć udzielonych uprawnień tym innym aplikacjom.
Na przykład zmuszając je do poproszenia użytkownika o hasło:
lub zmuszając je do wykonywania dowolnych działań.
kTCCServiceEndpointSecurityClient
kTCCServiceEndpointSecurityClient
Pozwala między innymi na zapis do bazy danych TCC użytkowników.
kTCCServiceSystemPolicySysAdminFiles
kTCCServiceSystemPolicySysAdminFiles
Pozwala na zmianę atrybutu NFSHomeDirectory
użytkownika, co zmienia ścieżkę folderu domowego i tym samym umożliwia obejście TCC.
kTCCServiceSystemPolicyAppBundles
kTCCServiceSystemPolicyAppBundles
Pozwala na modyfikację plików wewnątrz pakietów aplikacji (wewnątrz app.app), co jest domyślnie niedozwolone.
Można sprawdzić, kto ma ten dostęp w Ustawienia systemowe > Prywatność i bezpieczeństwo > Zarządzanie aplikacjami.
kTCCServiceAccessibility
kTCCServiceAccessibility
Proces będzie mógł nadużywać funkcje dostępności macOS, co oznacza, że na przykład będzie mógł naciskać klawisze. Dlatego mógłby poprosić o dostęp do kontrolowania aplikacji takiej jak Finder i zatwierdzić okno dialogowe z tym uprawnieniem.
Średni
com.apple.security.cs.allow-jit
com.apple.security.cs.allow-jit
To uprawnienie pozwala na tworzenie pamięci, która jest zapisywalna i wykonywalna poprzez przekazanie flagi MAP_JIT
do funkcji systemowej mmap()
. Sprawdź to dla więcej informacji.
com.apple.security.cs.allow-unsigned-executable-memory
com.apple.security.cs.allow-unsigned-executable-memory
To uprawnienie pozwala na nadpisanie lub łatanie kodu C, używanie długo przestarzałego NSCreateObjectFileImageFromMemory
(co jest zasadniczo niebezpieczne), lub używanie frameworku DVDPlayback. Sprawdź to dla więcej informacji.
Uwzględnienie tego uprawnienia narazia Twoją aplikację na powszechne podatności w językach kodu nieszyfrowanego w pamięci. Rozważ dokładnie, czy Twoja aplikacja potrzebuje tej wyjątkowej zgody.
com.apple.security.cs.disable-executable-page-protection
com.apple.security.cs.disable-executable-page-protection
To uprawnienie pozwala na modyfikowanie sekcji własnych plików wykonywalnych na dysku w celu wymuszenia wyjścia. Sprawdź to dla więcej informacji.
Uprawnienie Wyłącz Ochronę Strony Wykonywalnej jest skrajnym uprawnieniem, które usuwa podstawową ochronę bezpieczeństwa z Twojej aplikacji, umożliwiając atakującemu przepisanie kodu wykonywalnego Twojej aplikacji bez wykrycia. Wybieraj węższe uprawnienia, jeśli to możliwe.
com.apple.security.cs.allow-relative-library-loads
com.apple.security.cs.allow-relative-library-loads
TODO
com.apple.private.nullfs_allow
com.apple.private.nullfs_allow
To uprawnienie pozwala na zamontowanie systemu plików nullfs (domyślnie zabronione). Narzędzie: mount_nullfs.
kTCCServiceAll
kTCCServiceAll
Zgodnie z tym wpisem na blogu, to uprawnienie TCC zazwyczaj znajduje się w formie:
Zezwól procesowi na poproszenie o wszystkie uprawnienia TCC.
kTCCServicePostEvent
kTCCServicePostEvent
Last updated