Megas erster Krypto-Fauxpas

Ein eigentlich cleveres Konzept zum Nachladen von Code entpuppt sich als potentielle Hintertür, weil dabei ungeeignete Krypto-Funktionen zum Einsatz kommen. So könnten Dritte Teile des Mega-Codes manipulieren.

In Pocket speichern vorlesen Druckansicht 186 Kommentare lesen
Lesezeit: 2 Min.

Der Cloud-Speicherdienst Mega von Kim "Kimble" Dotcom setzt auf ein cleveres Konzept, den eigenen Code nachzuladen. Doch die Krypto-Funktionen, die dessen Integrität sicher stellen sollen, sind dazu völlig ungeeignet und lassen sich einfach austricksen, wie das Blog fail0verflow dokumentiert. Dieser Fauxpas lässt nichts gutes für den Rest der Krypto-Infrastruktur ahnen.

Die zentrale HTML-Datei des Mega-Servers enthält die Namen einer ganzen Reihe von JavaScript-Dateien wie 'base64_0.js' und 'crypto_0.js', die von externen Servern eines Content Distribution Networks (CDN) nachgeladen werden. Dabei zeigt etwa die derzeit genutzte URL https://eu.static.mega.co.nz/ unter anderem auf Server, die beim AfriNIC in Mauritius angesiedelt sind. Um sicher zu stellen, dass der nachgeladene Code auch tatsächlich unverändert ist, enthält die Steuerdatei zu jeder Datei eine Art Prüfsumme, die sie vor dem Ausführen des Codes checkt.

Dazu benutzt Mega statt etablierter Hash-Verfahren wie SHA256 den Krypto-Algorithmus CBC-MAC mit einem im JavaScript-Code fest einprogrammierten Schlüssel (111111, 222222, 333333, 444444). Jedoch findet sich schon in der Wikipedia-Beschreibung zu CBC-MAC der deutliche Hinweis, dass sich diese Message Authentication Codes sehr einfach fälschen lassen, wenn der verwendete Schlüssel bekannt ist. Das bedeutet konkret, dass jeder, der einen dieser CDN-Server kontrolliert – oder den Betreiber zur Mithilfe bewegen kann – den nachgeladenen Code ganz einfach manipulieren könnte, ohne dass dies einen Fehler hervorruft. Damit wäre dann die gesamte Mega-Infrastruktur kompromittiert und Anwender ließen sich beliebig ausspionieren. Das Blog fail0verflow stellt im Rahmen seiner Analyse Megafail eine einfache Demo bereit, mit der man selbst gültige JavaScript-Dateien erstellen kann, die gezielt den CBC-MAC einer zuvor hochgeladenen Mega-Datei produzieren.

Derartige Anfängerfehler beim Einsatz von Krypto-Funktionen werfen ein schlechtes Licht auf das Versprechen, die Daten der Anwender durch den Einsatz von lokaler Verschlüsselung im Browser zu schützen.

Mehr Informationen über Funktionsweise und mögliche Probleme des neuen Cloud-Speicher-Dienstes fasst ein Artikel auf heise Security zusammen:

(ju)