Lösenordshanterare som använder Android Oreos Autofill API är potentiellt sårbara för dataläckage

En potentiell säkerhetsbrist i Android Oreos Autofill API tillåter lösenordshanterare att läcka data som lösenord, adresser eller kreditkort.

Autofyll är en av de största och mest publicerade nya funktionerna som introducerades med lanseringen av Android 8.0 Oreo. Många olika lösenordshanteringsappar, som LastPass, har redan implementerat detta nya API i sina applikationer. Och samtidigt som det kan visa sig vara det en hel förbättring jämfört med de tidigare Autofyll-implementeringarna med hjälp av tillgänglighetstjänster finns det ett potentiellt säkerhetsbrist att överväga. Förra månaden publicerades en vitbok till GitHub, som dokumenterade en inneboende brist i Android Oreo Autofill API som kunde potentiellt leda till att din lösenordshanterare läcker mer av dina personuppgifter än du gav den tillstånd till. Vi kommer att göra en snabb genomgång av vitboken skriven av Mark Murphy (mer känd som CommonsWare) och publicerades på hans GitHub-sida den 8 augusti 2017.


Potentiellt dataläckagefel i Android Oreos Autofill API

Hur fungerar felet?

Implementeringen av autofyll i Android Nougat (och lägre versioner), och webbläsare som Google Chrome, är något riktigt enkelt. Vanligtvis skulle lösenordshanteringsappar använda tillgänglighetstjänsterna för att skanna innehållet på skärmen efter en inloggningsruta och rekommendera autofylldata baserat på vad den hittar. Medan det fungerade, det kan orsaka betydande eftersläpning.

På Android Oreo fungerar detta lite annorlunda, eftersom lösenordsappar nu officiellt stöds med Autofill API. Tredje parts lösenordsapplikationer kräver inte längre tillgänglighetstjänster, eftersom de nu kan fylla rollen som en autofylltjänst och kommunicera med appar genom Autofill Framework. När användaren fokuserar på en widget kommer systemet att paketera lite information om den widgeten/formuläret och skicka den till autofyll-appen. Applikationen returnerar sedan relevant autofyll-data som lösenord, e-postmeddelanden, kreditkort eller någon annan typ av känslig data. Android-systemet fungerar som en mellanhand mellan applikationen som lagrar data och den som begär det.

Autofyll-app i Android 8.0 Oreo

Däremot kan skadliga appar eller skadlig programvara faktiskt dra fördel av autofyll-funktionen för att få mer data för sig själva. En skadlig aktivitet kan begär att ytterligare autofyll-data ska matas in med en osynlig eller dold widget. Medan användaren går med på att fylla en av de synliga widgetarna, som ett inloggningsformulär eller något liknande, får den osynliga widgeten också ytterligare data utan att du ser det. Detta kan vara riktigt farligt om den läckta informationen är ditt lösenord, adress eller kreditkortsuppgifter!

Skärmbilderna ovan visar en skadlig testapplikation som utnyttjar detta säkerhetsbrist.

Googles svar på problemet

Enligt CommonsWare har detta säkerhetsproblem ännu inte en offentlig lösning publicerad av Google. Vi vet dock att Google är medvetet om problemet. CommonsWare uppger att Googles ingenjörer erkände att problemet finns i en privat problemspårningsrapport, men att det skulle vara svårt (om inte omöjligt) att faktiskt lappa det eller rulla ut en fix.

Men det betyder inte att Autofyll är helt osäkert att använda, eftersom Google tar ett annat tillvägagångssätt för att säkerställa datasäkerhet. Företaget är trycker på för att få autofylltjänster att hantera problemet på sin sida och som sådan, försöker öka medvetenheten för utvecklare att förbättra sina autofill-leverantörer och göra dem säkrare. Vad föreslås exakt?

Först och främst, leverantörer av autofyll bör dela upp sina data. Istället för att hålla all autofyll-data i en enda pool, bör utvecklare dela upp användardata som lagras i partitioner. Till exempel en adress-/telefonpartition, en kreditkortspartition, en lösenords-/användarnamnspartition, etc. Autofylltjänsten bör endast lämna tillbaka data från en partition åt gången baserat på den fokuserade widgeten. Detta är en av de allmänt tillgängliga sidor på Autofyll-appar som skyddar sig från att läcka data till osynliga widgets.

Det finns också några andra saker som utvecklare av lösenordshanterare bör göra, enligt Googles ingenjörer. Till exempel bör leverantören av autofyll endast lämna tillbaka data till den specifika app som tillhandahöll den i första hand. Detta bör göras genom att verifiera paketnamnet och den offentliga signaturen för applikationen så att inte ens en modifierad APK kan komma åt den. Den andra saken skulle vara att autofyll-appar kräver autentisering innan de faktiskt tillhandahåller data den autentiseringsaktiviteten som informerar användaren om vilken typ av data som kommer att tillhandahållas till appen som begär det. Detta råd har faktiskt många misstag, det viktigaste är att dessa råd faktiskt inte upprätthålls av Google.

Tänk på att många av ovanstående förslag togs från CommonsWares privata problemspårningsrapport och inte från någon officiell Google-dokumentationssida. För en ytterligare, mer teknisk uppdelning av hur appar som använder Autofill API kan skydda sig mot denna typ av attack, rekommenderar vi starkt att du läser fullständig vitbok från CommonsWare.

Vilka appar är säkra från detta fel?

Vi har kontaktat utvecklarna av 1Password, Enpass och LastPass om denna sårbarhet, och säkerhetsteamen bakom dessa 3 appar har hävdade att de är säkra, även om vi ännu inte har verifierat dessa påståenden.

Som vi kan se i uttalandena ovan kräver 1Password autentisering från användaren innan uppgifterna fylls i, även meddela dem om vilka uppgifter som kommer att fyllas i i förväg. Detta hjälper också till med problemet med tyst fyllning, eftersom en autentiseringspopup kommer att visas för varje aktivitet som ber om autofylldata.

Enpass kommer aldrig att avslöja hela nyckelringen för den begärande appen, vare sig den är skadlig eller äkta. Endast de sparade objekten som matchar paketnamnet för den begärande appen kommer att presenteras för användaren. De bekräftade också att de kommer att ha fler åtgärder på plats efter Googles råd.

Dessutom bekräftade LastPass för oss att, även om de inte kände till problemet före Android Oreo-släppet, använder deras app datapartitionering för att skydda användare, tillsammans med andra kontroller för att säkerställa att LastPass endast fylls i appen som är kopplad till posten.

Även om det inte borde finnas några problem med att använda dessa 3 applikationer, bör du inaktivera om du vill förbli helt i klartext autofyll helt på din telefon tills du kan bekräfta med din utvecklare av lösenordshanteraren att deras app är säker från den här raden av ge sig på. Lyckligtvis kan detta enkelt göras genom att gå till Inställningar > System > Språk och inmatning > Avancerat och hitta inställningen "Autofyll tjänst", trycka på den och välja "Ingen".

Som vi sa ovan är det inte känt om Google faktiskt kan skjuta ut en fix för detta, så att använda betrodda appar eller helt enkelt inaktivera funktionen är det enda sättet du kan vara säker. Om du vill läsa mer om den här frågan och alla detaljer som är förknippade med den, bör du läsa på originalet vitt papper som dokumenterar det på GitHub.


Den här artikeln uppdaterades 9/13/17 för att mer exakt återspegla implikationen av svaren från LastPass, Enpass och 1Password.