Unabhängiger Audit: Einblicke in den Quellcode von Boxcryptor
Boxcryptor wurde im Mai 2020 einem umfassenden, externen Audit durch die Sicherheitsfirma Kudelski unterzogen. Die Ergebnisse sind durchweg positiv. Kudelski konnte keine kritischen Schwachstellen finden und die wenigen Verbesserungsvorschläge wurden bereits umgesetzt. Im Folgenden geben wir einen Einblick in den Audit-Prozess und die Ergebnisse und zeigen, an welchen Stellen wir doch noch ein bisschen nachgebessert haben.
Mit Boxcryptor wird gewährleistet, dass niemand ohne Berechtigung Zugriff auf die eigenen Daten hat. Die Cloud-Anbieter und deren Personal, sowie potenzielle Hacker, werden zuverlässig ausgeschlossen. Für Privatnutzer und -Nutzerinnen ist Boxcryptor ein Mittel zur digitalen Selbstverteidigung gegen neugierige Dritte, für Unternehmen und Organisationen ein Weg zu echter DS-GVO-Konformität und vollständiger Kontrolle über die Geschäftsdaten. Bei einer Software, die so sicherheitsrelevant ist wie Boxcryptor, ist es verständlich, dass Nutzer und Nutzerinnen sich sicher sein wollen, dass die Software einwandfrei funktioniert und genau das tut, was sie soll.
Bei dem Audit erhielt die Firma Kudelski Zugriff auf den Quellcode von Boxcryptor für Windows (unserer meistgenutzten Anwendung) und auf unsere interne Dokumentation.
Alle diese Komponenten waren logisch korrekt und wiesen bei der Prüfung keine signifikanten Schwächen auf. Es ist wichtig, darauf hinzuweisen, dass die von uns geprüfte Codebasis keine Anzeichen für böswillige Absichten zeigte. (Boxcryptor-Code-Audit – Final Report)
Ziel des Audits war, allen Interessierten einen indirekten Einblick in die Software zu geben, sodass diese sich sicher sein können, dass keine Hintertüren oder Sicherheitslücken im Code zu finden sind.
Kudelski – Die Firma, die sich Boxcryptor genauer angesehen hat
Wir haben uns dafür entschieden, unseren Audit von Kudelski Security durchführen zu lassen. Die weltweit bekannte, Schweizer Sicherheitsfirma entwickelt selbst Sicherheitssoftware und hat schon viele große Unternehmen beraten und Software unter die Lupe genommen. Die Technologie- und Schwachstellen-Bewertung von Kudelski genießt in der Branche einen sehr guten Ruf.
In den Audits schaffen sich die unabhängigen Sicherheits-Experten von Kudelski zunächst einen Überblick über die Software-Architektur der zu testenden Technologie. Im zweiten Schritt arbeiten sie potenzielle Schwachstellen heraus, die es zu beheben gilt.
Welche Vorteile bringt ein Audit?
Die Frage nach einem Audit stand bei uns schon länger im Raum, doch immer wieder haben wir uns aus einer Vielzahl an Gründen dagegen entschieden. Unser größtes Problem mit einem Audit war immer, dass Audits auch nur eine Momentaufnahme der Software darstellen. Die Software wird immer weiterentwickelt, und mit dieser Weiterentwicklung können neue Probleme in die Software einfließen. Ein Audit ist keine Garantie dafür, dass eine Software auch wirklich sicher ist und dies wird auch von der Firma Kudelski im Report festgehalten:
Es ist wichtig zu beachten, dass, obwohl wir in unserer Analyse unser Bestes getan haben, kein Code-Audit per se eine Garantie für das Nichtvorhandensein von Schwachstellen ist. (Boxcryptor-Code-Audit – Final Report)
Unserer Meinung nach gilt dies übrigens auch für das Open-Source-Modell. Nur weil eine Software offen verfügbar ist, bedeutet das nicht, dass man sich darauf verlassen kann, dass automatisch jede Änderung von Sicherheitsexperten oder -expertinnen kritisch geprüft wird.
Eine wirkliche Sicherheitsanalyse von Open-Source-Software ist ebenfalls eher die Ausnahme, prinzipiell bleibt also das gleiche Problem bestehen. Da ein Audit finanziell auch nicht unerheblich zu Buche schlägt, stellte sich uns immer die Frage, ob der potenzielle Nutzen dem finanziellen Aufwand gerecht wird – das natürlich besonders in den ersten Jahren als Startup.
Welche Vorteile ein Audit für Nutzer und Nutzerinnen hat
Nachdem Boxcryptor mittlerweile über 9 Jahre auf dem Markt verfügbar ist und von hundertausenden Nutzern verwendet wird, haben wir uns dazu entschieden, einen Audit durchzuführen. Beispielsweise ist es gar nicht so wichtig, dass jede einzelne Version einer Software geprüft wird.
Vielmehr geht es darum, drei wesentliche Dinge einschätzen zu können:
- die Firma, die hinter der Software steckt
- die Qualität der Software im Allgemeinen
- den sicherheitsrelevanten Quellcode (der sich nicht ständig ändert)
Ein positiver Audit-Bericht hilft Nutzern und Nutzerinnen, sich dieser Qualität zu versichern. Außerdem zeigt er, unserer Ansicht nach, Folgendes.
Hier arbeiten Experten und Expertinnen
Das Team hinter Boxcryptor weiß, was es tut. Kryptografie ist komplex und um eine sichere Software zu schreiben, braucht es viel Fachwissen und Talent. Wenn verifizierte Experten Boxcryptor begutachten und es als sicher befinden, können Nutzer und Nutzerinnen unserer Verschlüsselungslösung davon ausgehen, dass gravierende Fehler und Sicherheitsprobleme auch in zukünftigen Versionen der Software unwahrscheinlich sind.
Sicherheit hat Priorität für das Boxcryptor-Team
Das größte Fachwissen hilft nichts, wenn der Aspekt der Sicherheit im Entwicklungsprozess nicht ausreichend berücksichtigt wird. Wenn die Person, die im Team mit dem Thema Sicherheit beauftragt wurde, beispielsweise den Code gar nicht zu Gesicht bekommt, kann es sein, dass selbst Firmen mit Verschlüsselungs-Ikonen im Team unsichere Produkte entwickeln.
Was draufsteht, ist auch tatsächlich drin
Schon immer haben wir unser Verschlüsselungsprotokoll sehr offen kommuniziert. Anhand unseres technischen Überblicks und der Veröffentlichung unseres Quelltexts für die Verschlüsselung auf GitHub lässt sich Boxcryptor konzeptuell beinahe nachbauen. Nichts desto trotz haben die meisten Nutzer und Nutzerinnen nicht die Zeit, diese Angaben selbst zu prüfen, indem sie ihre eigenen Dateien „von Hand“ entschlüsseln. Mit Kudelski hat ein bekannter, kompetenter und unabhängiger Partner diese Aufgabe übernommen und kann bestätigen, dass wir tatsächlich das tun, was wir versprechen.
Das Konzept von Boxcryptor ist sicher
Der Audit zeigt, dass unser kryptografisches Konzept sicher ist. Nutzerinnen und Nutzer können nach der unabhängigen Prüfung durch Kudelski noch beruhigter sein, da die Experten keine sicherheitskritischen Schwachstellen in Boxcryptor gefunden haben.
Insgesamt sind die verwendeten kryptographischen Primitive und die Architektur des Systems angemessen, um die uns vorgestellten Sicherheitsziele zu erreichen. (Boxcryptor-Code-Audit – Final Report)
Auch in Zukunft kann der Lösung guten Gewissens Vertrauen entgegengebracht werden
Natürlich kann auch während eines Audits eine Schwachstelle übersehen werden. Doch es ist sehr unwahrscheinlich, dass größere Probleme vorhanden sind, aber nicht erkannt wurden. Wir waren immer davon überzeugt, dass wir in der Vergangenheit mit Boxcryptor gute und verlässliche Arbeit abgeliefert haben. Das Ergebnis des Audits bestätigt uns in dieser Annahme und sie können dies auch in Zukunft von uns erwarten.
Was wir uns außerdem vom Audit versprochen haben
Der Blick von außen
Wie bereits erwähnt, hat Sicherheit schon immer höchsten Stellenwert in unserer Software und wir legen jederzeit großes Augenmerk auf Sicherheitsfragen. Trotzdem sehen wir Boxcryptor natürlich nur aus unserer Perspektive und riskieren damit prinzipiell eine gewisse Betriebsblindheit. Allein aus diesem Grund war es sinnvoll, einer externen Firma Einblick in den Code zu geben, die uns gegebenenfalls auf Problemfelder hinweist.
Verifikation des Secure Software Development Lifecycle
Ein Punkt, der uns wichtig war, war die Verifikation unseres Secure Software Development Lifecycle (SSDL). Wir haben einen festgelegten Prozess, mit dem wir unsere Software vor, während und nach der Entwicklung auf Sicherheit testen. Dieser SSDL hat unter anderem zum Ziel, möglichst alle Problemstellen, sicherheitsrelevante Szenarien und Angriffsmöglichkeiten zu identifizieren. Der externe Audit durch Kudelski hat uns nun ermöglicht, diesen Prozess mit den gefundenen Problemen abzugleichen. Folgende Fragen können wir uns bei Problemen stellen: Von welcher Art sind die Probleme? Hätten wir sie prinzipiell mit unserem SSDL-Prozess finden können? Deckt der Bericht einen ganzen Bereich auf, den wir nicht bedacht haben? Warum wurden die Probleme, die gefunden wurden, nicht schon vorher von uns entdeckt?
Durch den Audit hätten wir Input erhalten können, der uns ermöglicht hätte, unseren SSDL anzupassen und zu verbessern. Erfreulicherweise hat sich unser SSDL bewährt, sodass keine Änderungen am Prozess notwendig waren. Trotzdem haben wir hier und dort eine neue Denkrichtung für die Schwachstellensuche mitnehmen können.
Ein angenehmer Nebeneffekt: Verbesserung der internen Dokumentation
Im Zuge des Audits haben wir die komplette interne Dokumentation überarbeitet, so dass die Audit-Firma sich gut zurechtfindet. Das gab unseren internen Dokumenten nochmal einen Feinschliff. Als Resultat haben wir nun eine Dokumentation, die auch für neue Mitarbeiter und Mitarbeiterinnen der Firma leicht verständlich, gut strukturiert und übersichtlich an einem Ort zu finden ist.
So wurde der Audit durchgeführt
Erster Schritt: Zielsetzung und Threat-Modell
Zu Beginn des Audits haben wir die Ziele des Audits, das Threat-Modell vor dem Boxcryptor schützen soll, und die relevanten Code-Sektionen besprochen und festgelegt. Wir mussten uns zuerst einmal im Klaren sein, was überhaupt geprüft werden soll und von welchem Angreifer wir ausgehen, zum Beispiel, sollen Boxcryptor-Mitarbeiter auch als potentielle Angreifer berücksichtigt werden? Möchten wir uns auch gegen theoretische Angriffe von Seiten der Cloud-Anbieter schützen? In beiden Fällen war die Antwort bei unserem Audit: Ja. In diesem ersten Schritt der Zielsetzung erhielt die Audit-Firma Zugriff auf unsere externe und interne Dokumentation, den Source-Code sowie ein Intro in denselben.
Zweiter Schritt: Der Audit
Kudelski startete den Audit-Prozess Anfang Mai mit jederzeit kurzen Kommunikationswegen zu den Verantwortlichen im Boxcryptor-Team. Schnell merkten wir, wie routiniert Kudelski arbeitet, da sie sich ohne längere Einarbeitung gut in unserem – für sie fremden – Code zurechtgefunden haben. Das war für uns angenehm, da der Aufwand für die den Audit betreuenden Entwickler erstaunlich gering war. Dies ist natürlich sehr relevant für uns, denn zu den Kosten für einen Audit muss man immer die Kosten bedenken, die durch das Wegfallen der Arbeitszeit der Mitarbeiter und Mitarbeiterinnen entstehen, wenn diese rund um die Uhr von der Audit-Firma beansprucht werden würden.
Wichtig: Hätte Kudelski eine schwere Sicherheitslücke gefunden, hätten sie diese nicht bis zum Abschlussbericht zurückgehalten, sondern das Problem sofort gemeldet. Dadurch war uns klar, dass auch Kudelski die Priorität an derselben Stelle setzt wie Boxcryptor und unsere Nutzerinnen und Nutzer: Die Sicherheit der verschlüsselten Daten hat zu jeder Zeit Priorität.
In unserem Fall umfasste der Audit zwei Teile. Denn wir wollte nicht nur unsere Software und deren Code verifizieren lassen. Zusätzlich wollten wir unser Boxcryptor-Protokoll einem Audit unterziehen (welches Sie übrigens in unserem technischen Überblick jederzeit einsehen können). Denn ein Gebäude kann nur so stabil sein, wie es entworfen wurde und wir wollten sichergehen, dass unser Protokoll, das Fundament von Boxcryptor, stabil ist.
Dritter Schritt: Zweiteilige Besprechung der Ergebnisse
Sobald Kudelski mit dem Audit fertig war, wurde ein Vorab-Bericht erstellt. Anhand diesem werden die gefundenen Probleme diskutiert und wir hatten die Chance, sie zu fixen. Im Anschluss überprüfte Kudelski die getroffenen Maßnahmen erneut und stellte einen finalen Report zusammen.
Die Ergebnisse des Boxcryptor-Audits
Im Folgenden fassen wir die Ergebnisse und deren Auslegung und Einschätzung kurz für Sie zusammen. Den gesamten Auditbericht können Sie hier einsehen.
Insgesamt gab es wenig Überraschungen. Es gab keine kritische und nur eine mit „mittel“ bewertete Schwachstelle. Diese betraf die Software und nicht die zugrunde liegende Verschlüsselungstechnik. Die Probleme konnten daher schnell gefixt werden und wir sind mit dem Ergebnis durch und durch zufrieden.
Folgende Probleme wurde im Audit gefunden:
- Ein als „mittel“ bewertetes Problem
- 2 als „niedrig“ eingestufte Probleme
- 6 als Hinweis zu verstehende „Beobachtungen“
1. WebDAV-Verbindung zu Cloud-Anbietern
Einstufung: „mittel“
Beschreibung: Bei dem als mittel bewerteten Problem handelt es sich um eine Codestelle, die die Verbindung zu Cloud-Anbietern betrifft, die mit dem WebDAV Protokoll arbeiten. Theoretisch hätten die Betreiber solcher Cloud-Speicheranbieter versuchen können, Code in die Boxcryptor für Windows-App einzuschleusen. In der Praxis wurde diese Codestelle jedoch niemals von Boxcryptor benutzt, dadurch bestand zu keinem Zeitpunkt Gefahr für Boxcryptor-Nutzer.
Lösung: Als Reaktion auf den Audit haben wir diese unbenötigte Codestelle nun vollständig entfernt.
2. Das Nutzerpasswort
Einstufung: „niedrig“
Beschreibung: Das für uns interessanteste, als „niedrig“ bewertete Problem betraf Boxcryptors Behandlung des Nutzerpassworts. Boxcryptor nutzt mehrfaches Passwort-Hashing, um Nutzern und Nutzerinnen auch dann die größtmögliche Sicherheit zu bieten, wenn sie ein eigentlich unsicheres Passwort verwenden. Bei diesem Verfahren wird das Passwort mit für jeden Nutzer individuellen Bytes verknüpft, und anschließend mehrmals „gehasht“.
Ein Hash ist dabei eine Art „Fingerabdruck“ des Passworts, der nicht in das Passwort zurückgerechnet werden kann. Die zufälligen Daten dienen dem Zweck, dass zwei Nutzer mit gleichem Passwort trotzdem unterschiedliche Fingerabdrücke erzeugen.
Dieser Vorgang hat zwei Ziele: Durch das Hashen des Passworts vor dem Übertragen wird das Nutzerpasswort niemals an den Server geschickt (selbstverständlich hashen wir diesen Fingerabdruck auch ein zweites Mal nach dem Übertragen). Durch das mehrfache Hashen verringern wir außerdem die Passwörter, die ein Angreifer beim Ausprobieren in einer bestimmten Zeit testen kann: Denn das Erzeugen derart vieler Fingerabdrücke kostet Zeit, und das verlangsamt den Angreifer. Immerhin muss er diese Berechnung für jeden Versuch neu ausführen.
Die Anzahl der Hash-Durchgänge lag bei 5.000, während wir an anderen Stellen eine Anzahl von 10.000 Hashes verwenden. Von Kudelski wurde sowohl bemängelt, dass wir hier „unter unserem Standard“ blieben, als auch, dass sie generell 100.000 Durchgänge empfehlen würden. Zusätzlich empfahl Kudelski, die Passwörter der Nutzerinnen und Nutzer bei der Wahl kritischer zu betrachten und, beispielsweise, zu kurze Passwörter nicht zu akzeptieren.
Lösung: Wenn Sie als Boxcryptor-Nutzer oder -Nutzerin ein sicheres Passwort gewählt haben, betrifft Sie dieses Problem nicht. Für diejenigen, die ein unsicheres Passwort gewählt haben, haben wir die Iterationszahl des Hashes auf 10.000 hochgesetzt. Ein Erhöhen der Anzahl auf 100.000 hätte langsame Geräte oder alte Browser zu stark ausgebremst, so dass wir uns entschieden haben, die Anzahl bei 10.000 zu belassen. Ab sofort gilt außerdem eine Mindestpasswortlänge für neu erstellte Passwörter.
3. Einlesen der Boxcryptor-Konfiguration
Einstufung: „niedrig“
Beschreibung: Das zweite als niedrig bewertete Problem betraf das Einlesen der Boxcryptor-Konfiguration. Ein Angreifer, der Schreibzugriff auf die Konfigurationsdateien gehabt hätte, hätte versuchen können, dort Code einzuschleusen. Dieses Problem war jedoch rein theoretischer Natur, da zum Ausnutzen dieser Lücke weitere Randbedingungen erfüllt sein müssten, die in der aktuellen Boxcryptor-Version nicht gegeben waren. Eine tatsächliche Sicherheitslücke hätte dadurch allerdings in zukünftigen Versionen entstehen können, so dass diese Beobachtung vermerkt wurde.
Lösung: Wir haben die entsprechende Code-Stelle angepasst, sodass auch in Zukunft keine Sicherheitslücke entstehen kann.
4. Änderungen von Dateien sind dem Cloud-Anbieter bekannt
Einstufung: „Beobachtung“
Beschreibung: Die für uns interessanteste Beobachtung war, dass Boxcryptor dem Cloud-Speicheranbieter nicht „verheimlicht“, welche Dateien vom Nutzer gerade geändert wurden. Wird eine Datei vom Nutzer geändert, verschlüsselt Boxcryptor sie und updatet sie im Ordner des Cloud-Anbieters. Durch die Zugriffsmuster könnte der Cloud-Anbieter nun Rückschlüsse auf die Datei ziehen. z.B. um welchen Dateityp es sich handelt.
Lösung: Eine praktische Lösung, um dies zu vermeiden, gibt es derzeit nicht. Akademische Lösungen für dieses Problem gibt es zwar, aber diese sind nicht so einfach und ohne Nebeneffekte umzusetzen. Aus diesem Grund halten wir uns in diesem Fall an Kudelskis Empfehlung: Die Fortschritte der Forschung in diesem Bereich im Auge zu behalten und sobald möglich Boxcryptor gegebenenfalls entsprechend anzupassen.
Die übrigen Beobachtungen lassen sich in zwei Kategorien zusammenfassen: Code, der nicht benutzt wurde und den wir im Anschluss entfernt haben, und irreführende Namensgebung von Code-Konstrukten. Letztere sind an sich kein Problem, könnten aber von Entwicklern und Entwicklerinnen in der Zukunft falsch interpretiert werden und dann unsicher verwendet werden. Dieses Risiko haben wir durch Umbenennung oder Dokumentation der Codestelle verringert.
Fazit
Wir freuen uns über die Verifizierung der Qualität der Software und haben die kleinen Verbesserungsvorschläge von Kudelski dankend angenommen. Es war eine tolle Gelegenheit, einen Blick von außen auf Boxcryptor zu erhalten. Wir hoffen, dass der Audit und seine Ergebnisse Sie ebenfalls darin bestätigen, mit Boxcryptor die richtige Wahl für den Schutz Ihrer Daten getroffen zu haben.