macOS Installers Abuse
Taarifa Msingi za Pkg
Pakiti ya wasakinishaji wa macOS (inayojulikana pia kama faili ya .pkg
) ni muundo wa faili unaotumiwa na macOS kwa kugawa programu. Faili hizi ni kama sanduku linaloleta kila kitu ambacho programu inahitaji kusakinisha na kukimbia kwa usahihi.
Faili ya pakiti yenyewe ni nyaraka inayoshikilia mfululizo wa faili na saraka ambazo zitasakinishwa kwenye kompyuta ya lengo. Inaweza pia kujumuisha maandishi kutekeleza kazi kabla na baada ya usakinishaji, kama vile kuweka faili za usanidi au kusafisha toleo za zamani za programu.
Mfululizo
Usambazaji (xml): Kubinafsisha (jina, maandishi ya karibu...) na maandishi/uchunguzi wa usakinishaji
PackageInfo (xml): Taarifa, mahitaji ya usakinishaji, mahali pa usakinishaji, njia za maandishi za kukimbia
Bili ya vifaa (bom): Orodha ya faili za kusakinisha, kuboresha au kuondoa na ruhusa za faili
Mzigo (CPIO nyaraka gzip compresses): Faili za kusakinisha kwenye
mahali-pa-usakinishaji
kutoka PackageInfoMaandishi (CPIO nyaraka gzip compresses): Maandishi kabla na baada ya usakinishaji na rasilimali zaidi zilizochimbuliwa kwenye saraka ya muda kwa utekelezaji.
Maelezo Muhimu ya DMG
Faili za DMG, au Picha za Diski za Apple, ni muundo wa faili unaotumiwa na macOS ya Apple kwa picha za diski. Faili ya DMG ni msingi wa picha ya diski inayoweza kufungwa (ina filesystem yake) ambayo ina data ya block ya ghafi mara nyingi imepakwa na wakati mwingine imefichwa. Unapofungua faili ya DMG, macOS inaifunga kama vile ingekuwa diski halisi, kuruhusu kupata yaliyomo yake.
Tafadhali kumbuka kwamba wasakinishaji wa .dmg
hushikilia muundo mwingi sana ambao hapo awali baadhi yao waliokuwa na mapungufu walitumika kupata utekelezaji wa nambari ya msingi.
Mfumo wa Hierarchy
Mfumo wa faili ya DMG unaweza kutofautiana kulingana na yaliyomo. Hata hivyo, kwa DMGs za programu, kawaida inafuata muundo huu:
Kiwango cha Juu: Hii ni mzizi wa picha ya diski. Mara nyingi ina programu na labda kiungo kwa folda za Maombi.
Programu (.app): Hii ni programu halisi. Katika macOS, programu ni kawaida pakiti inayojumuisha faili na folda nyingi zinazounda programu.
Kiungo cha Maombi: Hii ni mkato kwenda kwa folda za Maombi kwenye macOS. Lengo la hili ni kufanya iwe rahisi kwako kusakinisha programu. Unaweza kuburuta faili ya .app kwenye mkato huu kusakinisha programu.
Privesc kupitia unyanyasaji wa pkg
Utekelezaji kutoka kwenye folda za umma
Ikiwa scripti ya usakinishaji kabla au baada ya usakinishaji inatekelezwa kwa mfano kutoka /var/tmp/Installerutil
, na mshambuliaji anaweza kudhibiti scripti hiyo ili apande vyeo kila wakati inapotekelezwa. Au mfano mwingine sawa:
AuthorizationExecuteWithPrivileges
Hii ni kazi ya umma ambayo wasakinishaji na wakusasisha kadhaa watatumia kutekeleza kitu kama mzizi. Kazi hii inakubali njia ya faili ya kutekeleza kama parameter, hata hivyo, ikiwa mshambuliaji anaweza kurekebisha faili hii, ataweza kunyanyasa utekelezaji wake na mzizi ili kupandisha vyeo.
Utekelezaji kwa kufunga
Ikiwa mtengenezaji anaandika kwa /tmp/fixedname/bla/bla
, inawezekana kuunda mlima juu ya /tmp/fixedname
bila wamiliki hivyo unaweza kurekebisha faili yoyote wakati wa usakinishaji kwa kudhuru mchakato wa usakinishaji.
Mfano wa hii ni CVE-2021-26089 ambayo ilifanikiwa kubadilisha skripti ya kipindi ili kupata utekelezaji kama mtumiaji wa mizizi. Kwa maelezo zaidi angalia mazungumzo: OBTS v4.0: "Mlima wa Mende" - Csaba Fitzl
pkg kama zisizo
Mzigo wa Kufuta
Inawezekana tu kuzalisha faili ya .pkg
na skripti za kabla na baada ya usakinishaji bila mzigo wowote.
JS katika xml ya Usambazaji
Inawezekana kuongeza vitambulisho vya <script>
katika faili ya xml ya usambazaji ya pakiti na msimbo huo utatekelezwa na inaweza kutekeleza amri kutumia system.run
:
Marejeo
Last updated