macOS TCC Bypasses
Kwa kazi
Kupita kwa Kuandika
Hii sio njia ya kupita, ni jinsi TCC inavyofanya kazi: Haitoi ulinzi dhidi ya kuandika. Ikiwa Terminal haina ufikiaji wa kusoma Desktop ya mtumiaji bado inaweza kuandika ndani yake:
Mkusanyiko wa muda mrefu com.apple.macl
huongezwa kwa faili mpya ili kumpa app ya waundaji upatikanaji wa kuisoma.
TCC ClickJacking
Inawezekana kuweka dirisha juu ya dirisha la TCC ili mtumiaji iafiki bila kugundua. Unaweza kupata uthibitisho wa dhana katika TCC-ClickJacking.
Ombi la TCC kwa jina la uongo
Mshambuliaji anaweza kuunda programu zenye jina lolote (k.m. Finder, Google Chrome...) katika Info.plist
na kufanya iombe upatikanaji wa eneo fulani lililolindwa na TCC. Mtumiaji atadhani kuwa programu halali ndiyo inayoomba upatikanaji huu. Zaidi ya hayo, inawezekana kuondoa programu halali kutoka Dock na kuweka ile bandia, hivyo mtumiaji akibofya ile bandia (ambayo inaweza kutumia alama ile ile) inaweza kuita ile halali, kuomba ruhusa za TCC na kutekeleza zisizo, hivyo kumfanya mtumiaji aamini kuwa programu halali ndiyo iliyoomba upatikanaji.
Maelezo zaidi na uthibitisho wa dhana katika:
pagemacOS Privilege EscalationKupuuza SSH
Kwa chaguo-msingi, upatikanaji kupitia SSH ulikuwa na "Full Disk Access". Ili kulemaza hii unahitaji kuwa imeorodheshwa lakini imelemazwa (kuiondoa kwenye orodha haitaondoa ruhusa hizo):
Hapa unaweza kupata mifano ya jinsi baadhi ya malware zilivyoweza kuzidi kinga hii:
Tafadhali kumbuka kuwa sasa, ili kuweza kuwezesha SSH unahitaji Full Disk Access
Kusimamia viendelezi - CVE-2022-26767
Mkusanyiko wa muda mrefu com.apple.macl
hutolewa kwa faili ili kumpa programu fulani ruhusa ya kuisoma. Mkusanyiko huu unawekwa wakati wa kuburuta na kuacha faili juu ya programu, au wakati mtumiaji anapobofya mara mbili faili kufungua na programu ya default.
Hivyo, mtumiaji anaweza kujiandikisha programu ya uovu kusimamia viendelezi vyote na kuita Huduma za Kuanzisha kufungua faili yoyote (hivyo faili ya uovu itapewa ruhusa ya kuisoma).
iCloud
Ruhusa com.apple.private.icloud-account-access
inawezekana kuwasiliana na huduma ya XPC ya com.apple.iCloudHelper
ambayo itatoa vitambulisho vya iCloud.
iMovie na Garageband walikuwa na ruhusa hii na nyingine zilizoruhusiwa.
Kwa maelezo zaidi kuhusu udanganyifu wa kupata vitambulisho vya iCloud kutoka kwa ruhusa hiyo, angalia mazungumzo: #OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula
kTCCServiceAppleEvents / Uendeshaji
Programu yenye ruhusa ya kTCCServiceAppleEvents
itaweza kudhibiti Programu nyingine. Hii inamaanisha inaweza kutumia vibaya ruhusa zilizotolewa kwa Programu nyingine.
Kwa maelezo zaidi kuhusu Skripti za Apple angalia:
pagemacOS Apple ScriptsKwa mfano, ikiwa Programu ina ruhusa ya Uendeshaji juu ya iTerm
, kama ilivyo katika mfano huu Terminal
ina upatikanaji juu ya iTerm:
Juu ya iTerm
Terminal, ambayo haina FDA, inaweza kuita iTerm, ambayo inayo, na kutumia kufanya vitendo:
Juu ya Finder
Au ikiwa Programu ina ufikiaji juu ya Finder, inaweza kuwa na script kama hii:
Kwa Tabia ya Programu
CVE-2020–9934 - TCC
Kizimbani cha tccd kinatumia HOME
env kibadala kufikia database ya watumiaji wa TCC kutoka: $HOME/Library/Application Support/com.apple.TCC/TCC.db
Kulingana na chapisho hili la Stack Exchange na kwa sababu kizimbani cha TCC kinakimbia kupitia launchd
ndani ya uwanja wa mtumiaji wa sasa, ni inawezekana kudhibiti mazingira yote yanayopitishwa kwake.
Hivyo, mshambuliaji anaweza kuweka kibadala cha $HOME
katika launchctl
ili kuelekeza kwenye directory iliyodhibitiwa, kuanzisha upya kizimbani cha TCC, na kisha kurekebisha moja kwa moja database ya TCC ili kujipa kila ruhusa ya TCC inayopatikana bila kuwahi kuuliza mtumiaji mwisho.
PoC:
CVE-2021-30761 - Maelezo
Maelezo yalikuwa na ufikiaji wa maeneo yaliyolindwa na TCC lakini wakati maelezo yanapotengenezwa hii hutengenezwa katika eneo lisilolindwa. Kwa hivyo, ungeweza kuomba maelezo kuiga faili iliyolindwa katika maelezo (hivyo katika eneo lisilolindwa) na kisha kupata ufikiaji wa faili:
CVE-2021-30782 - Uhamishaji
Binary /usr/libexec/lsd
pamoja na maktaba libsecurity_translocate
ilikuwa na ruhusa ya com.apple.private.nullfs_allow
ambayo iliruhusu kuunda nullfs mount na ilikuwa na ruhusa ya com.apple.private.tcc.allow
na kTCCServiceSystemPolicyAllFiles
kufikia kila faili.
Ilikuwa inawezekana kuongeza sifa ya karantini kwa "Library", kuita huduma ya XPC ya com.apple.security.translocation
na kisha itaifanya Library iwe $TMPDIR/AppTranslocation/d/d/Library
ambapo nyaraka zote ndani ya Library zingeweza kufikiwa.
CVE-2023-38571 - Muziki & TV
Muziki
ina kipengele kizuri: Wakati inaendeshwa, ita ingiza faili zilizoporwa kwa ~/Muziki/Muziki/Media.localized/Ongeza Moja kwa Muziki.localized
kwenye "maktaba ya media" ya mtumiaji. Zaidi ya hayo, inaita kitu kama: rename(a, b);
ambapo a
na b
ni:
a = "~/Muziki/Muziki/Media.localized/Ongeza Moja kwa Muziki.localized/myfile.mp3"
b = "~/Muziki/Muziki/Media.localized/Ongeza Moja kwa Muziki.localized/Haijaongezwa.localized/2023-09-25 11.06.28/myfile.mp3
Tabia hii ya rename(a, b);
ilikuwa hatarini kwa Hali ya Mashindano, kwani ilikuwa inawezekana kuweka faili bandia ya TCC.db ndani ya folda ya Ongeza Moja kwa Muziki.localized
na kisha wakati folda mpya (b) inapotengenezwa kuiga faili, kufuta hiyo, na kuielekeza kwa ~/Maktaba/Applikesheni ya Msaada/com.apple.TCC
/.
SQLITE_SQLLOG_DIR - CVE-2023-32422
Ikiwa SQLITE_SQLLOG_DIR="njia/folder"
kimsingi inamaanisha kwamba db yoyote iliyofunguliwa inakopiwa kwenye njia hiyo. Katika CVE hii, udhibiti huu ulitumika vibaya kwa kuandika ndani ya SQLite database ambayo itafunguliwa na mchakato na FDA ya database ya TCC**, na kisha kutumia SQLITE_SQLLOG_DIR
na symlink katika jina la faili ili wakati hiyo database inapofunguliwa, TCC.db ya mtumiaji inaandikwa upya na ile iliyofunguliwa.
Maelezo zaidi katika andiko na katika mazungumzo.
SQLITE_AUTO_TRACE
Ikiwa mazingira ya kimazingira SQLITE_AUTO_TRACE
yameset, maktaba libsqlite3.dylib
itaanza kurekodi maombi yote ya SQL. Programu nyingi za Apple zilitumia maktaba hii, hivyo ilikuwa inawezekana kurekodi maombi yote yao ya SQLite.
Programu kadhaa za Apple zilitumia maktaba hii kufikia habari zilizolindwa na TCC.
MTL_DUMP_PIPELINES_TO_JSON_FILE - CVE-2023-32407
Hii env variable hutumiwa na framework ya Metal
ambayo ni tegemezi kwa programu mbalimbali, hasa Music
, ambayo ina FDA.
Kuweka yafuatayo: MTL_DUMP_PIPELINES_TO_JSON_FILE="njia/jina"
. Ikiwa njia
ni saraka halali, kosa litazinduliwa na tunaweza kutumia fs_usage
kuona kinachoendelea katika programu:
faili itafunguliwa kwa
open()
, itaitwanjia/.dat.nosyncXXXX.XXXXXX
(X ni nambari za nasibu)moja au zaidi ya
write()
itaandika maudhui kwenye faili (hatudhibiti hii)njia/.dat.nosyncXXXX.XXXXXX
itabadilishwa jina kwarename()
kuwanjia/jina
Ni andishi la faili la muda, ikifuatiwa na rename(old, new)
ambayo sio salama.
Sio salama kwa sababu inabidi itafute njia za zamani na mpya kando kando, ambayo inaweza kuchukua muda na inaweza kuwa hatarini kwa Mashindano ya Hali. Kwa maelezo zaidi unaweza kuchunguza kazi ya xnu
renameat_internal()
.
Kwa hivyo, kimsingi, ikiwa mchakato uliopewa mamlaka unabadilisha jina kutoka kwa folda unayodhibiti, unaweza kushinda RCE na kufanya iweze kufikia faili tofauti au, kama katika CVE hii, kufungua faili ambayo programu iliyopewa mamlaka imeunda na kuhifadhi FD.
Ikiwa kubadilisha jina kunafikia folda unayodhibiti, wakati umebadilisha faili ya chanzo au una FD kwake, unaweza kubadilisha faili ya marudio (au folda) kuashiria, ili uweze kuandika wakati wowote unavyotaka.
Hii ilikuwa shambulio katika CVE: Kwa mfano, kubadilisha TCC.db
ya mtumiaji, tunaweza:
kuunda
/Users/hacker/ourlink
ili kuashiria/Users/hacker/Library/Application Support/com.apple.TCC/
kuunda saraka
/Users/hacker/tmp/
weka
MTL_DUMP_PIPELINES_TO_JSON_FILE=/Users/hacker/tmp/TCC.db
zindua kosa kwa kukimbia
Music
na hii env varpata
open()
ya/Users/hacker/tmp/.dat.nosyncXXXX.XXXXXX
(X ni nambari za nasibu)hapa pia tunafungua faili hii kwa kuandika, na kushikilia file descriptor
badilisha kwa pamoja
/Users/hacker/tmp
na/Users/hacker/ourlink
katika mzungukotunafanya hivi ili kuongeza nafasi zetu za kufanikiwa kwani dirisha la mashindano ni dogo sana, lakini kupoteza mashindano hakuna madhara yaliyopimika
subiri kidogo
jaribu kuona ikiwa tulifanikiwa
ikiwa la, zindua tena kutoka mwanzo
Maelezo zaidi katika https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html
Sasa, ikiwa unajaribu kutumia env variable MTL_DUMP_PIPELINES_TO_JSON_FILE
programu hazitazinduliwa
Apple Remote Desktop
Kama root unaweza kuwezesha huduma hii na ARD agent atakuwa na ufikivu kamili wa diski ambao baadaye unaweza kutumia vibaya na mtumiaji ili ifanye nakala ya database mpya ya mtumiaji wa TCC.
Kwa NFSHomeDirectory
TCC hutumia database katika folda ya HOME ya mtumiaji kudhibiti ufikivu wa rasilimali maalum kwa mtumiaji katika $HOME/Library/Application Support/com.apple.TCC/TCC.db. Kwa hivyo, ikiwa mtumiaji anafanikiwa kuanzisha upya TCC na $HOME env variable ikielekeza kwa folda tofauti, mtumiaji anaweza kuunda database mpya ya TCC katika /Library/Application Support/com.apple.TCC/TCC.db na kudanganya TCC kutoa idhini ya TCC kwa programu yoyote.
Tafadhali kumbuka kuwa Apple hutumia mipangilio iliyohifadhiwa ndani ya wasifu wa mtumiaji katika sifa ya NFSHomeDirectory
kwa thamani ya $HOME
, kwa hivyo ikiwa unahatarisha programu na ruhusa ya kurekebisha thamani hii (kTCCServiceSystemPolicySysAdminFiles
), unaweza kuifanya silaha chaguo hili na kizuizi cha TCC.
CVE-2021-30970 - Powerdir
POC ya kwanza inatumia dsexport na dsimport kurekebisha folda ya HOME ya mtumiaji.
Pata csreq blob kwa programu ya lengo.
Panda faili bandia ya TCC.db na ufikivu uliohitajika na blob ya csreq.
Toa kuingia kwa Huduma za Anwani za Mtumiaji wa mtumiaji na dsexport.
Rekebisha kuingia kwa Huduma za Anwani kubadilisha saraka ya nyumbani ya mtumiaji.
Ingiza kuingia iliyorekebishwa ya Huduma za Anwani na dsimport.
Acha tccd ya mtumiaji na zima upya mchakato.
POC ya pili ilitumia /usr/libexec/configd
ambayo ilikuwa na com.apple.private.tcc.allow
na thamani kTCCServiceSystemPolicySysAdminFiles
.
Ilikuwa inawezekana kukimbia configd
na chaguo la -t
, mshambuliaji angeweza kutaja Bundle ya kawaida ya kupakia. Kwa hivyo, shambulio inabadilisha njia ya dsexport
na dsimport
ya kubadilisha saraka ya nyumbani ya mtumiaji na kuingiza msimbo wa configd.
Kwa maelezo zaidi angalia ripoti ya asili.
Kwa kuingiza mchakato
Kuna njia tofauti za kuingiza msimbo ndani ya mchakato na kutumia ruhusa zake za TCC:
pagemacOS Process AbuseZaidi ya hayo, kuingiza mchakato wa kawaida wa kuzidi TCC uliopatikana ni kupitia zana za ziada (upakiaji wa maktaba). Zana za ziada ni msimbo wa ziada kawaida katika fomu ya maktaba au plist, ambayo ita pakuliwa na programu kuu na kutekelezwa chini ya muktadha wake. Kwa hivyo, ikiwa programu kuu ilikuwa na ufikivu wa faili zilizozuiwa na TCC (kupitia ruhusa zilizotolewa au haki za kipekee), msimbo wa desturi pia utakuwa nao.
CVE-2020-27937 - Directory Utility
Programu /System/Library/CoreServices/Applications/Directory Utility.app
ilikuwa na ruhusa ya kTCCServiceSystemPolicySysAdminFiles
, ilipakia zana za ziada na kielekezo cha .daplug
na haikuwa na runtime iliyofanywa ngumu.
Ili kuifanya silaha CVE hii, NFSHomeDirectory
inabadilishwa (kwa kutumia ruhusa ya awali) ili kuweza kuchukua udhibiti wa database ya TCC ya watumiaji ili kuzidi TCC.
Kwa maelezo zaidi angalia ripoti ya asili.
CVE-2020-29621 - Coreaudiod
Binaryi /usr/sbin/coreaudiod
ilikuwa na ruhusa za com.apple.security.cs.disable-library-validation
na com.apple.private.tcc.manager
. Ya kwanza kuruhusu uingizaji wa nambari na ya pili ikimpa ufikiaji wa kusimamia TCC.
Binaryi hii iliruhusu kupakia programu-jalizi za mtu wa tatu kutoka kwenye folda /Library/Audio/Plug-Ins/HAL
. Kwa hivyo, ilikuwa inawezekana kupakia programu-jalizi na kutumia ruhusa za TCC na hii PoC:
Kwa maelezo zaidi angalia ripoti ya asili.
Vifaa vya Tabaka la Kujificha (DAL) Plug-Ins
Programu za mfumo ambazo hufungua mtiririko wa kamera kupitia Core Media I/O (apps na kTCCServiceCamera
) hulipakia katika mchakato huu wa programu viendelezi hivi vilivyoko katika /Library/CoreMediaIO/Plug-Ins/DAL
(sio kizuizi cha SIP).
Kuhifadhi tu huko maktaba na konstrukta ya kawaida kutafanya kazi kwa ajili ya kuingiza msimbo.
Programu kadhaa za Apple zilikuwa na udhaifu huu.
Firefox
Programu ya Firefox ilikuwa na ruhusa za com.apple.security.cs.disable-library-validation
na com.apple.security.cs.allow-dyld-environment-variables
:
Kwa habari zaidi kuhusu jinsi ya kutumia kwa urahisi angalia ripoti ya asili.
CVE-2020-10006
Binary /system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl
ilikuwa na entitlements com.apple.private.tcc.allow
na com.apple.security.get-task-allow
, ambayo iliruhusu kuingiza namna ndani ya mchakato na kutumia TCC privileges.
CVE-2023-26818 - Telegram
Telegram ilikuwa na entitlements com.apple.security.cs.allow-dyld-environment-variables
na com.apple.security.cs.disable-library-validation
, hivyo ilikuwa inawezekana kuitumia kwa kupata ufikivu wa ruhusa zake kama vile kurekodi kwa kutumia kamera. Unaweza kupata mzigo katika andiko.
Tafadhali angalia jinsi ya kutumia env variable kwa kupakia maktaba plist ya desturi iliundwa kuingiza maktaba hii na launchctl
ilitumika kuizindua:
Kwa mwaliko wa wazi
Inawezekana kuita open
hata wakati wa kufungwa kwenye sanduku
Skripti za Terminali
Ni kawaida kutoa Upatikanaji Kamili wa Diski (FDA) kwa terminal, angalau kwenye kompyuta zinazotumiwa na watu wa teknolojia. Na inawezekana kuita skripti za .terminal
kutumia hilo.
Skripti za .terminal
ni faili za plist kama hii yenye amri ya kutekelezwa kwenye ufunguo wa CommandString
:
Programu inaweza kuandika script ya terminal katika eneo kama /tmp na kuizindua na amri kama:
Kwa kufunga
CVE-2020-9771 - kufunga_apfs TCC kuepuka na upandishaji wa mamlaka
Mtumiaji yeyote (hata wale wasio na mamlaka) wanaweza kuunda na kufunga picha ya wakati wa mashine na kupata FAILI ZOTE za picha hiyo.
Mamlaka pekee inayohitajika ni kwa programu iliyotumiwa (kama vile Terminal
) kuwa na Upatikanaji Kamili wa Diski (FDA) (kTCCServiceSystemPolicyAllfiles
) ambayo inahitaji kupewa na msimamizi.
Maelezo zaidi yanaweza kupatikana kwenye ripoti ya asili.
CVE-2021-1784 & CVE-2021-30808 - Kufunika juu ya faili ya TCC
Hata kama faili ya TCC DB ililindwa, ilikuwa inawezekana kufunika juu ya saraka faili mpya ya TCC.db:
Angalia uchomaji kamili katika andishi asili.
asr
Zana /usr/sbin/asr
iliruhusu kunakili diski nzima na kuimount mahali pengine kwa kukiuka ulinzi wa TCC.
Huduma za Mahali
Kuna database ya tatu ya TCC katika /var/db/locationd/clients.plist
kuonyesha wateja wanaoruhusiwa kupata huduma za mahali.
Folda ya /var/db/locationd/
haikulindwa kutoka kwa DMG mounting hivyo ilikuwa inawezekana kuimount plist yetu.
Kupitia programu za kuanza
pagemacOS Auto StartKupitia grep
Katika matukio kadhaa faili zitahifadhi taarifa nyeti kama barua pepe, namba za simu, ujumbe... katika maeneo yasiyolindwa (ambayo ni mapungufu katika Apple).
Bofya ya Kisynthetic
Hii haifanyi kazi tena, lakini ilifanya kazi zamani:
Njia nyingine kutumia matukio ya CoreGraphics:
Marejeo
Last updated