Sicherheitsupdate für die LastPass-Erweiterung

Incident-Report: 31. März 2017 (20:10 Uhr)

Am Samstag, den 25. März meldete Sicherheitsforscher Tavis Ormandy von Googles Project Zero einen sicherheitsrelevanten Fund in den LastPass-Browsererweiterungen. In den letzten 24 Stunden wurde von uns ein Update veröffentlicht, das die entdeckte Sicherheitslücke unserer Meinung nach in allen Browsern schließt. Dies wurde auch von Ormandy selbst überprüft und bestätigt.

Die meisten User nutzen für ihre LastPass-Browsererweiterungen wahrscheinlich die automatischen Updates. Bitte stellen Sie sicher, dass Sie die neueste Version (4.1.44 oder höher) verwenden, die auch unter https://www.lastpass.com/ zum Download zur Verfügung steht.

Nun, da das Problem behoben wurde, möchten wir eine Post-mortem-Analyse veröffentlichen und unserer Nutzergemeinde erklären, welche Konsequenzen dieser Report hatte und wie wir LastPass in Zukunft besser und sicherer machen werden. Bitte beachten Sie, dass die Analyse aufgrund der Art der entdeckten Sicherheitslücke einige sehr technische Details enthält.

Zusammenfassung

  • Die Sicherheitslücke kam auf Clientseite in den LastPass-Browsererweiterungen vor und machte es möglich, Daten zu stehlen und die LastPass-Erweiterung zu manipulieren.
  • Um sie auszunutzen, musste der User (über einen Phishing-, Spearphishing- oder anderen Angriff) auf eine präparierte Website gelockt werden oder es musste auf einer vertrauenswürdigen Website schädliche Adware ausgeführt werden.
    • Dazu war ein Angriff auf einzelne Benutzer notwendig, und zwar über den lokalen Browser des Benutzers.
  • Für alle Erweiterungen wurden nun Updates mit der Fehlerkorrektur an die jeweiligen Stores übermittelt.
    • Unsere mobilen Apps für Android und iOS waren nicht betroffen.
  • All Ihre LastPass-Browsererweiterungen sollten auf Version 4.1.44 oder höher aktualisiert werden.
    • Sie können Ihre Versionsnummer ermitteln, indem Sie auf das Symbol der LastPass-Erweiterung klicken und dann auf Weitere Optionen > Über LastPass.
    • Unsere Erweiterung sollte für die meisten User automatisch aktualisiert werden; die neuesten Versionen stehen aber auch unter https://www.lastpass.com/ zum Download zur Verfügung.
    • Zum Herunterladen der aktualisierten Version ist keine Deinstallation erforderlich.

Post-mortem-Analyse

Der Report

Die clientseitige Sicherheitslücke in den LastPass-Browsererweiterungen wurde durch das Verhalten von LastPass in sogenannten „isolated worlds“ oder „isolierten Welten“ verursacht. Wie im Report angemerkt, ist „eine isolierte Welt eine Umgebung für die JavaScript-Ausführung, die sich das DOM (Document Object Model) mit anderen Welten teilt; andere Dinge wie Variablen und Funktionen allerdings nicht. Ohne isolierte Welten könnten Webseiten mit weniger Berechtigungen Skripte mit höheren Berechtigungen beeinflussen und sie zum Ausführen beliebiger Aktionen bringen.“ Im Falle der Benutzer, die die Binärversion der Erweiterung verwenden (weniger als zehn Prozent aller LastPass-User), hätte die Erweiterung manipuliert werden und eine Remotecodeausführung ermöglichen können.

 „Isolierte Welten“ und vertrauenswürdige Seiten

Die Funktionsweise von LastPass beruht zu einem großen Teil auf sogenannten Content Scripts. Content Scripts sind JavaScript-Codeausschnitte, die in fremde Websites eingefügt werden, um Anmeldeinformationen zu erfassen und Felder automatisch auszufüllen. Sie tragen wesentlich dazu bei, dass LastPass so nützlich ist. Diese Content Scripts kommunizieren in weiterer Folge mit dem Rest der Erweiterung, um die eigentliche Arbeit auszuführen: gespeicherte Websites entschlüsseln, den Vault aktualisieren usw. Der Rest der Erweiterung ist für fremde Websites auf keine Weise zugänglich und sollte nicht in der Lage sein, die Content Scripts zu beeinflussen.

Die Content Scripts sind in der Regel durch sogenannte „isolated worlds“ oder „isolierte Welten“ vom Rest der Website getrennt. In einer isolierten Welt können unsere Content Scripts die DOM-Inhalte fremder Websites lesen; interne JavaScript-Funktionen oder ‑Variablen aber nicht. Umgekehrt funktioniert es genauso: Die fremde Website kann keine Funktionen in unseren Content Scripts aufrufen und auf keine Skript-Variablen zugreifen. Diese Trennung soll beide Seiten vor externer Manipulation schützen.

In manchen Fällen können diese Variablen die Logik des Content Scripts beeinflussen. Es ist schwierig, mit dieser Methode willkürliche Werte in JavaScript einzufügen; der Report zeigte jedoch, dass es besonders gewieften Personen sehr wohl möglich war. Eine dieser willkürlichen Zeichenfolgen reichte, um die Erweiterung davon zu überzeugen, dass sie auf lastpass.com ausgeführt wurde. Dadurch hätte ein Angreifer die LastPass-Erweiterung so manipulieren können, dass sie die gespeicherten Daten des Benutzers preisgibt. Im Falle der Binärversion hätte er außerdem beliebige ausführbare Programme starten können.

Unsere Annahme war, dass wir dem globalen Sichtbarkeitsbereich, in dem unsere Content Scripts ausgeführt werden, vertrauen können. Wie sich herausstellte, war dies allerdings nicht der Fall. Folglich gab es viele Stellen in unserem JavaScript, an denen aus anderen Quellen stammende globale Variablen einen Standardwert überschreiben konnten.

Problembehebung

Die Erkenntnisse wurden sofort nach Erhalt des vollständigen Reports von einem funktionsübergreifenden Krisenteam untersucht und überprüft. Es lag auf der Hand, dass zur Behebung dieses Problems weitreichende Änderungen an unseren Browsererweiterungen notwendig waren. Ein einfacher Patch hätte nicht genügt; wir brauchten eine gut durchdachte und tiefgehende Fehlerkorrektur. Diese Änderungen mussten danach in alle betroffenen Erweiterungen übertragen und dort getestet werden.

Kurz zusammengefasst: Die vollständige Behebung des gemeldeten Problems erforderte einen beträchtlichen Aufwand, und unser Team arbeitete rund um die Uhr, um die Fehlerkorrekturen binnen kurzer Zeit fertigzustellen.

Die Korrektur besteht darin, dass die Verarbeitung der Variablen geändert und das Proxy-Objekt zum umgebenden Sichtbarkeitsbereich des Content Scripts hinzugefügt wurde. Es agiert somit als „Sandbox“, um zu verhindern, dass aus externen Quellen stammende Fenstereigenschaften innerhalb des Content Scripts gelesen werden können. Um die Gefahr der Remotecodeausführung weiter zu minimieren, wurden die Arten der Anhänge, die die Erweiterung aufrufen kann, sowie die verfügbaren Erweiterungs-APIs eingeschränkt.

Wir haben direkt mit Googles Project-Zero-Team zusammengearbeitet, um sicherzugehen, dass sämtliche Lücken geschlossen wurden. Nachdem die Fehlerkorrektur für alle betroffenen Erweiterungen fertig war, wurden die neuen Erweiterungen von sämtlichen Stores überprüft und innerhalb kürzester Zeit unter unseren Usern verbreitet. Wir möchten unseren Partnern von Apple, Google, Microsoft, Mozilla, Opera, Yandex und anderen Softwareherstellern danken, die den Überprüfungs- und Veröffentlichungsprozess beschleunigt haben.

Blick in die Zukunft

Wir empfehlen allen Entwicklern von Erweiterungen dringend, in ihrem Code nach diesem Muster Ausschau zu halten und sicherzugehen, dass ihre Erweiterungen nicht gefährdet sind.

Die Passwortverwaltung ist unser Geschäft und die Sicherheit hat bei uns stets oberste Priorität. Wir wissen die Arbeit der Security-Community sehr zu schätzen, die die Sicherheit unseres Produktes laufend auf die Probe stellt und unseren Teams hilft, unseren Usern einen sicheren Dienst zu bieten. Als Marktführer wird LastPass von den Besten der Besten getestet, wovon sowohl unsere Software als auch unsere Kunden profitieren.

Um weiterhin ein Höchstmaß an Sicherheit zu gewährleisten, werden wir auch in Zukunft mit White-Hat-Sicherheitsforschern zusammenarbeiten und Anreize für die Teilnahme an unserem Bug-Bounty-Programm (https://bugcrowd.com/lastpass) bieten. Nähere Informationen dazu werden in Kürze veröffentlicht.

Vielen Dank!

Ihr LastPass-Team

____________________________________________________________________________________________________________________________

  1. März 2017 (19:10 Uhr)

Am Wochenende berichtete Google-Sicherheitsforscher Tavis Ormandy über eine neue clientseitige Sicherheitslücke in der LastPass-Browsererweiterung. Wir arbeiten derzeit aktiv an der Behebung dieses Fehlers.  Dieser Angriff ist ohnegleichen und erfordert ein hohes Maß an Raffinesse. Wir möchten zu diesem Zeitpunkt keine Details zur Sicherheitslücke oder der Fehlerkorrektur bekanntgeben, da weniger raffinierte Personen mit böswilligen Absichten aus diesen Informationen ungewollte Rückschlüsse ziehen könnten. Eine ausführliche Post-mortem-Analyse folgt, sobald die Arbeiten abgeschlossen wurden.

In der Zwischenzeit möchten wir Leuten wie Tavis Ormandy danken, die uns helfen, die Latte für die Online-Sicherheit mit LastPass noch höher zu legen. Gemeinsam mit unseren Teams tragen sie dazu bei, LastPass zum sichersten Passwort-Manager auf dem Markt zu machen. Außerdem möchten wir unsere User über einige Sicherheitsmaßnahmen informieren, die sie ergreifen können, um sich besser vor solchen clientseitigen Problemen zu schützen.

  1. Verwenden Sie den LastPass-Vault als Launchpad: Rufen Sie Websites direkt aus dem LastPass-Vault auf. Bis die Sicherheitslücke geschlossen wurde, ist dies die sicherste Methode für den Zugriff auf Ihre Zugangsdaten.
  2. Nutzen Sie nach Möglichkeit die Zwei-Faktor-Authentifizierung: Wenn die Zwei-Faktor-Authentifizierung für einen Dienst angeboten wird, dann sollten Sie stets davon Gebrauch machen. Viele Websites haben diese Option mittlerweile eingeführt, um die Sicherheit zu erhöhen.
  3. Nehmen Sie sich vor Phishing-Angriffen in Acht: Seien Sie stets auf der Hut vor Phishing-Versuchen. Klicken Sie auf keine Links von Unbekannten und auch auf keine verdächtig erscheinenden Links von Kontakten und Unternehmen, denen Sie normalerweise vertrauen. Lesen Sie dazu auch unseren Artikel mit grundlegenden Informationen zu Phishing-Angriffen.

Wir werden weitere Informationen zur Fehlerkorrektur bekanntgeben, sobald die Arbeiten abgeschlossen sind.