macOS TCC Bypasses
Volgens Funksionaliteit
Skryf Omgang
Dit is nie 'n omgang nie, dit is net hoe TCC werk: Dit beskerm nie teen skryf nie. As Terminal nie toegang het om die Lessenaar van 'n gebruiker te lees nie, kan dit steeds daarin skryf:
Die uitgebreide attribuut com.apple.macl
word by die nuwe lêer gevoeg om die skeppersprogram toegang te gee om dit te lees.
TCC ClickJacking
Dit is moontlik om 'n venster oor die TCC-prompt te plaas om die gebruiker dit te laat aanvaar sonder om dit te besef. Jy kan 'n bewys van konsep vind in TCC-ClickJacking.
TCC Aanvraag per willekeurige naam
'n Aanvaller kan toepassings met enige naam skep (bv. Finder, Google Chrome...) in die Info.plist
en dit laat versoek om toegang tot 'n paar TCC-beskermde plekke. Die gebruiker sal dink dat die regte toepassing die een is wat hierdie toegang versoek.
Boonop is dit moontlik om die regte toepassing van die Dock te verwyder en die valse een daarop te plaas, sodat wanneer die gebruiker op die valse een klik (wat dieselfde ikoon kan gebruik) dit die regte een kan aanroep, vir TCC-toestemmings kan vra en 'n kwaadwillige program kan uitvoer, sodat die gebruiker glo dat die regte toepassing die toegang versoek het.
Meer inligting en bewys van konsep in:
SSH Omgang
Standaard het toegang via SSH "Volle Skyf Toegang". Om dit uit te skakel, moet jy dit gelys hê maar gedeaktiveer (om dit uit die lys te verwyder sal nie daardie voorregte verwyder nie):
Hier kan jy voorbeelde vind van hoe sommige kwaadwillige programme hierdie beskerming kon omseil:
Let daarop dat jy nou, om SSH te kan aktiveer, Volle Skyf Toegang nodig het
Hanteer uitbreidings - CVE-2022-26767
Die attribuut com.apple.macl
word aan lêers gegee om 'n sekere toepassing toestemming te gee om dit te lees. Hierdie attribuut word ingestel wanneer 'n gebruiker 'n lêer oor 'n toepassing sleep, of wanneer 'n gebruiker 'n lêer dubbelklik om dit met die standaardtoepassing oop te maak.
Dus kan 'n gebruiker 'n kwaadwillige toepassing registreer om al die uitbreidings te hanteer en Launch Services te roep om enige lêer oop te maak (sodat die kwaadwillige lêer toegang kry om dit te lees).
iCloud
Die toestemming com.apple.private.icloud-account-access
dit is moontlik om te kommunikeer met die com.apple.iCloudHelper
XPC-diens wat iCloud-token sal voorsien.
iMovie en Garageband het hierdie toestemming en ander wat toegelaat het.
Vir meer inligting oor die uitbuiting om icloud-tokens te kry van daardie toestemming, kyk na die geselsie: #OBTS v5.0: "Wat Gebeur op jou Mac, Bly op Apple se iCloud?!" - Wojciech Regula
kTCCServiceAppleEvents / Outomatisering
'n Toepassing met die kTCCServiceAppleEvents
toestemming sal in staat wees om ander Toepassings te beheer. Dit beteken dat dit in staat kan wees om die toestemmings wat aan die ander Toepassings verleen is, te misbruik.
Vir meer inligting oor Apple-skripte kyk:
Byvoorbeeld, as 'n Toepassing Outomatiseringstoestemming oor iTerm
het, byvoorbeeld in hierdie voorbeeld Terminal
het toegang oor iTerm:
Oor iTerm
Terminal, wat nie FDA het nie, kan iTerm aanroep, wat dit het, en dit gebruik om aksies uit te voer:
Oor Finder
Of as 'n toepassing toegang oor Finder het, kan dit 'n skrapsel soos hierdie wees:
Volgens App-gedrag
CVE-2020–9934 - TCC
Die gebruikersland tccd daemon wat die HOME
env veranderlike gebruik om toegang te verkry tot die TCC-gebruikersdatabasis vanaf: $HOME/Library/Application Support/com.apple.TCC/TCC.db
Volgens hierdie Stack Exchange pos en omdat die TCC daemon hardloop via launchd
binne die huidige gebruiker se domein, is dit moontlik om alle omgewingsveranderlikes wat daaraan oorgedra word, te beheer.
Dus kan 'n aanvaller die $HOME
omgewingsveranderlike in launchctl
instel om te verwys na 'n beheerde gids, die TCC daemon herlaai, en dan die TCC-databasis direk wysig om homself elke TCC-toestemming beskikbaar te gee sonder om ooit die eindgebruiker te vra.
PoC:
CVE-2021-30761 - Notas
Notas het toegang tot TCC-beskermde plekke gehad, maar wanneer 'n nota geskep word, word dit geskep in 'n nie-beskermde plek. So, jy kon notas vra om 'n beskermde lêer in 'n nota te kopieer (dus in 'n nie-beskermde plek) en dan die lêer te benader:
CVE-2021-30782 - Translokasie
Die binêre /usr/libexec/lsd
met die biblioteek libsecurity_translocate
het die entitlement com.apple.private.nullfs_allow
gehad wat dit toegelaat het om 'n nullfs-koppelpunt te skep en het die entitlement com.apple.private.tcc.allow
met kTCCServiceSystemPolicyAllFiles
gehad om toegang tot elke lêer te verkry.
Dit was moontlik om die kwarantynkenmerk by "Library" toe te voeg, die com.apple.security.translocation
XPC-diens te roep en dan sou dit Library na $TMPDIR/AppTranslocation/d/d/Library
in kaart bring waar al die dokumente binne Library benader kon word.
CVE-2023-38571 - Musiek & TV
Musiek
het 'n interessante kenmerk: Wanneer dit loop, sal dit die lêers wat na ~/Musiek/Musiek/Media.localized/Automatically Add to Music.localized
gesleep word, in die gebruiker se "medialêer" importeer. Verder, roep dit iets soos: **rename(a, b);** waar
aen
b` is:
a = "~/Musiek/Musiek/Media.localized/Automatically Add to Music.localized/myfile.mp3"
b = "~/Musiek/Musiek/Media.localized/Automatically Add to Music.localized/Not Added.localized/2023-09-25 11.06.28/myfile.mp3
Hierdie rename(a, b);
-gedrag is vatbaar vir 'n Race Condition, aangesien dit moontlik is om 'n valse TCC.db-lêer binne die Automatically Add to Music.localized
-vouer te plaas en dan wanneer die nuwe vouer(b) geskep word om die lêer te kopieer, dit te verwyder, en dit te verwys na ~/Library/Application Support/com.apple.TCC
/.
SQLITE_SQLLOG_DIR - CVE-2023-32422
As SQLITE_SQLLOG_DIR="pad/vouer"
basies beteken dat enige oop db na daardie pad gekopieer word. In hierdie CVE is hierdie beheer misbruik om binne 'n SQLite-databasis te skryf wat deur 'n proses met FDA die TCC-databasis oopgemaak gaan word, en dan SQLITE_SQLLOG_DIR
misbruik met 'n symboliese skakel in die lêernaam sodat wanneer daardie databasis oopgemaak word, die gebruiker se TCC.db oorskryf word met die geopen een.
Meer inligting in die skryfstuk en in die geselsie.
SQLITE_AUTO_TRACE
As die omgewingsveranderlike SQLITE_AUTO_TRACE
ingestel is, sal die biblioteek libsqlite3.dylib
begin om al die SQL-navrae te log. Baie toepassings het hierdie biblioteek gebruik, dus was dit moontlik om al hulle SQLite-navrae te log.
Verskeie Apple-toepassings het hierdie biblioteek gebruik om toegang tot TCC-beskermde inligting te verkry.
MTL_DUMP_PIPELINES_TO_JSON_FILE - CVE-2023-32407
Hierdie omgewingsveranderlike word deur die Metal
-raamwerk gebruik wat 'n afhanklikheid is van verskeie programme, veral Music
, wat FDA het.
Stel die volgende in: MTL_DUMP_PIPELINES_TO_JSON_FILE="pad/naam"
. As pad
'n geldige gids is, sal die fout geaktiveer word en kan ons fs_usage
gebruik om te sien wat in die program aangaan:
'n lêer sal geopen word, genaamd
pad/.dat.nosyncXXXX.XXXXXX
(X is lukraak)een of meer
write()
s sal die inhoud na die lêer skryf (ons beheer dit nie)pad/.dat.nosyncXXXX.XXXXXX
sal hernoem word napad/naam
Dit is 'n tydelike lêer skryf, gevolg deur 'n hernoem(oud, nuut)
wat nie veilig is nie.
Dit is nie veilig nie omdat dit die ou en nuwe paaie apart moet oplos, wat tyd kan neem en vatbaar kan wees vir 'n Wedloopvoorwaarde. Vir meer inligting kan jy die xnu
-funksie renameat_internal()
nagaan.
Dus, as 'n bevoorregte proses hernoem vanaf 'n gids wat jy beheer, kan jy 'n RCE wen en dit laat toegang verkry tot 'n ander lêer of, soos in hierdie CVE, die lêer wat die bevoorregte program geskep het, oopmaak en 'n FD stoor.
As die hernoem toegang tot 'n gids wat jy beheer, terwyl jy die bronlêer gewysig het of 'n FD daarvoor het, verander jy die bestemmingslêer (of gids) om na 'n simboolskakel te wys, sodat jy kan skryf wanneer jy wil.
Dit was die aanval in die CVE: Byvoorbeeld, om die gebruiker se TCC.db
te oorskryf, kan ons:
/Gebruikers/hacker/onskakel
skep om te wys na/Gebruikers/hacker/Biblioteek-toepassing/Ondersteuning/com.apple.TCC/
skep die gids
/Gebruikers/hacker/tmp/
stel
MTL_DUMP_PIPELINES_TO_JSON_FILE=/Gebruikers/hacker/tmp/TCC.db
aktiveer die fout deur
Music
met hierdie omgewingsveranderlike te hardloopvang die
open()
van/Gebruikers/hacker/tmp/.dat.nosyncXXXX.XXXXXX
(X is lukraak)hier open ons ook hierdie lêer vir skryf, en hou die lêerbeskrywer vas
skakel atomies
/Gebruikers/hacker/tmp
met/Gebruikers/hacker/onskakel
in 'n lusons doen dit om ons kanse om te slaag te maksimeer aangesien die wedloopvenster baie smal is, maar om die wedloop te verloor het verwaarloosbare nadele
wag 'n bietjie
toets of ons gelukkig was
indien nie, hardloop weer van voor af aan
Meer inligting in https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html
Nou, as jy probeer om die omgewingsveranderlike MTL_DUMP_PIPELINES_TO_JSON_FILE
te gebruik, sal programme nie begin nie
Apple Remote Desktop
As root kan jy hierdie diens aktiveer en die ARD-agent sal volle skakeltoegang hê wat dan deur 'n gebruiker misbruik kan word om dit 'n nuwe TCC-gebruikersdatabasis te laat kopieer.
Deur NFSHomeDirectory
TCC gebruik 'n databasis in die gebruiker se TUIS-gids om toegang tot bronne wat spesifiek vir die gebruiker is, te beheer by $HOME/Biblioteek-toepassing/Ondersteuning/com.apple.TCC/TCC.db. Daarom, as die gebruiker daarin slaag om TCC te herlaai met 'n $HOME-omgewingsveranderlike wat na 'n ander gids wys, kan die gebruiker 'n nuwe TCC-databasis skep in /Biblioteek-toepassing/Ondersteuning/com.apple.TCC/TCC.db en TCC mislei om enige TCC-toestemming aan enige toepassing toe te ken.
Let daarop dat Apple die instelling wat binne die gebruiker se profiel gestoor word in die NFSHomeDirectory
-eienskap gebruik vir die waarde van $HOME
, dus as jy 'n toepassing kompromitteer met toestemmings om hierdie waarde te wysig (kTCCServiceSystemPolicySysAdminFiles
), kan jy hierdie opsie bewapen met 'n TCC-omweg.
CVE-2021-30970 - Powerdir
Die eerste POC gebruik dsexport en dsimport om die HOME-gids van die gebruiker te wysig.
Kry 'n csreq-klont vir die teikentoepassing.
Plant 'n valse TCC.db-lêer met vereiste toegang en die csreq-klont.
Voer die gebruiker se Dienste-gids uit met dsexport.
Wysig die Dienste-gids om die gebruiker se tuisgids te verander.
Voer die gewysigde Dienste-gids in met dsimport.
Stop die gebruiker se tccd en herlaai die proses.
Die tweede POC het /usr/libexec/configd
gebruik wat com.apple.private.tcc.allow
met die waarde kTCCServiceSystemPolicySysAdminFiles
gehad het.
Dit was moontlik om configd
met die -t
-opsie te hardloop, 'n aanvaller kon 'n aangepaste Bondel om te laai spesifiseer. Daarom vervang die uitbuiting die dsexport
en dsimport
-metode om die gebruiker se tuisgids te verander met 'n configd
-kode-inspuiting.
Vir meer inligting, kyk na die oorspronklike verslag.
Deur prosesinspuiting
Daar is verskillende tegnieke om kode binne 'n proses in te spuit en sy TCC-voorregte te misbruik:
Verder is die mees algemene prosesinspuiting om TCC te omseil via inproppe (laai biblioteek). Inproppe is ekstra kode gewoonlik in die vorm van biblioteke of plist, wat deur die hooftoepassing gelaai sal word en sal uitgevoer word onder sy konteks. Daarom, as die hooftoepassing toegang tot TCC-beperkte lêers gehad het (via toegestane toestemmings of toekennings), sal die aangepaste kode dit ook hê.
CVE-2020-27937 - Directory Utility
Die toepassing /System/Library/CoreServices/Applications/Directory Utility.app
het die toekennings kTCCServiceSystemPolicySysAdminFiles
gehad, het inproppe gelaai met die .daplug
-uitbreiding en het nie die versterkte uitvoering gehad nie.
Om hierdie CVE te bewapen, word die NFSHomeDirectory
verander (deur die vorige toekenning te misbruik) sodat die gebruiker die TCC-databasis kan oorneem om TCC te omseil.
Vir meer inligting, kyk na die oorspronklike verslag.
CVE-2020-29621 - Coreaudiod
Die binêre /usr/sbin/coreaudiod
het die entitlements com.apple.security.cs.disable-library-validation
en com.apple.private.tcc.manager
gehad. Die eerste laat kode-inspuiting toe en die tweede gee dit toegang om TCC te bestuur.
Hierdie binêre het toegelaat om derde party invoegtoepassings van die folder /Library/Audio/Plug-Ins/HAL
te laai. Daarom was dit moontlik om 'n invoegtoepassing te laai en die TCC-toestemmings te misbruik met hierdie PoC:
Vir meer inligting kyk na die oorspronklike verslag.
Toestel-Abstraksie-Laag (DAL) Inproppe
Stelseltoepassings wat kamerstroom oopmaak via Core Media I/O (apps met kTCCServiceCamera
) laai in die proses hierdie inproppe wat in /Library/CoreMediaIO/Plug-Ins/DAL
geleë is (nie SIP-beperk nie).
Net deur 'n biblioteek met die gewone konstrukteur daar te stoor, sal werk om kode in te spuit.
Verskeie Apple-toepassings was vatbaar hiervoor.
Firefox
Die Firefox-toepassing het die com.apple.security.cs.disable-library-validation
en com.apple.security.cs.allow-dyld-environment-variables
toestemmings:
Vir meer inligting oor hoe om hierdie maklik te misbruik, kontroleer die oorspronklike verslag.
CVE-2020-10006
Die binêre lêer /system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl
het die toestemmings com.apple.private.tcc.allow
en com.apple.security.get-task-allow
gehad, wat dit moontlik gemaak het om kode binne die proses in te spuit en die TCC-voorregte te gebruik.
CVE-2023-26818 - Telegram
Telegram het die toestemmings com.apple.security.cs.allow-dyld-environment-variables
en com.apple.security.cs.disable-library-validation
gehad, dus was dit moontlik om dit te misbruik om toegang tot sy regte te kry soos byvoorbeeld opname met die kamera. Jy kan die nutlading in die skryfstuk vind.
Merk op hoe om die omgewingsveranderlike te gebruik om 'n biblioteek te laai, 'n aangepaste plist is geskep om hierdie biblioteek in te spuit en launchctl
is gebruik om dit te begin:
Deur oop aanroepings
Dit is moontlik om open
selfs te roep terwyl jy in 'n sandboks is
Terminal Skripte
Dit is redelik algemeen om terminale Volle Skyftoegang (FDA) te gee, ten minste in rekenaars wat deur tegniese mense gebruik word. En dit is moontlik om .terminal
skripte te roep deur dit te gebruik.
.terminal
skripte is plist lêers soos hierdie een met die bevel om uit te voer in die CommandString
sleutel:
'n Toepassing kan 'n terminaalskrip skryf op 'n plek soos /tmp en dit begin met 'n kom soos:'
Deur te koppel
CVE-2020-9771 - mount_apfs TCC omseiling en voorreg-escalatie
Enige gebruiker (selfs onbevoorregtes) kan 'n tydmasjien-snapshot skep en koppel en ALLE lêers van daardie snapshot toegang.
Die enigste voorreg wat nodig is, is vir die gebruikte toepassing (soos Terminal
) om Volle Skyf Toegang (FDA) toegang (kTCCServiceSystemPolicyAllfiles
) te hê wat deur 'n administrateur verleen moet word.
'n Meer gedetailleerde verduideliking kan gevind word in die oorspronklike verslag.
CVE-2021-1784 & CVE-2021-30808 - Monteer oor TCC-lêer
Selfs as die TCC DB-lêer beskerm is, was dit moontlik om oor die gids te monteer 'n nuwe TCC.db-lêer:
Kyk na die volledige uitbuiting in die oorspronklike skryfstuk.
asr
Die hulpmiddel /usr/sbin/asr
het dit moontlik gemaak om die hele skyf te kopieer en dit op 'n ander plek te koppel deur TCC-beskerming te omseil.
Liggingdiens
Daar is 'n derde TCC-databasis in /var/db/locationd/clients.plist
om kliënte aan te dui wat toegelaat is om liggingdiens te gebruik.
Die vouer /var/db/locationd/
was nie beskerm teen DMG-koppeling nie sodat dit moontlik was om ons eie plist te koppel.
Deur aanvangstoepassings
Deur grep
In verskeie gevalle sal lêers sensitiewe inligting soos e-posse, telefoonnommers, boodskappe... in nie-beskermde liggings stoor (wat as 'n kwesbaarheid in Apple tel).
Sintetiese Klieks
Dit werk nie meer nie, maar dit het in die verlede gewerk:
'n Ander manier om CoreGraphics-gebeurtenisse te gebruik:
Verwysing
Last updated