Datum
September 24, 2026
Typ
Audit

Unabhängige Quellcode-Analyse durch secuvera

Von September bis November 2025 hat die secuvera GmbH eine statische Quellcode-Analyse unseres gesamten Monorepos durchgeführt. secuvera ist vom BSI zertifizierter IT-Sicherheitsdienstleister und anerkannte Prüfstelle für IT-Sicherheit.

Die Prüfung ergab drei Schwachstellen mittlerer Schwere und zwei Hinweise ohne direktes Risiko. Kritische oder hohe Schwachstellen wurden nicht gefunden. Wir haben alle drei Schwachstellen behoben und im September 2026 nachtesten lassen.

Das Ergebnis des Nachtests: Keine der Schwachstellen ist im geprüften Quellcode noch vorhanden. secuvera attestiert dem Quellcode ein sehr hohes Sicherheitsniveau, die höchste Stufe im verwendeten Bewertungsschema.

Wir veröffentlichen den vollständigen Bericht und beschreiben im Folgenden jede einzelne Schwachstelle, was sie bedeutet hat und was wir geändert haben.

Was genau geprüft wurde

Damit Sie das Ergebnis richtig einordnen können, hier der Prüfumfang im Klartext:

  • Verfahren: Statische Quellcode-Analyse im White-Box-Verfahren. Die Prüfer hatten vollständigen Zugriff auf unseren Quellcode. Geprüft wurde also der Code selbst, nicht die laufende Produktivumgebung.
  • Werkzeuge: Automatisierte Analyse mit Coverity und Semgrep Code, anschließend manuelle Verifikation aller Ergebnisse. Zusätzlich manuelle Tests zur Identifikation von Schwächen im Quellcode.
  • Umfang: Das gesamte Monorepo mit allen Anwendungen. Im Fokus standen mit höchster Priorität das Backend, der Client-Kern und unsere Krypto-Bibliothek, danach Browser-Erweiterung, Web-Client, Container- und Infrastrukturkonfiguration, zuletzt die Apps für Android und iOS.
  • Angewandte Standards: Durchführungskonzept für Penetrationstests des BSI, OWASP Top 10 (2021), CVSS v4.0.
  • Nachtest: Anfang September 2026 wurden alle identifizierten Schwachstellen manuell nachgeprüft.

Im Mapping auf die OWASP Top 10 wurden alle zehn Kategorien mit "Pass" bewertet.

Die drei Befunde und was wir geändert haben

Hartkodierte Zugangsdaten (mittel, CVSS 5,1)

Was gefunden wurde: Zugangsdaten für interne Betriebs- und Entwicklungswerkzeuge waren direkt in Konfigurationsdateien hinterlegt statt über Umgebungsvariablen bereitgestellt zu werden. Ein Angreifer benötigt Zugriff auf den Quellcode, um sie überhaupt zu sehen, was secuvera in der Bewertung berücksichtigt hat (Metrik "Privileges Required: High"). Schlüssel, mit denen sich Kundendaten entschlüsseln ließen, waren nicht darunter und können es architektonisch auch nicht sein: Durch unsere Zero-Knowledge-Architektur liegen diese Schlüssel ausschließlich auf Ihren Geräten und nie auf unseren Servern.

Was wir geändert haben: Alle betroffenen Zugangsdaten wurden rotiert, die zuvor im Code enthaltenen Werte sind damit wertlos. Produktive Zugangsdaten werden heute beim Deployment in die jeweilige Umgebung injiziert statt im Repository zu liegen. Dort verbleiben ausschließlich Zugangsdaten für lokale Test- und Entwicklungsumgebungen, die keinen Zugriff auf produktive Systeme ermöglichen.

CORS-Fehlkonfiguration (mittel, CVSS 6,9)

Was gefunden wurde: Die heylogin Browser-Erweiterung kommuniziert über die Browser-Funktion postMessage() mit einem Overlay, das wir in die besuchte Webseite einfügen, etwa um Zugangsdaten auszufüllen. Dabei wurde ein Platzhalter statt einer konkreten Zielangabe verwendet, sodass die Nachrichten an einen breiteren Kontext gingen als notwendig und grundsätzlich auch die umgebende Webseite sie mitlesen konnte. Laut Bericht ging es um Fingerprinting der Erweiterung sowie um Client-Parameter und Anwendungszustand, nicht um die Freigabe unserer Server-Schnittstellen.

Was wir geändert haben: Der Platzhalter wurde durch eine konkrete Zielangabe ersetzt, Nachrichten gehen damit nur noch an den dafür vorgesehenen Kontext. Eine Lint-Regel verhindert den Einsatz des Platzhalters bei künftigen Änderungen automatisch.

Schwache Keychain-Konfiguration unter iOS (mittel, CVSS 5,3)

Was gefunden wurde: Die iOS-App speicherte sensible Daten in der iOS-Keychain mit der Zugriffsstufe kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly. Dabei bleiben die Daten nach der ersten Entsperrung bis zum nächsten Neustart im Gerätespeicher zugänglich, auch wenn das Gerät zwischenzeitlich wieder gesperrt wird. Ein Angriff setzt physischen Zugriff auf das Gerät und zusätzlich einen Jailbreak voraus, weshalb secuvera die Angriffskomplexität als hoch bewertet.

Was wir geändert haben: Diese Änderung war die aufwendigste der drei und der Grund dafür, dass zwischen Bericht und Nachtest längere Zeit vergangen ist.

Bei heylogin gibt es kryptografische Operationen, die zwingend auf den Endgeräten von Admins ausgeführt werden müssen, weil wir als Betreiber die dafür nötigen Schlüssel nicht besitzen und ausschließlich auf der Clientseite entschlüsselt wird. Ein Beispiel: Wird jemand neu in eine Organisation eingeladen, führt ein Admin-Gerät im Hintergrund eine kryptografische Operation aus, damit die eingeladene Person Zugriff auf die für sie freigegebenen Logins erhält. Solche Operationen konnten bisher auch bei gesperrtem Gerät starten.

Mit der Umstellung der betroffenen Keychain-Einträge auf kSecAttrAccessibleWhenUnlockedThisDeviceOnly war das nicht mehr möglich. Wir mussten die Anwendung deshalb zunächst grundlegend umbauen, damit diese Operationen zuverlässig nachgeholt werden, sobald ein Admin-Gerät wieder entsperrt ist. Anschließend haben wir die Änderung in einer internen Beta ausgerollt und getestet und danach in einer offenen Beta, um zu prüfen, ob alle Abläufe weiterhin so funktionieren wie zuvor. Diesen Schritt haben wir bewusst nicht abgekürzt, weil zentrale Funktionen von heylogin von diesen Hintergrundoperationen abhängen.

Für einzelne Operationen, die tatsächlich Hintergrundzugriff benötigen, setzen wir weiterhin bewusst kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly ein, die Zugriffsstufe richtet sich also nach dem Schutzbedarf des Eintrags. Die Operationen benötigen dadurch mehr Zeit bis zur Ausführung. Wir halten das für vertretbar, weil die Schlüssel nur noch zugänglich sind, solange das Gerät tatsächlich entsperrt ist.

Zwei Hinweise ohne direktes Risiko

Neben den Schwachstellen hat secuvera zwei informative Hinweise vergeben. Diese stellen laut Bericht kein direktes Risiko dar und fließen nicht in die Bewertung des Sicherheitsniveaus ein. Sie waren nicht Teil des Nachtests. Wir ordnen sie trotzdem offen ein:

  • Härtung der Container-Konfiguration. Laut Bericht liefen Prozesse in mehreren Containern mit Root-Rechten, und die verfügbaren Linux-Capabilities waren nicht eingeschränkt. Das führt laut secuvera nicht zu einer Schwachstelle, ist aber Härtungspotenzial. Wir haben unsere Container inzwischen nach gängigen Methoden gehärtet. Insbesondere ist in allen Containern ein dedizierter Nutzer hinterlegt, sodass die Prozesse nicht mehr mit Root-Rechten laufen. Da die Hinweise nicht Teil des Nachtests waren, ist diese Änderung von secuvera nicht gegengeprüft.
  • Kein TLS Certificate Pinning. Unsere Anwendungen prüfen Server-Zertifikate nicht zusätzlich gegen eine fest hinterlegte Liste. secuvera hat diesen Punkt im Verlauf der Prüfung selbst von einer Schwachstelle zu einem Hinweis herabgestuft und verweist dabei auf die Empfehlung des OWASP Pinning Cheat Sheet, das von Certificate Pinning abrät, weil das Ausfallrisiko den Sicherheitsgewinn in der Regel überwiegt. Wir teilen diese Einschätzung und setzen bewusst kein Pinning ein. Der Schutz Ihrer Daten hängt bei heylogin ohnehin nicht allein am Transportweg: Tresorinhalte sind Ende-zu-Ende verschlüsselt und damit auch dann geschützt, wenn die Transportverschlüsselung kompromittiert wäre.

Volle Transparenz

Wir veröffentlichen die Dokumente, damit Sie sich selbst ein Bild machen können:

Der Bericht enthält die vollständige Beschreibung aller Befunde inklusive Bewertung nach CVSS. Komponenten- und Pfadangaben sind in der öffentlichen Fassung anonymisiert.

Timeline

  • 10. bis 19.09.2025: Durchführung der statischen Quellcode-Analyse durch secuvera.
  • 17.11.2025: Abschlussbericht mit drei Schwachstellen mittlerer Schwere und zwei Hinweisen liegt vor.
  • Januar bis Juni 2026: Behebung aller drei Schwachstellen.
  • bis Ende August 2026: Ausrollen der Änderungen in allen Komponenten: Browser-Erweiterungen für alle unterstützten Browser, iOS-App und Web-Anwendung.
  • 3. bis 4.09.2026: Nachtest durch secuvera, alle Schwachstellen bestätigt behoben.
  • 10.09.2026: Finaler Bericht und Testat liegen vor.
  • 24.09.2026: Veröffentlichung dieses Reports.