Samsung Galaxy S25: Nu met Galaxy Tab S6 Lite!

Veel Android-apps vormen privacyrisico door lekken privésleutels

Sander Tuit
Sander Tuit
19 juni 2014, 18:55
6 min leestijd
Veel Android-apps vormen privacyrisico door lekken privésleutels

Lees verder na de advertentie.

Geheime sleutels

Secret keys, geheime sleutels worden gebruikt bij de communicatie tussen een dienst en een applicatie. Neem Twitter eens als voorbeeld. Twitter biedt een API, een manier voor ontwikkelaars om met Twitter te communiceren. Twitter stelt echter beperkingen aan de hoeveelheid acties, bijvoorbeeld zoekopdrachten, die één applicatie kan doen. Dit is er, naast wat commerciële redenen waar we nu niet op ingaan, voor bedoeld dat een enkele applicatie niet het hele systeem plat kan leggen. Om een bepaalde applicatie te identificeren, wordt gebruik gemaakt van een unieke API-sleutel, een soort van gebruikersnaam. Daarbij behorend is er ook nog de geheime sleutel die als wachtwoord fungeert. 

Deze manier van werken is logisch voor een web-applicatie. Het is de bedoeling dat een server waarop een web-applicatie draait veilig is en dat alleen de ontwikkelaar bij de applicatie-code kan komen. In het geval van Twitter gebeurt er het volgende: de gebruiker vraagt bij de ontwikkelaar een pagina op waar tweetjes op gelezen kunnen worden. De server neemt de API-sleutel, de geheime sleutel en maakt daar een verzoek van. Dit verzoek gaat naar de Twitterservers via een beveiligde verbinding. De Twitterservers geven een lijst met tweetjes terug die door de server van de ontwikkelaar wordt verwerkt en wordt weergegeven aan de gebruiker.

Bij een mobiele applicatie is er een essentieel verschil. De applicatie wordt namelijk niet gedraaid op de veilige, eigen webservers, maar op een apparaat van een gebruiker. Wanneer de applicatie in handen komt van anderen, bestaat de kans dat de applicatie uit elkaar wordt gehaald, waarna de geheime sleutel openbaar komt. Met deze sleutel kunnen kwaadwillenden alle rechten gebruiken (of misbruiken) die de applicatie heeft. In sommige gevallen hoeft een gebruiker zelfs de applicatie niet eens gebruikt te hebben om toch slachtoffer te worden van privacyinbreuk. Ook kunnen gegevens van gebruikers worden aangepast en is het mogelijk om malwarelinks te verspreiden via bijvoorbeeld statusupdates. 

Decompileren

Androidapplicaties worden over het algemeen geschreven in de programmeertaal Java. Wanneer een ontwikkelaar een installatiepakket voor zijn app maakt, worden de regels met Java-code omgezet in bytecode, code die geoptimaliseerd is om door software geïnterpreteerd te worden. Dit proces heet compileren.

In veel gevallen is het echter zonder problemen mogelijk om deze code te decompileren, weer om te zetten naar bestanden die door mensen leesbaar zijn. Wanneer er geheime sleutels in de applicatie te vinden zijn, kunnen deze in veel gevallen gewoon worden gelezen. Dit is precies was de onderzoekers van de Universiteit van Columbia hebben gedaan: ze hebben een heleboel applicaties (meer dan 1 miljoen) gedownload en er daar ruim 880.000 van gedecompileerd. In deze gedecompileerde apps werden meer dan 70.000 unieke geheime sleutels gevonden. Onderzoekers Jason Nieh en Nicolas Viennot hebben vijf maanden na het verkrijgen van de data gecontroleerd of de geheime sleutels nog werkten en dat was het geval bij meer dan 95% van de sleutels.

Airbnb

In hun onderzoekspaper halen Nieh en Viennot een interessant voorbeeld aan, namelijk dat van AirBnB. In de onderzoeksperiode (juni en november 2013) bleek dat de officiële applicatie van Airbnb de geheime sleutels voor Facebook, Google, LinkedIn, Microsoft en Yahoo bevatte.

De onderzoekers hebben met de geheime sleutel voor Facebook verschillende gebruikersgegevens in kunnen zien, zoals e-mailadressen en vriendenlijsten. De Airbnb heeft geen toestemming om statusupdates te plaatsen of om privéberichten te versturen, anders hadden de onderzoekers bij miljoenen Airbnb-gebruikers die hun Airbnb-account gekoppeld hebben aan hun Facebook-account berichten kunnen versturen uit naam van de gebruikers. Het is niet moeilijk om je in te denken welke gevolgen dit kan hebben wanneer malwaremakers deze geheime sleutels in handen krijgen.

Overigens hebben de onderzoekers contact opgenomen met Facebook en ze op de hoogte gesteld van het probleem, in eerste instantie werd de geheime sleutel van de Airbnb-app geblokkeerd, waarna Airbnb binnen enkele uren een nieuwe versie van de app uitbracht die het probleem met de Facebook-sleutel verhielp. 

Sleutels verbergen

Hoe hebben die onderzoekers die geheime sleutels nu kunnen vinden? Na de decompilatie van de installatiebestanden, konden de ontwikkelaars een zoekscriptje loslaten op de verkregen broncode. Bij het zoeken naar sleutels voor Amazon konden de onderzoekers bijvoorbeeld specifiek zoeken naar een sleutel die begint met een bepaalde combinatie van letters die standaard is voor de geheime sleutel voor Amazon. 

Er zijn manieren om de broncode van applicaties onduidelijker te maken. Zelfs wanneer een installatiebestand gedecompileerd is, is het lastig om wijs te worden uit teksten en code. Bij Android kan er standaard gebruik worden gemaakt van ProGuard, software die precies dit als doel heeft. De ontwikkelaar van ProGuard, Eric Lafortune, legt uit hoe een geheime sleutel beveiligd kan worden op Android. Hij geeft aan dat ProGuard wel gebruikt kan worden om de naam van de sleutel te veranderen, maar de sleutel zelf blijft behouden. Dit zorgt er voor dat het zoeken op de manier van het hierboven beschreven onderzoek nog steeds mogelijk is. 

Het is mogelijk om de geheime sleutel zelf nog te versleutelen, zodat deze niet als zodanig herkenbaar is. Een aanvaller zal dan zelf uit moeten zoeken hoe de sleutel versleuteld is. Lafortune geeft ook aan dat de commerciële oplossing die aanverwant is aan ProGuard, DexGuard, ook de tekst zelf kan aanpassen. Alleen aanvallen die echt gericht zijn op een specifieke applicatie werken dan nog en zo’n aanval kost tijd en kan alleen worden uitgevoerd door iemand die verstand van zaken heeft. Eric Lafortune geeft wel aan dat de meest veilige oplossing is om de communicatie via een eigen server te laten verlopen. Op die manier krijg je weer hetzelfde principe als bij de web-applicatie: deze draait op een veilige omgeving waar de sleutels niet zomaar voor aanvallers te vinden zijn. 

Alternatieven

Facebook en Amazon en vermoedelijk ook andere webdiensten die een API aanbieden verbieden ontwikkelaars expliciet om geheime sleutels in hun applicaties op te nemen. De diensten bieden ook zelf alternatieven aan, zodat gebruikers niet per se hun eigen web-applicatie hoeven te schrijven die de communicatie tussen de server van de webdienst en de mobiele applicatie op zicht neemt. 

Om gebruikers in te laten loggen via Facebook in een applicatie, biedt Facebook de Facebook SDK (ontwikkelingstoolkit) aan. Deze gebruikt de officiële Facebook-applicatie, waarbij de gebruiker in veel gevallen toch al is ingelogd, om de verzoeken te doen. Google biedt een soortgelijke functie aan in Google Play services en Amazon heeft de zogenaamde Token Vending Machine waarmee veilig ingelogd kan worden zonder dat een geheime sleutel gebruikt hoeft te worden in de app. 

Wat moet ik nu doen?

De vraag is nu: wat moet je nu doen als gebruiker. Ten eerste is het belangrijk dat je goed oplet welke applicaties je toegang geeft tot jouw gegevens. Maar, zoals je kunt zien in het Airbnb-voorbeeld zijn zelfs populaire applicaties uit betrouwbare bronnen niet per se veilig. Als eindgebruiker kun je verder weinig doen. Het is de verantwoordelijkheid van ontwikkelaars dat ze geen secret keys in hun apps verwerken. 

Ontwikkelaars worden overigens ook op de hoogte gesteld van de beveiligingsproblemen die het gebruik van geheime sleutels in hun apps met zich meebrengen. Facebook heeft van de onderzoekers een lijst met ‘gelekte’ sleutels gekregen en er is contact opgenomen met ontwikkelaars. Ook Google is op de hoogte van de problemen. Google scant applicaties al op beveiligingsproblemen en malware en gaat naar aanleiding van dit onderzoek ook op geheime sleutels scannen, waarna ontwikkelaars op de hoogte worden gesteld van de problemen die dit met zich mee kan brengen. Op verzoek van Google hebben de ontwikkelaars ook scripts aan de zoekgigant gegeven die het bedrijf kan helpen met het identificeren van deze sleutels. 

Bron: Universiteit van Columbia, via: Android Headlines

Lees meer over

Op de hoogte blijven?

Volg Androidworld nu ook op WhatsApp

Download de nieuwe Androidworld-app!

Reacties

6

Inloggen of registreren
om een reactie achter te laten

22 juni 2014, 8:11

Fijn dat ZIJ weten welke apps schadelijk zijn, maar hoe komen WIJ te weten welke apps het betreft, zodat we ze van onze devices kunnen gooien?

21 juni 2014, 10:55

Zo’n indepth technische post kan alleen afkomstig zijn van… Sander. Hulde!

19 juni 2014, 22:08

Dit zal vast ook nog ter sprake komen tijdens de Google I/O.
Ik denk dat Apple hier ook last van had, want daarbij is ook de app store opgeruimd.

Gewist profiel
19 juni 2014, 21:32

Na 9/11 is het verzamelen begonnen door de nsa en het zal ook nooit meer ophouden lees boek Glenn greenwald over wat snowden weet er komt nog wel het een en ander los met misschien wel grote gevolgen voor de privacy van iedereen

19 juni 2014, 21:13

Is het misschien daarom dat facebook vandaag plat lag?

19 juni 2014, 21:03

Sorry heren, zeg ik het nog 1x.
Privacy bestaat niet meer.