macOS Installers Abuse
Osnovne informacije o Pkg-u
macOS instalacioni paket (poznat i kao .pkg
fajl) je format fajla koji koristi macOS za distribuciju softvera. Ovi fajlovi su poput kutije koja sadrži sve što je potrebno da se komad softvera instalira i pokrene ispravno.
Sam paket fajl je arhiva koja drži hijerarhiju fajlova i direktorijuma koji će biti instalirani na ciljnom računaru. Takođe može uključivati skripte za obavljanje zadataka pre i posle instalacije, poput postavljanja konfiguracionih fajlova ili čišćenja starih verzija softvera.
Hijerarhija
Distribucija (xml): Prilagođavanja (naslov, tekst dobrodošlice...) i skripte/provere instalacije
PackageInfo (xml): Informacije, zahtevi za instalaciju, lokacija instalacije, putanje do skripti za pokretanje
Račun materijala (bom): Lista fajlova za instalaciju, ažuriranje ili uklanjanje sa dozvolama fajlova
Payload (CPIO arhiva gzip kompresovana): Fajlovi za instalaciju na
install-location
iz PackageInfoSkripte (CPIO arhiva gzip kompresovana): Pre i post instalacione skripte i dodatni resursi izdvojeni u privremeni direktorijum za izvršenje.
Dekompresija
Osnovne informacije o DMG-u
DMG datoteke, ili Apple Disk Images, su format datoteka koji koristi macOS kompanije Apple za disk slike. DMG datoteka je suštinski montabilna disk slika (sadrži svoj vlastiti sistem datoteka) koja sadrži sirove blok podatke obično komprimirane i ponekad šifrovane. Kada otvorite DMG datoteku, macOS je montira kao da je fizički disk, omogućavajući vam pristup njenom sadržaju.
Imajte na umu da .dmg
instalateri podržavaju toliko formata da su u prošlosti neki od njih koji su sadržavali ranjivosti zloupotrebljeni radi dobijanja izvršenja koda kernela.
Hijerarhija
Hijerarhija DMG datoteke može biti različita u zavisnosti od sadržaja. Međutim, za aplikativne DMG-ove, obično prati ovu strukturu:
Gornji nivo: Ovo je koren disk slike. Često sadrži aplikaciju i možda link ka fascikli Aplikacije.
Aplikacija (.app): Ovo je stvarna aplikacija. U macOS-u, aplikacija je obično paket koji sadrži mnogo pojedinačnih datoteka i fascikli koje čine aplikaciju.
Link ka Aplikacijama: Ovo je prečica do fascikle Aplikacije u macOS-u. Svrha ovoga je da vam olakša instaliranje aplikacije. Možete prevući .app datoteku na ovu prečicu da biste instalirali aplikaciju.
Eskalacija privilegija putem zloupotrebe pkg-a
Izvršenje iz javnih direktorijuma
Ako se skript za pre ili post instalaciju na primer izvršava iz /var/tmp/Installerutil
, napadač može kontrolisati tu skriptu kako bi eskalirao privilegije svaki put kada se izvrši. Ili još jedan sličan primer:
AuthorizationExecuteWithPrivileges
Ovo je javna funkcija koju će nekoliko instalatera i ažuriranja pozvati da izvrše nešto kao root. Ova funkcija prihvata putanju datoteke koju treba izvršiti kao parametar, međutim, ako napadač može modifikovati ovu datoteku, moći će zloupotrebiti njeno izvršenje sa root privilegijama kako bi eskaliro privilegije.
Izvršenje putem montiranja
Ako instalater piše u /tmp/fixedname/bla/bla
, moguće je napraviti montiranje preko /tmp/fixedname
bez vlasnika tako da možete izmeniti bilo koji fajl tokom instalacije kako biste zloupotrebili proces instalacije.
Primer za ovo je CVE-2021-26089 koji je uspeo da prepiše periodični skript kako bi dobio izvršenje kao root. Za više informacija pogledajte ovaj talk: OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl
pkg kao zlonamerni softver
Prazan Payload
Moguće je jednostavno generisati .pkg
fajl sa pre i post-install skriptama bez ikakvog payload-a.
JS u Distribution xml
Moguće je dodati <script>
tagove u distribution xml fajl paketa i taj kod će biti izvršen i može izvršiti komande koristeći system.run
:
Reference
Last updated