Tientallen Mac-apps onveilig door Sparkle: dit kun je eraan doen
Er is een nieuwe kwetsbaarheid ontdekt, die ervoor zorgt dat meerdere Mac OS X-apps onveilig zijn. DuetDisplay, Camtasia, uTorrent en diverse andere Mac-apps zijn kwetsbaar voor een man-in-the-middle aanval, waarbij kwaadaardige code wordt geïnstalleerd. Het probleem wordt veroorzaakt door Sparkle, een tool die veel ontwikkelaars gebruiken om app-updates te regelen. In 6 vragen leggen we uit wat het probleem is en wat je eraan kunt doen om jezelf te beschermen.

1. Om welke apps gaat het?
Het gaat om apps van derden die via internet handmatig zijn geïnstalleerd en die een verouderde versie van de Sparkle-updater gebruiken. Deze tool zorgt ervoor dat apps regelmatig op de achtergrond controleren of er updates zijn.
Apps die via de Mac App Store zijn gedownload, zijn dus veilig. Ook zijn er apps die aanvankelijk wel last hadden van het probleem (bijvoorbeeld VLC Media Player) maar die inmiddels het probleem hebben opgelost door over te stappen naar een nieuwe versie van Sparkle.
Daarnaast zijn er apps die gebruik maken van Sparkle, maar waarmee je toch geen risico loopt. De populaire chatapp Adium gebruikt bijvoorbeeld wel Sparkle, maar communiceert beveiligd via https.
Het komt alleen voor op Macs met OS X Yosemite en OS X El Capitan.
2. Sparkle: hoe werkt het?
Spark is bedoeld om te checken of er updates zijn van bepaalde apps. Daarvoor maakt de app verbinding met een update-server. Dit levert dataverkeer op tussen de computer van de gebruiker en de server van de ontwikkelaar. Normaal is dit dataverkeer beveiligd en versleuteld, maar bij de verouderde versie van Sparkle is dat niet het geval.
Bij een man-in-the-middle aanval kan een kwaadwillende de communicatie tussen computer en server onderscheppen. In plaats van de software-update haalt de computer vervolgens kwaadaardige software op.
In onderstaande video legt de man die de kwetsbaarheid ontdekte uit, hoe het werkt:
3. Hoe zit het technisch in elkaar?
Als de aanval is gelukt kan een kwaadwillende de controle van de computer overnemen. De kwetsbaarheid is niet ontstaan in het signeren van code, maar door functionaliteit van de WebKit-view, waardoor:
- Onversleuteld HTTP-verkeer kan worden onderschept en aangepast
- JavaScript kan worden uitgevoerd
Dat wil overigens niet zeggen dat de rendering engine WebKit zelf onveilig is, maar dat Sparkle WebKit niet goed had geïmplementeerd.
4. Wat kunnen ontwikkelaars doen?
Ontwikkelaars die te maken hebben met het probleem, kunnen het op twee manieren oplossen:
- De nieuwste versie van de Sparkle-updater gebruiken, waarin het probleem is opgelost.
- Apps aanbieden via de Mac App Store.
Het probleem in beide gevallen is dat gebruikers nog oude versies van de software blijven gebruiken en daardoor nog enige tijd kwetsbaar blijven.
5. Wat kan Apple doen?
Apple kan dit probleem niet meteen oplossen, omdat het gaat om software die buiten de Mac App Store om is geïnstalleerd. De ontwikkelaars moeten het zelf oplossen door updates van hun apps uit te brengen. Vandaar dat Apple steeds meer beveiliging inbouwt in OS X, zoals Gatekeeper. Dat zorgt ervoor dat een standaard gebruiker alleen apps via de Mac App Store kan downloaden (uiteraard kun je die beperking uitschakelen).
6. Wat kun je als gebruiker doen?
Je zou kunnen kijken of de apps die je gebruikt zijn getroffen door ‘Sparkle’. Op GitHub is een steeds groeiende lijst te vinden van apps die gebruik maken van Sparkle. Maar het gaat om tientallen apps en de kans is groot dat lijsten die je op internet vindt, niet compleet zijn.
Bovendien toont de lijst álle apps die gebruik maken van Sparkle en die zijn niet allemaal getroffen. Adium staat bijvoorbeeld in de lijst, maar zoals we al aangaven maakt die app gebruik van beveiligde communicatie. Ook maken lang niet alle apps in de lijst gebruik van de verouderde versie van Sparkle.
Dit kun je het beste doen:
- Heb je apps via de Mac App Store gedownload, dan hoef je niets te doen. Sparkle treft niet deze apps.
- Krijg je de komende dagen een pop-up dat er een update beschikbaar is voor een bepaalde app, voer dan niet de update via de pop-up uit. Je kunt beter naar de website van de ontwikkelaar zelf gaan en daar de laatste versie van de software downloaden.
Het probleem is dat ontwikkelaars de komende dagen in rap tempo hun software zullen updaten, waardoor je behoorlijk wat software-updates kunt verwachten.
Als gebruiker kun je je beschermen door apps bij voorkeur via de Mac App Store aan te schaffen.
Bonustip 1: check met Terminal
Voor een overzicht van apps met Sparkle die op jouw Mac staan kun je in Terminal het volgende commando intikken:
find /Applications -path '*Autoupdate.app/Contents/Info.plist' -exec echo {} \; -exec grep -A1 CFBundleShortVersionString '{}' \; | grep -v CFBundleShortVersionString
Bonustip 2: check met Python-script
Ben je vertrouwd met Python, dan kun je met dit script in kaart brengen welke apps op jouw systeem zijn getroffen.
Meer informatie over het probleem lees je op Ars Technica. Bonustips via Marnix en XIII.
Taalfout gezien of andere suggestie hoe we dit artikel kunnen verbeteren? Laat het ons weten!
Mijn advies:
Check bij een update de website van de ontwikkelaar. Download de update daar en installeer over de oude versie. Vanaf dat moment is deze app “veilig”.
Voor een overzicht van apps met Sparkle op jouw systeem: Open terminal en typ
find /Applications -path '*Autoupdate.app/Contents/Info.plist' -exec echo {} \; -exec grep -A1 CFBundleShortVersionString '{}' \; | grep -v CFBundleShortVersionString
Gevorderde gebruikers kunnen via het Python script op deze pagina snel in kaart brengen welke Apps op hun systeem hierdoor zijn getroffen.
Dat is natuurlijk weer smullen en gniffelen voor de algemene media, waarbij vooral in de koppen de nuance ver te zoeken is. Bv NOS: “Updaten Mac-apps in veel gevallen onveilig” 😱.
Overigens hebben die ver achterin het artikel wel een nuance verstopt die ik nota bene hier nog mis: je moet wel ook de deur openzetten voor zo’n man-in-the-middle aanval, bijvoorbeeld door een onbeveiligde WiFi verbinding te gebruiken. Of is dat (ook) een gevalletje ‘de klok horen luiden’ (maar waar hangt nou toch die klepel 😧)?
Lijkt me op zijn minst ook een nuttige tip om überhaupt onnodige risico’s te voorkómen: nóóit via een publieke WiFi hotspot welke software dan ook updaten…
In mijn geval NetSpot en iStumbler maar verwijderd.
Wat een paniek opeens weer. Behalve de MAS gebruikt tegenwoordig zo ongeveer iedere ontwikkelaar Sparkle. Behalve dan bijvoorbeeld Adobe en Microsoft die nog steeds hun eigen update mechanisme hebben.
Sparkle heeft t.o.v. van de MAS veel voordelen (kijk maar eens naar de update frequentie) en er zijn juist veel devs die de MAS weer verlaten. (uiteraard om andere redenen)
Advies; zoals hierboven geschreven, is er een app die via Sparkle een update aangeeft, dan gewoon nara de website van de app gaan en dan downloaden. Simpel…
PS ik heb op dit moment overigens maar een app die al een hele tijd niet geüpdatet is en dat is Transmission…
PS 2 het terminal script is denk ik niet helemaal goed want ik heb veel meer apps die Sparkle gebruiken dan via Terminal te voorschijn komen…
Voor mensen die gebruik willen maken van het python script.
1) Kopieer de code van het script
2) Open Terminal en type “cd ~/Desktop/”
3) Type in Terminal “nano sparkle.py”
4) Plak nu het script in het terminal venster
5) Doe ctrl+x en dan y
6) Type nu in Terminal “python sparkle.py”
Vervolgens krijg je output wat lijkt op
/Applications/uTorrent.app - com.bittorrent.uTorrent
/Applications/Sketch Toolbox.app - uz.shahr.Sketch-Toolbox
/Applications/InVisionSync.app - com.invisionapp.InVisionSync
Dat zijn alle app’s die door het script er uit zijn gevist
Ik druk al jaren gewoon op updaten en nooit ergens last van, bangmakerij – apple zorgt goed voor ons hoor.
Dit gaat er natuurlijk vanuit dat je al je programma’s in de systeemfolder plaatst (waar alle andere gebruikers ook bij kunnen). Ikzelf plaats het leeuwendeel van applicaties in de programmafolder van de gebruiker of in andere verborgen directories, behalve als Apple of andere domme developers hun programma’s kapotmaken als het niet in /Applications staat.
Case in point, system applications folder: 0 resultaten. User applications folder: bijna 30 schuldigen.
Het probleem lijkt toch ook aan OS X zelf te liggen. Blijkbaar wordt het voor een deel veroorzaakt door WebKit en Finder. In OS X is Finder namelijk het standaardprogramma voor FTP/SMB/AFP. Als je een URL met zo een protocol opent zal Finder dit automatisch als virtuele schijf ‘mounten’. Vervolgens krijg je dan het probleem dat een programma op deze schrijf gewoon zou kunnen worden uitgevoerd.
Blijkbaar kun je het probleem gedeeltelijk voorkomen door Firefox te installeren (want dan wordt het FTP-protocol door Firefox bezet) of de protocollen voor FTP/SMB/AFP handmatig over te zetten naar Safari of Firefox in plaats van Finder. Gebruik je Safari moet je ook uitkijken dat Gatekeeper ingeschakeld is, want dan krijg je gewoon een waarschuwing.
In aanvulling op het hierboven genoemde script: Helaas is het zo dat niet iedere ontwikkelaar het Sparkle-framework zomaar importeert, want sommigen bouwen het ook gewoon zelf in. Dat is bijvoorbeeld bij VLC het geval. Ik zou daarom in aanvulling op deze scripts ook het volgende proberen. Iedere URL die met
https://
begint is in principe veilig, ook al gebruikt het programma een oudere versie van Sparkle.for i in /Applications/*/Contents/Info.plist; do defaults read "$i" SUFeedURL 2>/dev/null; done
En voor Bubbly ook:
for i in ~/Applications/*/Contents/Info.plist; do defaults read "$i" SUFeedURL 2>/dev/null; done
Ook ik gooi even een variatie op het scriptje er in:
find /Applications -path '*/Frameworks/Sparkle.framework*' -name 'Info.plist' -exec echo {} \; -exec grep -A1 CFBundleShortVersionString '{}' \; | grep -v CFBundleShortVersionString
Deze geeft ook de versie van Sparkle weer, die moet 1.13.1 zijn. Maarrrr… VLC geeft aan dat ze dit gefixed hebben terwijl ze nog op Sparkle 1.6.0 zitten. Dat komt omdat VLC kennelijk wel gebruik maakt van een beveiligde verbinding met Sparkle. Hoe we kunnen achterhalen welke pre-sparkle-1.13.1 apps al dan niet van een beveiligde verbinding maken weet ik niet.