Zoom voor Mac-patches get-root bug - update nu! PlatoBlockchain-gegevensintelligentie. Verticaal zoeken. Ai.

Zoom voor Mac-patches get-root bug - update nu!

Op de bekende DEF CON-beveiligingsbijeenkomst in Las Vegas, Nevada, vorige week, zei Mac-cyberbeveiligingsonderzoeker Patrick Wardle onthuld een "get-root" verhoging van het voorrecht (EoP)-bug in Zoom voor Mac:

In de tweet, die volgde op zijn toespraak [2022-08-12], merkte Wardle op:

Momenteel is er geen patch [:FRIED-EGG EYES ALARM EMOJI:] [:EDVARD MUNCH SCREAM EMOJI:]

Zoom werkte meteen aan een patch voor de fout, die de volgende dag werd aangekondigd in Zoombeveiligingsbulletin ZSB-22018, een felicitatie verdienen antwoord van Wardle in het proces:

Mahalos naar @Zoom voor de (ongelooflijk) snelle oplossing! [:BEIDE HANDEN OPGEHEVEN TER FEEST EN WIGGGELD OVER EMOJI:] [:PALMEN SAMEN GEDRUKT TER TEKEN VAN SPIRITUELE GOODWILL EMOJI:]

Zero-day openbaarmaking

Gezien de schijnbare snelheid en het gemak waarmee Zoom een ​​patch voor de bug kon uitbrengen, genaamd CVE-2022-28756, vraag je je waarschijnlijk af waarom Wardle Zoom niet van tevoren over de bug heeft verteld en de dag van zijn toespraak heeft ingesteld als de deadline voor het onthullen van de details.

Dat zou Zoom de tijd hebben gegeven om de update naar de vele Mac-gebruikers te pushen (of op zijn minst om deze beschikbaar te maken voor degenen die geloven in patch vroeg/patch vaak), waardoor de kloof tussen Wardle die aan de wereld uitlegt hoe de bug misbruikt kan worden, en het patchen van de bug wordt weggewerkt.

Het lijkt er zelfs op dat Wardle zijn best deed om Zoom enkele maanden geleden te waarschuwen voor deze bug, plus een aantal onderling verbonden fouten in het automatische updateproces van Zoom.

Wardle legt de tijdlijn voor het vrijgeven van bugs uit in de slides van zijn DEF CON talk, en somt een stroom Zoom-updates op met betrekking tot de gebreken die hij ontdekte.

Een tweesnijdend zwaard

De bugs die Wardle besprak, hadden over het algemeen te maken met het automatische updatemechanisme van Zoom, een onderdeel van elk software-ecosysteem dat een beetje een tweesnijdend zwaard is – een krachtiger wapen dan een gewoon zwaard, maar dienovereenkomstig moeilijker veilig te hanteren.

Automatisch bijwerken is een onmisbaar onderdeel van elke moderne clienttoepassing, aangezien het ervoor zorgt dat kritieke patches gemakkelijker en sneller kunnen worden verspreid, waardoor gebruikers op betrouwbare wijze cyberbeveiligingslekken kunnen dichten.

Maar automatisch bijwerken brengt een zee van risico's met zich mee, niet in de laatste plaats omdat de update-tool zelf doorgaans systeemtoegang op rootniveau nodig heeft.

Dat komt omdat het de taak van de updater is om de applicatiesoftware te overschrijven (iets dat een gewone gebruiker niet hoort te doen), en misschien om bevoorrechte commando's van het besturingssysteem te starten om configuraties of andere wijzigingen op systeemniveau aan te brengen.

Met andere woorden, als ontwikkelaars niet voorzichtig zijn, kan juist de tool die hen helpt hun onderliggende app up-to-date en veiliger te houden een bruggenhoofd worden van waaruit aanvallers de beveiliging kunnen ondermijnen door de updater te misleiden om ongeautoriseerde opdrachten uit te voeren met systeemrechten .

Met name auto-updateprogramma's moeten ervoor zorgen dat de echtheid van de updatepakketten die ze downloaden, om te voorkomen dat aanvallers hen simpelweg een nep-updatebundel geven, compleet met toegevoegde malware.

Ze moeten ook de integriteit van de updatebestanden die ze uiteindelijk consumeren, zodat een lokale aanvaller de zojuist gedownloade "geverifieerde veilige" updatebundel niet stiekem kan wijzigen in de korte periode tussen het ophalen en activeren.

De authenticiteitscontrole omzeilen

Zoals Wardle uitlegt in zijn papier, een van de bugs die hij ontdekte en onthulde, was een fout in de eerste hierboven genoemde stap, toen de automatische updater van Zoom probeerde de authenticiteit te verifiëren van het updatepakket dat het zojuist had gedownload.

In plaats van de officiële macOS-API's te gebruiken om de digitale handtekening van de download direct te valideren, besloten Zoom-ontwikkelaars om de authenticatie indirect te doen, door het macOS-hulpprogramma uit te voeren pkgutil --check-signature op de achtergrond en het bekijken van de output.

Hier is een voorbeeld van pkgutil uitvoer, met behulp van een oude versie van de Zoom.pkg softwarebundel:

$ pkgutil --check-signature Zoom.pkg Pakket "Zoom.pkg": Status: ondertekend door een ontwikkelaarscertificaat uitgegeven door Apple voor distributie Ondertekend met een vertrouwde tijdstempel op: 2022-06-27 01:26:22 +0000 Certificaatketen : 1. Ontwikkelaar-ID Installateur: Zoom Video Communications, Inc. (BJ4HAAB9B3) Verloopt: 2027-02-01 22:12:15 +0000 SHA256 Vingerafdruk: 6D 70 1A 84 F0 5A D4 C1 C1 B3 AE 01 C2 EF 1F 2E AE FB 9F 5C A6 80 48 A4 76 60 FF B5 F0 57 BB 8C ----------------------------------- ------------------------------------- 2. Certificeringsinstantie voor ontwikkelaars-ID Verloopt: 2027-02-01 22:12:15 +0000 SHA256 Vingerafdruk: 7A FC 9D 01 A6 2F 03 A2 DE 96 37 93 6D 4A FE 68 09 0D 2D E1 8D 03 F2 9C 88 CF B0 B1 BA 63 58 7F -------- -------------------------------------------------- -------------- 3. Apple Root CA Verloopt: 2035-02-09 21:40:36 +0000 SHA256 Vingerafdruk: B0 B1 73 0E CB C7 FF 45 05 14 2C 49 F1 29 5E 6E DA 6B CA ED 7E 2C 68 C5 BE 91 B5 A1 10 01 F0 24

Helaas, zoals Wardle ontdekte toen hij Zoom's handtekeningverificatiecode decompileerde, verwerkte de Zoom-updater de pkgutil gegevens op dezelfde manier als menselijke waarnemers dat zouden doen.

We zouden de uitvoer controleren door de nuttige visuele volgorde in de uitvoer te volgen.

Eerst zoeken we naar de gewenste status, bijv signed by a developer certificate issued by Apple for distribution.

Dan zouden we de subkop vinden Certificate Chain:.

Ten slotte controleerden we of de keten uit deze drie ondertekenaars bestond, in de juiste volgorde:

  1. Zoom Video Communications, Inc. 2. Certificeringsinstantie voor ontwikkelaars-ID 3. Apple Root CA

Verbazingwekkend genoeg verifieerde de code van Zoom eenvoudig dat elk van de bovenstaande drie strings (zelfs niet controleren op Zoom's eigen unieke ID BJ4HAAB9B3) kwam opdagen ergens in de uitvoer van pkgutil.

Dus, een pakket maken met een absurde maar geldige naam zoals Zoom Video Communications, Inc. Developer ID Certification Authority Apple Root CA.pkg zou de pakketverificateur misleiden om de "identiteitsreeksen" te vinden waarnaar hij op zoek was.

De volledige pakketnaam wordt herhaald in de pkgutil output-header op de eerste regel, waar de ongelukkige "verifier" van Zoom alle drie de tekstreeksen in het verkeerde deel van de uitvoer zou matchen.

Zo kon de "beveiligings"-controle triviaal worden omzeild.

Een gedeeltelijke oplossing

Wardle zegt dat Zoom deze bug uiteindelijk heeft opgelost, meer dan zeven maanden nadat hij het had gemeld, op tijd voor DEF CON...

... maar na het aanbrengen van de patch merkte hij dat er nog steeds een gapend gat in het updateproces zat.

De updater heeft geprobeerd het juiste te doen:

  • 1. Verplaats het gedownloade pakket naar de map die eigendom is van root, en dus theoretisch verboden terrein voor elke gewone gebruiker.
  • 2. Controleer de cryptografische handtekening van het gedownloade pakket, met behulp van officiële API's, niet via een tekst-matching bodge tegen pkgutil uitgang.
  • 3. Maak het gedownloade pakketbestand ongedaan, om het versienummer te verifiëren, om downgrade-aanvallen te voorkomen.
  • 4. Installeer het gedownloade pakketbestand, met behulp van de rootrechten van het auto-updateproces.

Helaas, hoewel de map die werd gebruikt om het updatepakket op te slaan eigendom was van root, in een poging om het te beschermen tegen nieuwsgierige gebruikers die het updatebestand probeerden te ondermijnen terwijl het werd gebruikt ...

... het nieuw gedownloade pakketbestand is "wereldbeschrijfbaar" achtergelaten op zijn nieuwe locatie (een neveneffect van het downloaden door een gewoon account, niet door root).

Dit gaf lokale aanvallers een maas in de wet om het updatepakket aan te passen na de digitale handtekening was gevalideerd (stap 2), zonder invloed de details van de versiecontrole (stap 3), maar net voor het installatieprogramma nam de controle over het pakketbestand om het te verwerken met rootrechten (stap 4).

Dit soort bug staat bekend als a race conditie, omdat de aanvallers hun voltooiing moeten timen, zodat ze thuiskomen net voordat het installatieprogramma begint, en daarom hun kwaadaardige wijzigingen net voor het programma moeten binnensluipen.

Je zult ook horen dat dit type kwetsbaarheid wordt aangeduid met het exotisch klinkende acroniem TOCTOU, kort voor tijd-van-check-tot-tijd-van-gebruik, een naam die er duidelijk aan herinnert dat als u uw feiten te lang van tevoren controleert, ze mogelijk verouderd zijn tegen de tijd dat u erop vertrouwt.

Het TOCTOU-probleem is de reden waarom autoverhuurbedrijven in het VK niet langer eenvoudigweg vragen om uw rijbewijs, dat tot 10 jaar geleden had kunnen zijn afgegeven en sindsdien om verschillende redenen kon zijn geschorst of geannuleerd, hoogstwaarschijnlijk omdat van onveilig of illegaal rijden van uw kant. Naast uw fysieke licentie, moet u ook een eenmalige alfanumerieke code "bewijs van recente geldigheid" overleggen, uitgegeven in de afgelopen 21 dagen, om de potentiële TOCTOU-kloof te verkleinen van 10 jaar tot slechts drie weken.

De correctie is nu binnen

Volgens Wardle heeft Zoom deze bug nu voorkomen door de toegangsrechten op het updatepakketbestand dat in stap 1 hierboven is gekopieerd, te wijzigen.

Het bestand dat wordt gebruikt voor handtekeningcontrole, versievalidatie en de uiteindelijke installatie op rootniveau is nu te allen tijde beperkt tot alleen de root-account.

Hierdoor wordt de racevoorwaarde verwijderd, omdat een niet-bevoegde aanvaller het bestand niet kan wijzigen tussen het einde van stap 2 (verificatie geslaagd) en het begin van stap 4 (installatie begint).

Om het pakketbestand te wijzigen om het systeem te misleiden om u root-toegang te geven, zou u al root-toegang moeten hebben, dus u zou in de eerste plaats geen EoP-bug van deze soort nodig hebben.

Het TOCTOU-probleem is niet van toepassing omdat de check in stap 2 geldig blijft totdat het gebruik van het bestand begint, waardoor er geen kans is dat de check ongeldig wordt.

Wat te doen?

Als je Zoom op een Mac gebruikt, open je de app en ga je in de menubalk naar zoom.us > Check for Updates...

Als er een update beschikbaar is, wordt de nieuwe versie weergegeven en kun je op . klikken [Install] om de pleisters toe te passen:

Zoom voor Mac-patches get-root bug - update nu! PlatoBlockchain-gegevensintelligentie. Verticaal zoeken. Ai.

De gewenste versie is 5.11.5 (9788) of later.


Tijdstempel:

Meer van Naakte beveiliging