Door Cerberus_tm:
Ik vraag mij dit af, maar misschien heb jij ook geen idee: stel ik gebruik Stoute App die een webview met ABN Amro erin heeft. Waarom zou Lastpass dan mijn ABN-wachtwoord invullen in Stoute App?
Dank voor jouw vraag, dit helpt mij inzien dat gebruikers vanuit een ander perspectief (verwachtingspatroon) kunnen redeneren.
Ik weet niet of een app met een WebView zich richting het
Android Autofill Framework kan voordoen als een generieke webbrowser, en via dat framework een URL naar de wachtwoordmanager kan sturen (ik heb wel ooit geprogrammeerd, maar nooit voor Android). Als dat mogelijk is zie ik sowieso geen reden waarom een wachtwoordmanager die URL (of de "origin" daarin) niet zou herkennen en aanbieden om inloggegevens in te vullen als er een record voor de betreffende website in die wachtwoordmanager zit.
Maar ook als een app met WebView zich
niet voordoet als een generieke browser, maak ik op uit de
presentatie (PDF) dat de passwordmanager een
AssistStructure ontvangt waarin de URL teruggevonden kan worden (de onderhavige bug lijkt dat sommige wachtwoordmanagers niet checken of er sprake is van een WebView met URL, maar "App-based" credentials terugsturen, dus naar de App i.p.v. naar de WebView daarin).
Door Cerberus_tm:
Is het niet zo dat Lastpass alleen een wachtwoord in Stoute App zal invullen wanneer dat wachtwoord in mijn vault gekoppeld is aan Stoute App? En mijn ABN-wachtwoord is dat niet. Dus hoe zou dit in de praktijk daar ingevuld kunnen worden?
Ik kan twee dingen bedenken.
1. Een gebruiker zoekt handmatig in zijn vault naar ABN, kopieert dat wachtwoord, en de gebruiker plakt het handmatig in Stoute App. Dit lijkt me dan vooral een fout van de gebruiker.
Veiligheidshalve heb ik geen hoge verwachtingen van allerlei aanvullende beveiligingsmaatregelen in wachtwoordmanagers (en het OS).
Als ik mijn bank-app op mijn Android phone start, vraagt deze om een pincode. Android Autofill plaatst daar een popup bij met de vraag of ik KeePassDX wil gebruiken om in te loggen. In die popup wordt de app-naam vermeld ("com.<banknaam>.<nog_iets>").
Die pincode heb ik nooit in KeePassDX gezet (het Autofill Framework weet dat niet, ik heb op dat moment nog niet eens een KeePassDX database gekozen). Na het intikken verschijnt er een nieuwe Autofill popup met de vraag of ik de zojuist ingevoerde gegevens in KeePassDX wil opslaan.
Als test heb ik zojuist de karakterreeks "com.<banknaam>.<nog_iets>" toegevoegd aan de Application Blocklist van KeePassDX. Nu krijg ik geen Autofill popups meer in die bank app.
KeePassDX heeft overigens ook een "Web domain blocklist".
Door Cerberus_tm:
2. Lastpass analyseert op de een of andere manier welke URL er actief is in een webview, en stuurt dan het wachtwoord dat past bij dat domein naar Stoute App. Als dat zo is, dan zou ik dat bijzonder slecht vinden van Lastpass. Misschien kan Google dit voorkomen door iets te veranderen in Android; maar in de grond is dit een fout van Lastpass, niet van Android?
De wachtwoordmanager communiceert niet
zelf met "de app" (browser, app met WebView of app zonder WebView). Als jij Stoute App vertrouwt, waarom zou Lastpass jou dan tegen jouzelf moeten beschermen?
Uit de presentatie maak ik op dat 1Password weigert om te "AutoFillen" in WebViews, maar ik kan mij voorstellen dat sommige gebruikers dit als betuttelend zullen beschouwen.
In de presentatie, maar bijv. ook in deze
habr.com blog: "Autofill input fields in Android WebView" kun je zien dat gegevens uit de app via een
AssistStructure naar de wachtwoordmanager worden overgedragen. In die habr.com blog zie je dat geantwoord wordt met een
FillResponse.
In die blog kun je ook zien dat app-makers middels JavaScript Injection toegang hebben tot invoervelden in een WebView, waardoor het fixen van de onderhavige "kwetsbaarheid" nauwelijks zin heeft. Er is simpelweg geen sprake van betrouwbare isolatie tussen een app en een daarin opgenomen WebView.
Prio 1 is dat jouw device niet gecompromitteerd is (dat kan ook door een kwaadaardige app die permissies heeft om als "Accessibility Service" te werken) en prio 2 is dat je uitsluitend apps van betrouwbare makers installeert.
Omdat je vooral dat laatste nooit zeker weet: voer geen vertrouwelijke gegevens bestemd voor partij A in in een app van partij B (ook niet als er een WebView gebruikt wordt). Bij het OS en webbrowsers (plus eventuele plug-ins) heb je op dit punt geen keus, die zul je
moeten vertrouwen.
Autofill is hartstikke handig (als je het goed gebruikt) omdat het phishing kan helpen voorkómen. Als ik in een bericht op een link klik en via mijn browser op een nepwebsite uitkom, zal KeePassDX daar geen credentials voor vinden. Als die website als twee druppels water op de echte lijkt, betekent dit dat de domeinnaam niet correct is; alle alarmbellen moeten dan afgaan.
Veel te veel mensen checken niet of een gegeven domeinnaam van een kennelijke organisatie is voordat zij inloggen, of hebben geen idee hoe zij dat moeten doen. Autofill kan dus helpen; het zou zonde zijn als de onderhavige non-issue ertoe leidt dat mensen Autofill uitschakelen.