Beveiligingsupdate voor de LastPass-extensie

Overzicht beveiligingsincident 31 maart 2017 (20.10 u)

Op zaterdag 25 maart meldde beveiligingsonderzoeker Tavis Ormandy van Google’s Project Zero een onderzoeksuitkomst in verband met de beveiliging van de LastPass-browserextensies. De afgelopen 24 uur hebben we een update uitgebracht om deze kwetsbaarheid in alle browsers op te lossen. Deze is door Tavis zelf bevestigd.

Voor de meeste gebruikers wordt de extensie automatisch bijgewerkt. Zorg dat u de meest recente versies gebruikt (4.1.44 of hoger), die u altijd kunt downloaden via https://www.lastpass.com/.

Nu het probleem opgelost is, willen we onze community een overzicht van de evaluatie geven. Wat stond er precies in de beveiligingsmelding en hoe maken we LastPass in de toekomst beter en nog veiliger? Gezien de aard van de kwetsbaarheid is dit overzicht bijzonder technisch van aard.

Samenvatting

  • Het ging om een kwetsbaarheid in de clients van de LastPass-browserextensie, die kon worden gebruikt om gegevens te stelen en de extensie te manipuleren.
  • Om deze kwetsbaarheid te kunnen gebruiken, moesten hackers de gebruiker naar een kwaadaardige website lokken (met algemene of gerichte phishing of anderszins) of naar een vertrouwde website met kwaadaardige adware.
    • Hiervoor was per gebruiker een individuele aanval nodig, uitgevoerd via de lokale browser van de gebruiker.
  • Alle extensies zijn nu bijgewerkt met de oplossing en ingediend bij de betreffende stores.
    • De kwetsbaarheden waren niet van toepassing voor onze mobiele apps voor Android en iOS.
  • U dient al uw LastPass-browserextensies te updaten naar versie 4.1.44 of hoger.
    • Controleer uw versie door op het LastPass-pictogram te klikken. U vindt uw versie onder Meer opties > Over LastPass.
    • De meeste gebruikers ontvangen automatisch de meest recente update, maar de nieuwste versie kan ook altijd worden gedownload vanaf https://www.lastpass.com/.
    • Er is geen deïnstallatie vereist om de update te downloaden.

Evaluatie

De melding

De kwetsbaarheid aan de client-zijde van de LastPass-browserextensie werd veroorzaakt door de manier waarop LastPass zich gedraagt in zogeheten isolated worlds. De melding legt dit als volgt uit: “een isolated world is een uitvoeringsomgeving voor JavaScript met hetzelfde DOM (Document Object Model) als andere werelden, maar zonder gedeelde variabelen en functies. Zonder isolated worlds zouden pagina’s zonder rechten scripts met meer rechten kunnen verstoren, en deze naar wens manipuleren.” De binaire versie van de extensie (die wordt gebruikt door minder dan 10% van de LastPass-gebruikers) zou gemanipuleerd kunnen worden om met remote code execution (RCE) op afstand code op de extensie uit te laten voeren.

 “Isolated worlds” en vertrouwde pagina’s

De werking van LastPass is voor een groot deel gebaseerd op content scripts. Dit zijn kleine stukjes JavaScript die we implementeren in websites van derden om de aanmeldinformatie te lezen en automatisch in te vullen. Juist die content scripts maken LastPass zo nuttig voor onze gebruikers. Een content script communiceert met de rest van de extensie voor het zware werk: ontsleutelen van opgeslagen sites, updaten van de kluis, enzovoorts. De rest van de extensie is volledig afgesloten voor sites van derden en mag de content scripts niet beïnvloeden.

De content scripts worden normaal gesproken apart gehouden van de rest van de site, via het concept van de isolated worlds. Dit concept (zie: isolated worlds) zorgt dat content scripts wel de DOM-inhoud van een externe website kunnen lezen, maar geen JavaScript-functies of variabelen. Omgekeerd geldt ook: de externe website heeft geen toegang tot functies of variabelen in onze content scripts. Deze scheiding is bedoeld om beide kanten beter te beveiligen tegen manipulaties van buitenaf.

Soms hebben deze variabelen invloed op de logica van het content script. Het is moeilijk om willekeurige waarden in JavaScript te injecteren met deze techniek. De melding liet echter zien dat er met een bijzonder slimme truc willekeurige strings konden worden geïnjecteerd. Eén hiervan was genoeg om de extensie te laten denken dat hij op lastpass.com werd uitgevoerd. Hierdoor kon een aanvaller de LastPass-extensie zo manipuleren dat de opgeslagen gegevens van de betreffende gebruiker werden vrijgegeven, en in de binaire versie willekeurige uitvoerbare bestanden starten.

Wij gingen er van uit dat we konden bouwen op het algemene kader waarbinnen onze scripts worden uitgevoerd. Dit bleek onterecht. Hierdoor was het op veel locaties in onze JavaScript mogelijk om externe, algemene variabelen boven de standaardwaarden te plaatsen.

De oplossing van het probleem

Nadat we de volledige melding ontvingen, heeft een functieoverstijgend responsteam de resultaten onmiddellijk onderzocht en bevestigd. Het was duidelijk er voor de oplossing een significante wijziging in onze browserextensies vereist was. Dit was geen eenvoudige patch, maar een kwetsbaarheid waar een grondige, doordachte oplossing voor nodig was. De wijzigingen moesten vervolgens worden toegepast en getest voor alle betroffen extensies.

Kortom: een complete oplossing van de kwestie vereiste een behoorlijke inspanning. Ons team heeft rond de klok gewerkt om de fixes zo snel mogelijk af te krijgen.

Hiervoor hebben we de omgang met variabelen aangepast en het proxy-object toegevoegd aan de rand van het content script, als een soort filter om te voorkomen dat extern geleverde venstereigenschappen binnenin het content script konden worden gelezen. Om de codeuitvoering op afstand (RCE) verder tegen te gaan, hebben we de bijlagetypes beperkt die door de extensie kunnen worden gestart, en de beschikbare extensie-API’s teruggebracht.

We hebben direct samengewerkt met Project Zero van Google om te bevestigen dat onze fixes alles afdekten. Zodra de oplossing klaar was voor alle betroffen extensies, konden we deze laten beoordelen door alle stores en snel uitrollen naar gebruikers. We willen onze partners bij Apple, Google, Microsoft, Mozilla, Opera, Yandex en andere browsers bedanken voor de snelle beoordeling en vrijgave van onze extensie.

De toekomst

We bevelen andere ontwikkelaars van browserextensies sterk aan om hun code te controleren op dit patroon en om ervoor te zorgen dat ze deze kwetsbaarheid afdekken.

Wachtwoordbeheer is ons werk; veiligheid heeft daarom onze hoogste prioriteit en dat zal altijd zo blijven. Zoals altijd hechten we veel waarde aan het werk van de beveiligingsprofessionals die ons product uitdagen en samenwerken met onze teams om er zo voor zorgen dat we onze gebruikers een veilige dienst bieden. LastPass wordt als marktleider getest door de allerbeste experts, waar onze software en onze klanten beter van worden.

We willen het allerhoogste beveiligingsniveau vasthouden en blijven daarom samenwerken met ethische hackers en beveiligingsonderzoekers. We hebben ook een beloningsprogramma om mensen hiertoe aan te moedigen: https://bugcrowd.com/lastpass. Natuurlijk houden we u ook hierover op de hoogte.

Met vriendelijke groet,

Het team van LastPass

____________________________________________________________________________________________________________________________

27 maart 2017 (19.10 u)

Dit weekend meldde Tavis Ormandy, beveiligingsonderzoeker van Google, een nieuwe kwetsbaarheid aan de client-zijde in de browserextensie van LastPass. We zijn deze nu aan het oplossen.  Deze aanval is uniek en bijzonder geavanceerd. We willen nog niets specifiek publiceren over de kwetsbaarheid of onze oplossing, om minder geavanceerde maar kwaadwillende hackers niet op ideeën te brengen. U kunt een uitgebreidere evaluatie van ons verwachten, zodra de kwetsbaarheid opgelost is.

Tot die tijd willen we mensen zoals Tavis bedanken, die de lat voor online beveiliging met LastPass steeds hoger leggen en met onze teams samenwerken om van LastPass de meest veilige wachtwoordbeheerder te maken die er is. Daarnaast willen we onze gebruikers enkele stappen bieden, waarmee ze zichzelf beter kunnen beschermen tegen dit soort problemen aan de client-zijde.

  1. Gebruik de LastPass-kluis als een startlocatie – Start websites direct vanuit de LastPass-kluis. Dit is de veiligste manier om bij uw aanmeldingsgegevens en websites te komen, totdat deze kwetsbaarheid is opgelost.
  2. Gebruik een extra beveiligingslaag waar dat kan – Schakel waar mogelijk altijd tweeledige verificatie in voor uw accounts; veel websites bieden deze optie tegenwoordig als extra beveiliging.
  3. Pas op voor phishing – Blijf altijd alert en vermijd pogingen tot  Klik niet op links van onbekenden of op links die niet overeenstemmen met wat u gewend bent van uw vertrouwde contactpersonen en bedrijven. Bekijk ook onze uitleg over phishing.

We laten u meer weten over de patch zodra alles afgerond is.