Sie haben Famedly Blog erfolgreich abonniert.
Toll! Schlie├čen Sie als N├Ąchstes die Pr├╝fung ab, um vollen Zugriff auf Famedly Blog zu erhalten.
Willkommen zur├╝ck! Sie haben sich erfolgreich angemeldet.
Erfolg! Ihr Konto ist vollst├Ąndig aktiviert, Sie haben nun Zugriff auf alle Inhalte.
Erfolg! Ihre Zahlungsinformationen wurden aktualisiert.
Aktualisierung der Rechnungsinformationen fehlgeschlagen.
Potenzielle Sicherheitsl├╝cke in Matrix geschlossen

Potenzielle Sicherheitsl├╝cke in Matrix geschlossen

Am 08. September wurde die Famedly GmbH durch New Vector auf eine potentielle Sicherheitsl├╝cke aufmerksam gemacht. Diese konnten wir erfolgreich schlie├čen.

Christian Pauly
Christian Pauly
Sicherheitsl├╝cke geschlossen

Am 08. September wurde die Famedly GmbH durch New Vector auf eine potentielle Sicherheitsl├╝cke aufmerksam gemacht. Diese wurde bei einer internen ├ťberpr├╝fung ┬áentdeckt und von der Sicherheitsl├╝cke waren mehrere Apps, die auf das Kommunikationsprotokoll Matrix aufsetzen, betroffen. In der Theorie hatten ┬áAngreifer die M├Âglichkeit unerlaubten Zugriff auf Verschl├╝sselungsschl├╝ssel anderer Nutzer zu erlangen.

Durch eine direkte interne ├ťberpr├╝fung durch Famedly hat sich herausgestellt, dass die von Famedly entwickelte Matrix Dart SDK von der Sicherheitsl├╝cke betroffen war. ┬áBei der Matrix Dart SDK handelt es sich um eine Softwarebibliothek (Library), auf der Famedly und diverse andere Apps aufbauen. Nach unseren Informationen gab es keinen Fall, in dem jemand diese Sicherheitsl├╝cke ausgenutzt hat. Ebenfalls k├Ânnen wir versichern, dass keine Kundenserver der Famedly GmbH betroffen waren.

Software kann niemals zu 100% frei von Sicherheitsl├╝cken sein. Umso wichtiger ist der korrekte Umgang mit so einem Fall. Dieser erste Security-Vorfall bei Famedly war f├╝r das betroffene Frontend Team unter meiner F├╝hrung daher eine wichtige Erfahrung. Wir haben eine Menge gelernt und konnten anwenden, was wir zuvor in der Theorie besprochen haben.

Der zeitliche Ablauf

Am 08. September erhielten wir die Information ├╝ber die potenzielle Schwachstelle. Umgehend haben zwei erfahrene Softwareentwickler angefangen die L├╝cke zu untersuchen (Pair Programming). Nach der Untersuchung konnte die Sicherheitsl├╝cke innerhalb weniger Stunden geschlossen werden.

Da auch weitere Matrix-Klienten (Apps) des Matrix-Protokolls (wie bspw. FluffyChat, Nheko und Element Android) betroffen waren, musste sich mit den jeweiligen Verantwortlichen abgestimmt werden, da das gleichzeitige Ausrollen des Updates f├╝r das Beheben der Sicherheitsl├╝cke entscheidend ist. H├Ątte einer der Klienten die L├Âsung f├╝r die Sicherheitsl├╝cke (Fix) zu fr├╝h an die Benutzenden ausgeliefert, h├Ątte die Ver├Âffentlichung der Sicherheitsl├╝cke alle anderen Apps gef├Ąhrdet. Gemeinsam wurde daher festgelegt am 13. September um 12 Uhr UTC (14 Uhr Ortszeit) alle Klienten gleichzeitig zu aktualisieren und bis dahin Stillschweigen ├╝ber das Wissen, wie die Sicherheitsl├╝cke auszunutzen ist, zu bewahren.

Innerhalb von Famedly wurde anschlie├čend koordiniert an einer Update Strategie gearbeitet. So wurde im Google PlayStore und im iOS AppStore der Release so konfiguriert, dass er zum richtigen Zeitpunkt ausgeliefert wurde. Zus├Ątzlich sorgte unser DevOps-Team, das f├╝r den Betrieb s├Ąmtlicher Famedly Server und den zugeh├Ârigen Web Apps verantwortlich ist, daf├╝r, dass alle Famedly Web Apps, zum gleichen Zeitpunkt aktualisiert wurden. Eine Stunde nach Bereitstellung des Updates wurde der Fix anschlie├čend ├Âffentlich gemacht und alle Nutzer gezwungen ├╝ber eine Pop-Up Nachricht beim Starten der App diese zu aktualisieren.

Die Timeline im ├ťberblick

  • 08. September am Mittag: Sicherheitsl├╝cke wurde gemeldet
  • 08. September am Abend: Ein Fix (inklusive Unit-Tests f├╝r diesen Case) wurde erstellt und das weitere Vorgehen mit anderen Client-Entwicklern wurde besprochen
  • 10. September: Zeit f├╝r die Auslieferung (Deploy) wurde abgestimmt
  • 13. September um 14 Uhr (UTC+2): Fix wurde an alle Benutzenden ausgeliefert

Wie konnte es zu dieser Sicherheitsl├╝cke kommen?

Die Sicherheitsl├╝cke betraf einen seltenen Ausnahmefall (Edge-Case) beim automatisierten Teilen von Verschl├╝sselungsschl├╝sseln. Die L├╝cke lag nicht im Matrix-Protokoll selbst oder in Libolm (der Verschl├╝sselungs-Bibliothek, die fast alle Klienten verwenden). Sondern es handelte sich um einen spezifischen Fall, der bei der Implementierung beachtet werden muss, aber im offiziellen Leitfaden zur Implementierung der Ende-zu-Ende-Verschl├╝sselung (End-to-End Encryption implementation guide) von Matrix.org bis dahin fehlte. Die Matrix-Foundation versprach, nachzubessern. Genauere Details finden Sie im offiziellen Blog-Post auf matrix.org: https://matrix.org/blog/2021/09/13/vulnerability-disclosure-key-sharing

Was lief gut?

Wir haben die Sicherheitslücke nicht nur geschlossen, sondern auch neue Unit-Tests hinzugefügt. Somit ist sichergestellt, dass bei jeder zukünftigen Code-Änderung dieser Edge-Case immer überprüft wird.

Das Timing der Ver├Âffentlichung funktionierte fast so, wie wir es erwartet hatten. Aus unbekannten Grund hat Apple die iOS App erst um 14:14 Uhr ver├Âffentlicht, was noch in der vorgesehenen Varianz lag. Darauf hatten wir leider keinen Einfluss. Bis zum Update blieb die Sicherheitsl├╝cke weiterhin geheim.

Da die von uns entwickelte Matrix Dart SDK quelloffen ist, konnten wir diese Sicherheitsl├╝cke ├╝berhaupt erst finden. Das zeigt wieder einmal, dass Quelloffenheit f├╝r die Sicherheit von Software unabdingbar ist. So wurde das Risiko insgesamt extrem gering gehalten.

Was m├Âchten wir noch weiter verbessern?

├ťber die Sicherheitsl├╝cke wussten nur ich, einer der Gesch├Ąftsf├╝hrer und zwei weitere Mitarbeiter Bescheid. Die Geheimhaltung hat f├╝r die ein oder andere Verwirrung im Team gesorgt. In Zukunft k├╝ndigen wir die Existenz einer solchen Sicherheitsl├╝cke im Team an. Dabei werden wir keine Details nennen, wie die L├╝cke auszunutzen w├Ąre. Alle Schritte werden in Zukunft mit einem Zeitstempel genau dokumentiert und die verantwortlichen Mitarbeitenden werden benannt. Dabei wollen wir so wenig Personen wie m├Âglich involvieren, um das Risiko einer vorzeitigen Ver├Âffentlichung zu minimieren. Dennoch sollten mindestens zwei Mitarbeitende pro Team in alle Details eingeweiht sein, falls einer w├Ąhrend dieser Zeit ausf├Ąllt.

Fazit

Keine Software kann frei von Sicherheitsl├╝cken sein. Durch Unit-Tests und eine saubere Code-Struktur kann man eine Menge tun, um solche Sicherheitsl├╝cken unwahrscheinlicher zu machen. Zus├Ątzlich ist das schnelle, transparente aber auch gewissenhafte Reagieren bei Bekanntwerden einer solchen Sicherheitsl├╝cke enorm wichtig. Das hat in diesem Fall ganz gut ┬áfunktioniert, dennoch sehen wir Verbesserungspotenzial. Und ich bedanke mich im Namen von ganz Famedly auch bei den Beteiligten der anderen Firmen und Projekt.