Die luca App
eine entschlüsselte Fehlersammlung - Kassel Edition
Wer spricht da eigentlich?
- Bianca
- sie / ihre
- @bkastl / @bkastl@mastodon.social
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
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
😠
Marcus Mengs
Temporary unable to retrieve badge history
… 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
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)
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