Nederlander legt uit hoe hij via process injection-bug macOS-bestanden kon lezen

De Nederlandse beveiligingsonderzoeker Thijs Alkemade vond een ernstige kwetsbaarheid in macOS. Het ging om een vrij doorsnee process injection, maar met een belangrijke kanttekening: hij kon er niet alleen een applicatie, maar het hele OS mee overnemen. Op hackersconferentie DEF CON vertelde hij Tweakers meer over het lek.

Alkemade werkt als securityonderzoeker bij beveiligingsbedrijf Computest. Hij presenteerde zijn bevindingen tijdens securityconferenties Black Hat en DEF CON in Las Vegas. Tweakers sprak hem daar over zijn bevindingen, vlak na een presentatie van een andere beveiligingsonderzoeker, die over DLL-hijacking in Windows sprak. Alkemade zat ook in die zaal te luisteren, vooral uit interesse. Zijn onderzoek naar een lek in macOS heeft namelijk veel weg van DLL-hijacking. "Er zit wel verschil in", zegt Alkemade. "DLL-hijacking werkt niet op macOS, omdat daar bescherming in zit. Als je een library laadt, controleert het besturingssysteem de signature daarvan; dat kun je niet zomaar overnemen." Toch lijkt de kwetsbaarheid die hij in macOS vond, veel op dat proces, legt hij uit.

Tweakers op Black Hat en DEF CON

Tweakers is deze week op de beveiligingsconferenties Black Hat en DEF CON in Las Vegas. Black Hat is een conferentie voor securityprofessionals, waar onderzoek wordt gepresenteerd, maar waar ook bedrijven nieuwe tools presenteren. DEF CON vindt in de dagen erna plaats en is een typisch hackersfeest met hackathons en villages waar hard- en software worden gekraakt.

Alkemade vond de kwetsbaarheid al in december 2020 en gaf dat aan via Apples bugbountyprogramma. De bug, CVE-2021-30873, werd een jaar later gerepareerd in macOS Monterey. De communicatie met Apple verliep moeizaam, zegt Alkemade. "Ze zeiden bijvoorbeeld wel dat ze het zouden oplossen, maar lieten niet weten of de bug ook in oudere versies van het besturingssysteem zat." Apples bugbountyprogramma staat bij hackers bekend als stroperig en onoverzichtelijk. Alkemade zei dat vorig jaar al tegen Tweakers. "Ze deden er nu tien maanden over om het te repareren, maar dat is voor Apple nog best snel", zegt hij. Een aanvaller kon met een succesvolle exploit toegang krijgen tot bestanden op een systeem.

Saved State

De kwetsbaarheid zit in de Saved State-functie van macOS. Dat is een feature van macOS waarmee programma's bij het starten weer de vensters kunnen openen die openstonden bij het uitzetten. De functie is het zichtbaarst in de pop-up die gebruikers zien als ze hun computer afsluiten. Daarnaast zit Saved State ook in de App Nap-feature. "Dat ziet er dan uit alsof apps gewoon nog actief zijn in de Dock, maar dat zijn ze niet", zegt Alkemade. "Als de app te lang op de achtergrond blijft en focus verliest, schrijft die zich weg naar de Saved State."

Daar komt het proces van serialisatie om de hoek kijken, legt Alkemade uit. "De meeste programmeertalen hebben ondersteuning voor binaryserialisatie, maar in veel gevallen zit daar een kwetsbaarheid in. Daardoor is het bijvoorbeeld niet veilig om geserialiseerde objecten in te laden die via het netwerk zijn ontvangen. Bij deze kwetsbaarheid is het probleem dat de app een geserialiseerd object inlaadt dat aangemaakt is door een andere app. Normaal kan een applicatie een andere applicatie niet aanpassen, omdat hier een codesignature op zit, maar door die te omzeilen is het toch mogelijk om code uit te voeren in een andere app. Dit type aanval heet process injection.

Electron vs. de rest

Proces injections zijn vaker te vinden in macOS, maar nooit zo betrouwbaar en veelvoorkomendDat is normaal mogelijk in specifieke applicaties. Zo noemt Alkemade in een blogpost Electron-apps als voorbeeld. Een aanvaller kan in dat geval alleen die ene app misbruiken. Het opvallende aan Alkemades ontdekking in Saved State is dat hij de aanval altijd kan uitbuiten, ongeacht de gebruikte app. Dat maakt een aanval een stuk betrouwbaarder en daarmee gevaarlijker. "Je ziet proces injections vaker, maar dat is dan incidenteel. Dat kan soms nuttig zijn, als je als aanvaller bijvoorbeeld een webcam wilt aanzetten of een bepaalde tool wilt deïnstalleren, maar het is niet consistent. Dat is deze kwetsbaarheid wel."

Sandbox-escape en chain

Met de process injection kreeg Alkemade het voor elkaar om uit de sandbox van macOS te ontsnappen, maar daarmee was hij er nog niet. "Eerst lukte het om bepaalde functies aan te roepen zonder argumenten, daarna mét argumenten en zo lukte er stap voor stap steeds meer, totdat ik uiteindelijk op een punt kwam waarop ik scripts kon aanroepen. Daarmee kon ik alles doen wat die applicatie ook kan." Uiteindelijk deed Alkemade er lang over om die chain te vinden, zegt hij. "Ik moest misschien wel tien stappen zetten voordat ik er was, maar dat is ook het leuke aan het proces." In zijn presentatie en blogpost beschrijft hij hoe hij na het ontsnappen uit de sandbox ook een privilege escalation moest uitvoeren door code te injecteren in een app met een specifieke entitlement. Daarna was het nodig om de System Integrity Protection, of SIP, in macOS te omzeilen. Apple repareerde de eerste sandbox-escapekwetsbaarheid overigens al in april van 2021. De latere patch maakte ook de vervolgstappen onmogelijk.

Alkemade werd vorig jaar bekend toen hij samen met zijn collega Daan Keuper de Pwn2own-hackcompetitie won. Het tweetal vond toen een bug in Zoom waarmee het mogelijk was om zonder tussenkomst van de gebruiker een sessie over te nemen. Tweakers sprak met hen over het winnen van de wedstrijd en het maken van succesvolle exploits.

Door Tijs Hofmans

Nieuwscoördinator

19-08-2022 • 10:35

11

Reacties (7)

7
7
3
0
0
4
Wijzig sortering
De link naar blackhat kan ik aanraden. Interessant om te lezen. De slides van zijn presentatie staan er ook op. Vond het interessant om te lezen over het security model van Mac OS. Old Linux model: Users are security boundaries, processes are not. Versus Mac System Integrity protection:

“Dangerous” operations now require the application to have an entitlement
- Loading a kernel extension
- Modifying system files
- Debugging system processes
>More and more restrictions in each macOS release - Debugging any app is now restricted
- “Data vaults” with restricted file access"

Etc.
De slides zijn inderdaad interessant. Wat ik logisch, maar toch enigszins zorgwekkend vind is de conclusie dat het lastig is om defensieve lagen toe te voegen aan een bestaand en "oud" systeem. Een OS als macOS waarvan de codebase al jaren meegaat blijft daardoor een lastig te beveiligen OS. Ik vraag me af of het op een gegeven moment niet de moeite is om fundamentele delen van het OS, of misschien zelfs het hele OS opnieuw te ontwikkelen in een veiligere taal zoals Swift.
Het nadeel van SIP vind ik dat het alles of niets is. Met SIP aan kan je als gebruiker helemaal niets aanpassen aan de gedeelten van het systeem die beschermd zijn (en deze zijn nu zelfs helemaal readonly gemaakt).

Als je het uitzet heb je helemaal geen bescherming meer. Je kan wel aanpassingen maken aan het readonly gedeelte maar dat moet je dan na elke update doen door apart in recovery mode te booten, en dan ook nog eens alles 'blessen' met een tool.

Wat ik mis is gewoon een rol voor de gebruiker/admin als 'security administrator' zoals bijv. SELinux heeft. In dit geval is het alles zo nemen als Apple wil, of niets.

Dit vind ik een bezwaar omdat je je dan helemaal blootgeeft aan de processen van de leverancier. Die ook niet altijd te vertrouwen zijn, zoals het idee wat Apple nu heeft om je foto's te gaan scannen.

Ik vind het absoluut belangrijk dat de gebruiker ten allen tijde de eigenaar blijft van het systeem en de eindregie over de beveiliging heeft, als deze het wil.

[Reactie gewijzigd door GekkePrutser op 23 juli 2024 17:33]

"Dat ziet er dan uit alsof apps gewoon nog actief zijn in de Dock, maar dat zijn ze niet", zegt Alkemade. "Als de app te lang op de achtergrond blijft en focus verliest, schrijft die zich weg naar de Saved State."
Dit is een van de dingen die me zo tegenstaat aan macOS. Soms wil ik gewoon dat een proces op de achtergrond door blijft draaien. Maar Apple maakt het dan een heel doolhof waar je dit soort dingen uit kan zetten. Want als ze het te makkelijk maken doen veel mensen het en dan krijgen ze kritiek op de "15 uur accu" beweringen bij hun laptops omdat het niet meer overeenkomt met wat mensen zien in de 'werkelijkheid'. Wel logisch voor laptopgebruikers maar voor mij voelt het als een OS dat steeds de stoelpoten onder je vandaan loopt te trekken.

Zelfs op de mac mini die helemaal geen accu heeft, heb je dit probleem. Ik laat hem niet in slaap gaan en ik laat zelfs de muis virtueel bewegen om te voorkomen dat hij denkt dat er niemand achter zit. Maar dan nog als ik 's morgens een app erbij pak, zie ik alles wakker worden en helemaal gesynchroniseerd moeten worden. Heel vervelend, ik wil gewoon dat 's morgens alles klaar staat met de nieuwste info.

Een ander voorbeeld: Ik had een externe HDD die gecrypt was (met Disk Utility en Apple's FileVault 2). Ik was die aan het decrypten op een laptop (die ingeprikt was), en in een half uurtje tijd had hij iets van 8% gedaan. Dus ik denk, ik ga naar bed en morgenochtend is het wel klaar. Wel nee dus... De volgende ochtend kijk ik naar de computer en hij is bij... 12% omdat het proces was gaan "appnappen" :( Erg vervelend want ik had die schijf nodig. Apple zou processen als Disk Utility moeten uitzonderen van app nap aps ze ergens mee bezig zijn. Misschien gebeurt dit nu ook wel want het is enkele jaren geleden. Inmiddels gebruik ik macOS niet meer prive.

Wel slimme hack trouwens moet ik zeggen.

[Reactie gewijzigd door GekkePrutser op 23 juli 2024 17:33]

Ergens wel jammer dat Apple eigenlijk hiermee hun eigen ruiten in gooit want hun grootste verkoopargument is altijd geweest dat MacOS of eerder OSX heel veilig is zeker dan t.o.v. Windows. Dat blijkt dan nu wel dat dit zeker niet het geval is en Apple heel wat maanden nodig had om het lek te dichten. Voor wat ik het zo volg qua kwetsbaarheden reageert Microsoft dan vaak toch wel sneller, ten dele misschien ook wel omdat er binnen Windows heel wat meer kwetsbaarheden zitten. Maar evenzogoed erger ik mij soms toch wel een beetje aan de hooghartige houding van Apple.
OS X is ook nog steeds een heel veilig OS. Windows is ook heel veilig.

OS X is alleen niet zo breed uitgemeten als Windows. Mogelijk dat ze hierdoor wat trager kunnen reageren. Tov Windows die zowel server als cliënt is gedeeltelijk gelijk is aanelkaar.

Waardoor reageren op een bug een hogere prioriteit heeft. Anders kunnen ze miljoenen claims krijgen van zwaar betaalde bedrijven.
OS X is ook nog steeds een heel veilig OS. Windows is ook heel veilig.
Deels wel en deel niet mee eens want tja je ziet wel hoe vaak er patches en updates nodig zijn omdat er weer nieuwe kwetsbaarheden ontdekt zijn. Wel ben ik met je eens dat je je kan afvragen in hoeverre dit een direct gevaar vormt voor de doorsnee gebruikers.
Waardoor reageren op een bug een hogere prioriteit heeft. Anders kunnen ze miljoenen claims krijgen van zwaar betaalde bedrijven.
Toch blijf ik het gevoel houden dat Apple daarin misschien wat te 'eigenwijs' is en maar al te bang is om de deuren ietwat open te zetten. Voorbeeld vind ik dat Apple nog steeds omwille van z.n. veiligheid geen sd-cardslot toelaat in hun iPads. Ten dele ook natuurlijk wel dat ze dit om commerciële redes doen en meer geld verdienen aan iPads met meer interne opslag.

Op dit item kan niet meer gereageerd worden.