Eine Bemerkung vorneweg: Wir sind grundsätzlich der Meinung, dass Sicherheitslücken in Webseiten Tage oder Wochen vor der Publikation dem Betreiber zu melden sind, um ihm Gelegenheit zu geben die Probleme zu lösen. Im Kontext der hier besprochenen Webseite handelt es sich allerdings um keine konkrete Lücke, das Data Leakage-Problem wurde bereits entschärft und es gab bereits vor einigen Tagen eine öffentliche Diskussion auf Twitter dazu (eine allfällige Katze ist also bereits aus dem Sack).
Entwickler und Anbieter von IT-Anwendungen rund um Corona haben es momentan beim besten Willen nicht leicht:
- Der Zeitdruck zum Erstellen von Web-Applikationen für Contact Tracing, Impfanmeldungen etc. usw. ist hoch, entsprechend wenig Zeit bleibt da oft um grundlegende Konzepte zu verifizieren
- Ebenfalls hoch sind die Datenschutz-Anforderungen, zum Beispiel weil die Applikation technologisch und von den Algorithmen her praktisch eine Überwachungsapplikation ist, oder weil vom Datenschutzgesetz als besonders schützenswert klassifizierte Gesundheitsdaten verarbeitet werden
- Und schlussendlich trifft die Applikation auf tausende von neugierigen Augen welche sich gerne im Detail anschauen wie das ganze funktioniert und wo allenfalls Dinge unter der Oberfläche nicht ganz so glanzvoll sind wie es auf den ersten Blick den Anschein macht.
Für Impfanmeldungen sind in der Schweiz verschiedene Lösungen im Einsatz. Einige Kantone haben sich zusammengeschlossen (oder nach Fehlstarts mit der Eigenentwicklung die Lösung eines anderen andere übernommen), andere sind mit einer eigenen Lösung am Start. Darunter auch der Kanton St. Gallen, dessen Bewohner:innen sich unter wir-impfen.ch für eine Corona-Impfung anmelden können. Verantwortlich für die Webseite ist gemäss Impressum die Klinik für Infektiologie des Kantonsspitals St. Gallen, kann man also davon ausgehen, dass hier jemand am Werk war der mit dem sorgfältigen Umgang mit Gesundheitsdaten vertraut ist?
Seitenzugriffe
Schauen wir uns die Plattform mal näher an. Ein erster Test bezüglich verwendeter Protokolle sieht vielversprechend aus.
Da hat der Anbieter erfreulicherweise seine Hausaufgaben gemacht und auf dem Webserver nicht nur die veralteten und angreifbaren TLS-Versionen 1.0 und 1.1 abgeschaltet sondern auch die Unterstützung von TLS 1.3 eingebaut. Der Datenaustausch zwischen dem eigenen Browser und der Plattform an sich ist dadurch hinreichend abgesichert. Ein Blick in den Datenverkehr welcher beim Aufruf der Einstiegsseite entsteht, zeigt aber, dass neben dem Zugriff auf wir-impfen.ch auch noch weitere Webseiten im Spiel sind.
Da dürfte man zu Recht erwarten, dass die Plattform ihr möglichstes tut um hier allfälligen Missbrauch durch umgeleitete Zugriffe auf Drittseiten zu vermeiden. Warum, mag jetzt der eine oder die andere fragen, der Zugriff auf wir-impfen.ch ist doch geschützt und verschlüsselt? Der Clou an der Sache ist, dass nicht sämtliche Inhalte von dieser Seite selber kommen, Teile werden auch von unpkg.com und cdn-jsdelivr.net nachgeladen. Das ist in Webapplikationen durchaus üblich, genauso üblich (oder zumindest best practice) ist es dann aber auch, die entsprechenden Mechanismen im Browser zu aktivieren um sicherzustellen, dass bei diesem Nachladen nur auf Seiten zugegriffen wird welche der Seitenanbieter (also wir-impfen.ch) vorher definiert hat. Und da sieht es dann, sagen wir mal, etwas durchzogen aus.
Weder Content Security Policy noch Subresource Integrity sind aktiviert, beides Mechanism die beim Nachladen von Seiteninhalten von Drittanbietern dafür sorgen würden, dass nur vorab definierte Drittanbieter und Inhalte berücksichtigt werden. Immerhin kann man positiv vermerken, dass in den letzten Tagen bereits Verbesserungen vorgenommen wurden, sah doch das Rating letzte Woche noch deutlich schlechter aus.
Bleibt zu hoffen, dass es die Betreiber schaffen, in den nächsten Tagen auch die noch fehlenden Punkte anzupacken und zu verbessern.
Datenschutz
Soweit zu den Seiteninhalten an sich. Wie sieht es nun mit den Daten aus? Kann Lisa Fischer beim Registrieren ihres Impfwunschs und beim Reservieren ihres Impfslots davon ausgehen, dass dies vertraulich behandelt wird? Der Entscheid darüber, ob schon eine Anmeldung für eine Impfung ein besonders schützenswertes Datenelement ist, überlassen wir gerne den Juristen, eng betrachtet vermutlich eher nicht. Trotzdem ist Lisa Fischer vielleicht nicht daran interessiert, den Zeitpunkt ihrer Anmeldung oder ihre Impfgruppenzugehörigkeit mit anderen zu teilen.
Was sich von aussen nicht untersuchen lässt, ist die Sicherheit der Applikation an sich. Beobachtbar ist allerdings der Internet-Verkehr welcher Lisa Fischers Browser beim Benutzen von wir-impfen.ch auslöst, und der hat es in sich.
Es fallen zwei Dinge auf
- Es werden Inhalte von Drittseiten nachgeladen (das kennen wir schon)
- Beim blau hinterlegten Aufruf wird (im rot überdeckten Teil) der Name der eingeloggten Person (in unserem Fall also Lisa Fischer) mit-übermittelt
Nun kann man sich durchaus generell fragen, inwieweit es bei Webapplikationen im Gesundheitsbereich sinnvoll ist, Inhalte von Drittseiten nachzuladen. Selbst bei noch so rigiden Datenschutzvorkehrungen wird rein technisch bedingt jedesmal die IP-Adresse der Benutzerin Lisa Fischer an den Drittanbieter übermittelt, ein Datenelement welcher dieser rein grundsätzlich auswerten und nutzen kann. Eine einzelne IP-Adresse alleine ist im Allgemeinen nicht sonderlich “spannend”. Verbunden mit dem Zeitstempel des jeweiligen Zugriffs und der Vermutung, dass sich Lisa Fischer nach der Registrierung erst wieder einloggt wenn sie ihren Impftermin buchen kann, lässt sich damit aber zumindest relativ gut schliessen, zu welcher Impfgruppe die Inhaberin der IP-Adresse gehört.
Ohne weitere Details reicht die IP-Adresse alleine nicht aus, um deren aktueller Nutzer zu bestimmen und zum Namen “Lisa Fischer” zu gelangen. Genau diese Information übermittelt die im Bild blau unterlegte URL allerdings an die Drittseite ui-avatars.com. In voller Länge lautet die URL hier
https://ui-avatars.com/api/?name=Lisa%20Fischer&color=7F9CF5&background=EBF4FF
damit ist der Name der Benutzerin definitiv kein Geheimniss mehr.
Wenn man sich überlegt, dass die Funktion dieses Aufrufs nur darin besteht, ein aus den Initialien bestehendes Icon zu generieren (was sich durch Klicken auf obigen Link leicht verifizieren lässt), dann scheint hier die Bequemlichkeit der Entwickler grösser gewesen zu sein als das Verständnis von Datenschutz. Die in den Datenschutzbestimmungen gemachte Aussage “Die in wir-impfen.ch erfassten Daten werden […] gegen unbefugte Kenntnisnahme Dritter wirksam geschützt.” wurde da jedenfalls klar verletzt.
Immerhin haben die Betreiber in den letzten Tagen reagiert und lassen neu das Icon nur noch aus dem ersten Buchstaben des Vornamens generieren (https://ui-avatars.com/api/?name=L&color=7F9CF5&background=EBF4FF). Noch besser wäre natürlich gewesen, die Initialen mittels JavaScript und/oder CSS direkt auf der Seite zu generieren ohne überhaupt auf einen Drittanbieter zuzugreifen. Denn auch wenn ui-avatars auf ihrer Webseite zum Thema Datenschutz “No data is being stored on our serveres. Monitoring & logging is entirely disabled.” schreibt: Wie kann überprüft werden, dass dies korrekt ist? Wer kann mit Sicherheit sagen, dass dies auch in den nächsten Monaten so bleiben wird?
Zusammenfassung
Vorneweg: Fehler passieren, gerade wenn es eilt, und das positive an der Sache ist, dass die Betreiber aktiv daran arbeiten, Schwachstellen zu beheben und Risiken zu reduzieren. Und auch wenn es “nur” um Impfterminbuchungen geht und nicht um Impfdaten oder -nachweise, bleiben doch einige Punkte offen welche mehr Beachtung verdienen würden:
- Eine Webseite ist so sicher wie ihr schwächstes Glied. Gerade bei der Einbindung externer Inhalte hat der Anbieter dafür zu sorgen, dass diese nicht zum Einfallstor für Angriffe werden. Die Mechanismen dazu sind im Web vorhanden und ihr Einsatz gut genug dokumentiert, dass eine Nicht-Verwendung an Leichtsinn oder Nachlässigkeit grenzt
- Ob es für eine Web-Applikation im Gesundheitsbereich überhaupt angebracht ist, Inhalte von Drittanbietern einzubinden anstelle diese direkt in die Seite zu integrieren, ist zumindest fraglich.
- Oft sind es, wie im obigen Beispiel der Aufruf von ui-avatars zur Generierung eines Initialen-Logos, Kleinigkeiten welche zu Data Leakage führen können. Man kann allen Entwicklern von Web-Applikationen nur immer wieder in Erinnerung rufen, dass auch kleine Web-Abfragen oft unerwartete Nebeneffekte haben, und dass eine Analyse des generierten Netzwerk-Verkehrs aus Datenschutz- und Sicherheits-Überlegungen zum Handwerk gehört.
Eine Antwort
M.E. müssten auch die DNS von wir-impfen.ch auf DNSSEC gestellt werden. Totale Sicherheit gibt es nicht und wird es auch nie geben. Trotzdem müssen doch alle möglichen Türen gesichert und geschlossen sein.