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.

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.