Een potentieel beveiligingslek in de Autofill API van Android Oreo zorgt ervoor dat wachtwoordbeheerders gegevens zoals wachtwoorden, adressen of creditcards kunnen lekken.
Automatisch aanvullen is een van de grootste en meest gepubliceerde nieuwe functies die zijn geïntroduceerd met de release van Android 8.0 Oreo. Veel verschillende apps voor wachtwoordbeheer, zoals LastPass, hebben deze nieuwe API al in hun applicaties geïmplementeerd. En dat terwijl het wel zo kan zijn een hele verbetering vergeleken met de eerdere Autofill-implementaties waarbij gebruik werd gemaakt van Accessibility Services, is er een potentieel beveiligingsprobleem waarmee rekening moet worden gehouden. Vorige maand werd er een whitepaper gepubliceerd op GitHub, waarin een inherente fout in de Android Oreo Autofill API werd gedocumenteerd die kan ertoe leiden dat uw wachtwoordbeheerder meer persoonlijke gegevens lekt dan waarvoor u toestemming heeft gegeven. We gaan een kort overzicht geven van het witboek geschreven door Mark Murphy (beter bekend als
CommonsWare) en gepubliceerd op zijn GitHub-pagina op 8 augustus 2017.Mogelijk gegevenslekfout in de Autofill-API van Android Oreo
Hoe werkt de fout?
De implementatie van automatisch aanvullen in Android Nougat (en lagere versies) en browsers zoals Google Chrome is iets heel eenvoudigs. Gewoonlijk zouden apps voor wachtwoordbeheer de toegankelijkheidsservices gebruiken om de scherminhoud te scannen op een inlogvak en gegevens voor automatisch aanvullen aan te bevelen op basis van wat er wordt gevonden. Terwijl het werkte, het aanzienlijke vertraging zou kunnen veroorzaken.
Op Android Oreo werkt dit iets anders, aangezien wachtwoord-apps nu officieel worden ondersteund met de Autofill API. Wachtwoordapplicaties van derden hebben geen toegankelijkheidsservices meer nodig, omdat ze nu de rol van een autofill-service kunnen vervullen en met apps kunnen communiceren via het Autofill Framework. Wanneer de gebruiker zich op een widget concentreert, zal het systeem wat informatie over die widget/formulier verpakken en deze naar de app voor automatisch aanvullen sturen. De applicatie retourneert vervolgens relevante gegevens voor automatisch aanvullen, zoals wachtwoorden, e-mails, creditcards of andere soorten gevoelige gegevens. Het Android-systeem fungeert als tussenpersoon tussen de applicatie die de gegevens opslaat en degene die erom vraagt.
Kwaadaardige apps of malware kunnen echter daadwerkelijk profiteren van de functie voor automatisch aanvullen om meer gegevens voor zichzelf te verkrijgen. Een kwaadaardige activiteit kan vraag om aanvullende gegevens voor automatisch aanvullen met een onzichtbare of verborgen widget. Terwijl de gebruiker ermee instemt een van de zichtbare widgets in te vullen, zoals een inlogformulier of iets dergelijks, krijgt de onzichtbare widget ook aanvullende gegevens zonder dat u deze ziet. Dit kan erg gevaarlijk zijn als de gelekte informatie uw wachtwoord, adres of creditcardgegevens is!
De bovenstaande schermafbeeldingen laten een kwaadaardige testtoepassing zien die misbruik maakt van dit beveiligingslek.
Google's antwoord op het probleem
Volgens CommonsWare heeft Google nog geen publieke oplossing voor dit beveiligingsprobleem gepost. We weten echter wel dat Google op de hoogte is van het probleem. CommonsWare stelt dat Google-technici hebben erkend dat het probleem bestaat in een privé issue tracker-rapport, maar dat dit niet het geval is Het zou moeilijk (zo niet onmogelijk) zijn om het daadwerkelijk te patchen of een oplossing uitrollen.
Maar dat betekent niet dat Autofill volledig onveilig is om te gebruiken, omdat Google een andere aanpak hanteert om de veiligheid van gegevens te garanderen. Het bedrijf is aandringen om de autofill-services het probleem aan hun kant te laten afhandelen en probeert als zodanig het bewustzijn bij ontwikkelaars te vergroten om hun aanbieders van automatisch aanvullen te verbeteren en ze veiliger te maken. Wat wordt er precies voorgesteld?
Allereerst aanbieders van automatisch aanvullen moeten hun gegevens verdelen. In plaats van alle gegevens voor automatisch aanvullen in één pool te bewaren, zouden ontwikkelaars de gebruikersgegevens die in partities zijn opgeslagen, moeten opsplitsen. Bijvoorbeeld een adres-/telefoonpartitie, een creditcardpartitie, een wachtwoord-/gebruikersnaampartitie, enz. De autofill-service zou de gegevens van slechts één partitie tegelijk moeten teruggeven op basis van de gerichte widget. Dit is een van de openbaar beschikbare pagina's over apps voor automatisch aanvullen die zichzelf beschermen tegen het lekken van gegevens naar onzichtbare widgets.
Er zijn volgens Google-technici ook nog enkele andere dingen die ontwikkelaars van wachtwoordmanagers moeten doen. De aanbieder van automatisch aanvullen mag de gegevens bijvoorbeeld alleen teruggeven aan de specifieke app die deze in eerste instantie heeft aangeleverd. Dit moet worden gedaan door de pakketnaam en de openbare handtekening van de applicatie te verifiëren, zodat zelfs een gewijzigde APK er geen toegang toe heeft. Het andere zou zijn dat apps voor automatisch aanvullen authenticatie vereisen voordat ze daadwerkelijk de gegevens verstrekken die authenticatieactiviteit die de gebruiker informeert welk soort gegevens zullen worden verstrekt aan de app die daarom vraagt. Dit advies bevat eigenlijk veel fouten, waarvan de belangrijkste is dat deze adviezen niet daadwerkelijk door Google worden afgedwongen.
Houd er rekening mee dat veel van de bovenstaande voorstellen afkomstig zijn uit het privé-probleemtrackerrapport van CommonsWare en niet uit een officiële Google-documentatiepagina. Voor een verder, meer technisch overzicht van hoe apps die de Autofill API gebruiken zichzelf tegen dit soort aanvallen kunnen beschermen, raden we u ten zeerste aan de volledig witboek van CommonsWare.
Welke apps zijn veilig voor deze fout?
We hebben contact opgenomen met de ontwikkelaars van 1Password, Enpass en LastPass over dit beveiligingslek, en de beveiligingsteams achter deze drie apps hebben beweerde dat ze zijn zeker, hoewel we deze beweringen nog niet hebben geverifieerd.
Zoals we in de bovenstaande verklaringen kunnen zien, vereist 1Password authenticatie van de gebruiker voordat de gegevens worden ingevuld, en wordt hij vooraf geïnformeerd over welke gegevens zullen worden ingevuld. Dit helpt ook bij het probleem van stil invullen, omdat er voor elke activiteit een authenticatiepop-up verschijnt waarin om gegevens voor automatisch invullen wordt gevraagd.
Enpass zal nooit de hele sleutelhanger aan de verzoekende app onthullen, ongeacht of deze kwaadaardig of echt is. Alleen de opgeslagen items die overeenkomen met de pakketnaam van de aanvragende app worden aan de gebruiker gepresenteerd. Ze bevestigden ook dat ze op advies van Google meer maatregelen zullen nemen.
Bovendien bevestigde LastPass ons dat, hoewel ze vóór de release van Android Oreo niet op de hoogte waren van het probleem, hun app wel gebruikmaakt van gegevenspartitionering om gebruikers te beschermen, samen met andere controles om ervoor te zorgen dat LastPass alleen de app invult die aan het item is gekoppeld.
Hoewel er absoluut geen problemen zouden moeten zijn bij het gebruik van deze 3 applicaties, moet u deze uitschakelen als u volledig op de hoogte wilt blijven automatisch volledig invullen op uw telefoon totdat u bij uw wachtwoordbeheerder-ontwikkelaar kunt bevestigen dat hun app veilig is voor deze regel aanval. Gelukkig kan dit eenvoudig worden gedaan door naar Instellingen> Systeem> Talen en invoer> Geavanceerd te gaan en de voorkeur "Service voor automatisch aanvullen" te vinden, erop te tikken en "Geen" te selecteren.
Zoals we hierboven al zeiden, is het niet bekend of Google hier daadwerkelijk een oplossing voor kan uitbrengen, dus het gebruik van vertrouwde apps of het simpelweg uitschakelen van de functie is de enige manier waarop je veilig kunt blijven. Als u meer wilt lezen over dit onderwerp en alle details die ermee samenhangen, moet u het origineel lezen witboek waarin dit wordt gedocumenteerd op GitHub.
Dit artikel is op 13-09-2017 bijgewerkt om de implicaties van de reacties van LastPass, Enpass en 1Password nauwkeuriger weer te geven.