Die luca App

eine entschlüsselte Fehlersammlung - Kassel Edition

Wer spricht da eigentlich?

Level of Expertise

  • Betreuung digitale Kontaktnachverfolgung während dieser Pandemie
  • Arbeite an der Post-Fax-Ära im Gesundheitsamt Frankfurt und an Schnittstellen für viele andere Gesundheitsämter
  • Team LucaTrack
  • Project Lead IRIS connect

The exposure of the extent of Luca’s security problems – would not have been possible without this degree of openness and commitment [of the civil society]

Civil Liberties Union for Europe,
COVID-19 Contact Tracing Apps in the EU: Lessons From Germany

Was ist Luca eigentlich?

  • Eine digitale Gästelistenlösung auf Grundlage der CoronaVO, bei der verschlüsselte Kontaktdaten und Checkins von Nutzenden zentral bei Luca hinterlegt werden
  • Kontaktdaten werden für alle Gesundheitsämter gemeinsam asymmetrisch verschlüsselt
  • Checkin-Daten werden dann noch zusätzlich mit Location-Key asymmetrisch verschlüsselt
  • ein eher sehr spezielles «End-to-multiple-End-mit-Zwischenspeicherung-System»

80 Prozent der Arbeit bestehen im Schlüsselmanagement für die Gesundheitsämter, nur 20 Prozent entfallen auf die sichtbare App.

Patrick Hennig
Patrick Hennig: „Wir sind ohne Business-Modell gestartet“

Da sind auch wirklich Sicherheitslücken dabei!

Fehlersammlung

  • Offenlegung von Informationen
  • Nicht ganz so offene Offenlegung
  • API und fehlende Qualitätssicherung
  • Injektion von Schadcode

Offenlegung von Informationen

Offenlegung, Part 1: Scanner

  • März 2021: Scanner und aktuelle Belegung von Locations sind per URL mit UUID zugänglich
  • Beispiel für UUID a74bdxxx-xxxx-434c-a806-95b5fd3a879e
  • Problem: UUID ist gleich UUID des QR-Codes zum Checkin
  • Impact: alle Locations
Bild einer Kommandozeile mit Ausgabe von Locations

Offenlegung, Part 2: LucaTrack

  • April 2021: Bewegungsprofile aus Schlüsselanhängern auslesbar
  • Schlüsselanhänger ist gleich ein statischer QR Code mit statischen Credentials
  • Problem: Bei Abfrage der API mit diesen Credentials lässt sich die Location zu einer bestimmten Zeit abfragen
  • Impact: mehrere tausend Schlüsselanhänger

Nicht ganz so offene Offenlegung

  • April 2021: Bewegungsprofile aus Metadaten auslesbar
  • Beim Checkin sendet ein Client genügend Informationen (Device-Informationen, Traces), um dann über das System nachverfolgt werden zu können
  • Problem: Das geht über die letzten 20 Traces und lässt sich mit Telefonnummer korrelieren
  • Impact: Gesamtsystem

Nicht ganz so offene Offenlegung, Health Edition

  • April 2021: Infektionen von Usern aus Metadaten auslesbar
  • Bei der Abfrage von Usern werden in kurzer Reihe getrennte Requests nach User-ID der angefragten Person (= muss infiziert sein) und die Abfrage der Location gestellt. Dadurch existiert im Traffic eine Korrelation von User-IDs und Infektionsstatus.
  • Impact: Health Backend

API und fehlende Qualitätssicherung

API-Probleme…

  • Mai 2021: Daten auf Schlüsselanhängern sind von extern überschreibbar
  • Endpunkt zum Überschreiben von Kontaktdaten funktioniert auch für Schlüsselanhänger
  • Problem: Dadurch lassen sich auch Schlüsselanhänger beliebig überschreiben
  • Impact: mehrere tausend Schlüsselanhänger

… Qualitätssicherung as a service

  • Mai 2021: Daten auf Schlüsselanhängern gar nicht auslesbar
  • Verfahren zum Generieren von Badges passt gar nicht zum Verfahren zum Auslesen der Schlüsselanhänger
  • Problem: Dadurch lassen sich auch Schlüsselanhänger gar nicht auslesen
  • Impact: mehrere tausend Schlüsselanhänger

Injektion von Schadcode

Injektion von Schadcode: Teil 1

  • Mai 2021: Anfrage zur Möglichkeit von CSV-Injections
  • Mögliches Problem: In CSV-Daten aus Luca kann versucht werden, Code zur Ausführung in Excel einzuschleußen
  • Behauptung Hersteller: nicht möglich
Screenshot eines Ransomware-Angriffes via Luca Daten

Injektion von Schadcode: Teil 2

  • Mai 2021: Proof von CSV-Injections
  • CSV-Injection wird erfolgreich simuliert
  • Problem: Keine Inputvalidierung für viele Felder, daher kann Code fast problemlos durchgeschleust werden…
  • … also, vorausgesetzt, man ergänzt die Value um ein simples, um eine neue Zelle zu erzeugen, bei der die Sanitation fehlt
  • Impact: alle Gesundheitsämter

🤓: Hallo BSI, es gibt da ne CSV-Injection in Luca

🕵️: Wissen wir, haben wir schon angesehen vor ein paar Tagen

🤓: Ne, ne, die CSV-Injection ist von heute

🕵️: 🤨🤭

(Gedächtnisprotokoll einer Kommunikation mit dem BSI)

Screenshot eines erneuten Ransomware-Angriffes via Luca Daten

Injektion von Schadcode: Teil 3

  • Juni 2021: Proof von CSV-Injections (ja, wieder)
  • CSV-Injection wird erfolgreich simuliert, diesmal in veränderten Datenfeldern
  • Problem: es wurden veränderte Datenfelder angefügt, bei denen die Sanitation vergessen wurde