Kurz vor Weihnachten 2021 wurde bekannt, dass in St. Gallen über 8’000 Covid-Zertifikate gelöscht bzw. widerrufen werden mussten, da ein privates Testzentrum diese illegal ausgestellt wurden; einen ähnlichen Fall gab es im kantonalen Impfzentrum in Schaffhausen. Dies löst zu Recht Empörung und Fragen aus: Wie kann das passieren?
Recherchen des Tagesanzeiger (Paywall) haben gezeigt, das in der Schweiz 11’000 Personen Zugang zum Management UI des Bundes haben und dort gültige Covid-Zertifikate erstellen können. Diese Personen seien Angestellte von Impf- oder Testzentren aber auch Apotheker und Ärzte. Die Staatsanwaltschaft ermittelt in fast sämtlichen Kantonen gegen Personen, die entweder selber Zertifikate fälschlicherweise ausstellen oder ihren Zugang weiterverkauft haben.
Wie die Tagesschau am letzten Freitag in der Hauptausgabe berichtet, kritisieren die Kantone den Bund, dass sie ihren Pflichten über die Kontrolle der Aussteller (Art. 6 Abs. 5 Covid-19-Verordnung Zertifikate; SR 818.102.2) nicht nachkommen können und das der Bund sein Plattform anpassen muss.
Der Kanton AG schreibt in dem veröffentlichen Mail u.a.:
Die Kritik der SRF Rundschau vom 22.12.2021 am Zertifikatssystem, der Untätigkeit des BAG und die Kritik an den Äusserungen bezüglich Priorisierung von Patrick Mathys im Interview habe ich bereits kurz nach der Sendung aus der Sicht des Product Owners eines agilen SW-Entwicklungsteams kommentiert. Der Thread beschreibt grob, wie Dinge in der IT-Entwicklung priorisiert werden und wie dieses Vorgehen dazu führen kann, dass das BAG das Thema Autorisierung und Nachvollziehbarkeit bisher nicht priorisiert hat.
Ich kann mir lebhaft die Priorisierungssitzung vorstellen: auf einer Seite die Kantone welche die Kontrolle verbessern wollen und auf der anderen Seite der Bund welcher dringend neue Verordnungsänderungen implementieren muss, in der Mitte das Entwicklungsteam dessen Kapazität limitiert ist.
So sehr die Kritik nachvollziehbar ist: die Kantone machen es sich zu leicht. Das Covid System des BIT ist nicht perfekt aber so schlecht ist es nicht, wie es dargestellt wird. Die Kantone könnten mehr machen. Warum das so ist, zeigt der folgende Artikel.
Um was geht es?
Eine Kette ist nur so stark wie ihr schwächstes Glied. Um die Frage zu beantworten wie es möglich ist, so viele illegale Covid-Zertifikate erstellen zu können, muss man das schwächste Glied identifizieren. Und da man Dokumentation und Source Code des Zertifikat-Systems dank #OpenSource auf dem Github Repo des Bundes findet, kann jeder Interessierte das ganze System nachvollziehen. Kurz gesagt: die IT-Lösung des Bundes ist an und für sich nicht schlecht, technisch sogar gut. Die Schwachstellen liegen woanders.
In der Covid-19-Verordnung Zertifikate werden sowohl den Kantonen als auch dem Bund unterschiedliche Aufgaben zugeteilt.
- Bund: Implementiert und Betreibt System zur Erstellung von Covid-Zertifikat.
- Kantone: Beaufsichtigen die Ausstellung und den Widerruf der Zertifikate durch die Ausstellerinnen und Aussteller.
Entsprechend stellt das BIT eine Fülle an Services an, die in der gesamt Architektur wie folgt aussieht:
Zur Ausstellung von Covid-Zertifikaten und sämtlichen Zertifikatstypen (Test-, Impf-, Touristen- und Genesenzertifikate) stellt das BIT zwei Services zur Verfügung:
- Eine Schnittstelle (dem API Gateway Service) die Aufrufe von anderen Programmen entgegen nimmt und an andere Services weiterleitet. Beispielsweise erstellt die Software “Vacme”, die in den Kantonen Bern und Zürich zur Organisation von Impfterminen und von Impfzentren und Apotheken genutzt wird, via API-Schnittstelle die Covid-Zertifikate sobald die Impfung durchgeführt wurde.
Nerd Mode On: Das BIT bietet sogar ein Swagger UI für das REST-Interface an.
- Ein Webportal (Management UI) mit welchem alle Personen die darauf Zugriff haben (aktuell laut Tagesanzeiger 11’000 Personen) Covid Zertifikate manuell oder via CSV Upload erstellen können.
Das untenstehende Ablaufdiagramm zeigt auf, wie ein autorisierter Nutzer ein Token (OTP) erstellen kann und dann dieses in ein System hinterlegt, dass die API Schnittstelle des BIT nutzt, damit dieses System Covid-Zertifikate automatisch erstellen kann.
Nerd Mode On: Das OTP ist ein pro Nutzer ausgestelltes JSON Web Token, dass Rückschlüsse über den Aussteller erlaubt. Damit weiss das BIT mit welchem Certificate (Hier wird extra den Englischen Begriff gewählt um den Unterschied zum (Covid)-Zertifikat darzustellen) das Covid-Zertifikat in Form eines CSOR Web Token (CWT) zu signieren ist. CWTs sind ein vom JWT abgeleitetes Format und werden ebenfalls via JWKs validiert werden.
Professionelle Aussteller haben die Möglichkeit, für ihr IT-System welches den API Gateway nutzt, ein langlebiges Token (das dann zwar immer noch OTP heisst) auszustatten. Langlebig bedeutet, dass das OTP nicht alle 12 Stunden erneuert werden muss sondern über längere Zeit gültig ist. Bspw. müsste der Apotheker, der Vacme nutzt nur 1x pro Woche/Monat/etc. das OTP generieren und im System hinterlegen. Das ist Sinnvoll, da so nicht jeder Mitarbeiter in der Apotheke ein Login für das Webportal braucht und nur wenige Zugang zum OTP erhalten.
Für Testzentren, die beispielsweise von Gastronomen am Eingang zu ihrem Tanzlokal betrieben, kann ein solches automatisches System nicht vorausgesetzt werden. Darum erlaubt das BIT den ‘manuellen’ Ausstellern den Upload von CSV Dateien, die auch von Personen mit wenig IT Kenntnissen erstellt werden können. Mit den Informationen im CSV werden Covid-Zertifikate erstellt und dem Aussteller zur Verfügung gestellt. Das bedeutet, dass vergleichsweise viele Mitarbeiter pro Testzentrum Zugang zum Webportal benötigen oder das dieser geteilt werden muss um effektiv zu sein.
Und hier liegt nun der Hase im Pfeffer: Wer für einen der beiden Zertifikats-Services autorisiert ist, kann grundsätzlich jede Art von Covid-Zertifikaten (egal ob Test-, Impf-, Touristen- oder Genesenzertifikat) ausstellen. Jeder Aussteller, kann über das Management UI problemlos Impfzertifakte erzeugen, auch wenn er eigentlich nur ein Testzentrum betreibt. Dem Missbrauch ist so Tür und Tor geöffnet. In der IT spricht man in Anlehnung ans OSI-Modell gerne von einem Layer 8-Problem wenn es sich um den mit dem System interagierenden Menschen handelt. Und um das handelt es sich schlussendlich auch hier, auch wenn man bedauern mag, dass Personen, die einen wichtigen Teil zur Bewältigung der Pandemie beitragen sollten keine höheren moralischen Standard besitzen und sich stattdessen der kriminellen Energie hergeben um sich persönlich zu bereichern.
Trotzdem: Kriminalität durchdringt sämtliche Schichten der Bevölkerung. Wie oft in der IT ist der Mensch das schwächste Glied. Deshalb designt man normalerweise Systeme so, dass Nutzer stets nur die Rechte und Rollen erhalten, die sie unbedingt für die Erfüllung ihres Verwendungszwecks brauchen. Im Falle des Covid-Zertifikat würde das bedeuten, dass ein reines Testzentrum nur Testzertifikate erstellen kann und keine Impfzertifikate. Dass dieses Prinzip beim Design des Token-basierten Zugriffs nicht berücksichtigt wurde, ist eine Unterlassung. Eine Unterlassung die wahrscheinlich aufgrund der knappen Ressourcen zustande gekommen ist.
Tun die Kantone zu wenig?
Der Brief der Verantwortlichen im Kanton Aargau und die Reaktion aus anderen Kantonen zeigt, die Kantone fühlen sich machtlos. Sie haben keinen Zugriff auf die Logs beim BIT und können nicht nachverfolgen, welcher Aussteller welche Zertifikate ausstellt und ob Missbrauch betrieben wird. Kurz sie können ihre Kontroll-Aufgabe nicht erfüllen. Dafür sind sie, laut eigenen Angaben, auf Anpassungen beim Management UI und dem Access Management angewiesen seitens des Bundes angewiesen.
Warum reagiert das BIT und das BAG nicht? Warum tun sie sich schwer und wollen lieber ein Kommission einsetzen, die ein Zugriffskonzept erarbeitet? Die Antwort ist ernüchternd: Einerseits ist das das Standardvorgehen bei IT Projekten beim Bund (HERMES) und anderseits: Der Bund bietet bereits Hilfe zur Selbsthilfe an, damit sich die Kantone selber helfen könnten. Mindestens bis der Bund die Kapazität hat, das Rollenkonzept korrekt zu implementieren So hat das BIT Demo Applikationen in Python, .NET und Javascript zur Nutzung der API nebst der Dokumentation erstellt und auf Github publiziert.
Was könnten die Kantone tun? Sie könnten beispielsweise gemeinsam oder einzeln basierend auf dem Repository des Management UI ein eigenes kantonales Portal entwickeln und pro Kanton betreiben. Mindestens die grösseren Kantone haben die nötigen Kompetenzen dafür. Die OTPs müssten immer noch via Management UI des Bundes bezogen werden, die CSVs müssten aber per kantonaler Plattform hochgeladen werden. Dann könnten die Kantone ihre Nutzer mit ihren Berechtigungen insofern kontrollieren, als dass sie einem Testzenter Betreiber sämtliche CSV Einträge die kein Testzertifikat zur Folge hätte löscht. Die Kantone könnten diese Ereignisse loggen und der Strafermittlung zukommen lassen.
Eine andere Variante könnte sein, dass die Kantone aktiv das BIT unterstützen, in dem sie die fehlenden Funktionen basierend auf den veröffentlichten Programmcodes entwickeln und als Vorschlag zur Softwareverbesserung den Entwicklern des BIT zur Verfügung stellen. Man spricht in der Softwareentwicklung davon, einen PR (Pull Request) zu eröffnen. Dank OpenSource kann jeder und jede Änderungen vorschlagen, die von den Entwicklern bewertet und übernommen werden können. Die Möglichkeit hätte auch Private und Unternehmen die in der Pandemie helfen wollen.
Damit keine Missverständnisse entstehen: Das ist nicht der Weg wie es sein sollte. Im Idealfall wäre das Management UI von Anfang an so gebaut gewesen, das die Kantone besser die Nutzer und die Logs dergleichen verwalten und einsehen könnten. Dabei hätte der Bund auch sicherstellen können, dass die Webplattform so datensparsam wie möglich ausfällt. Weiter hätten die OTPs von Anfang an auf ihren Verwendungszweck limitiert sein sollen (es hätte also unterschiedliche OTPs für “Geimpft”- und “Getestet”-Zertifikate geben können). Das System hätte so Versuche unterbunden, Covid-Zertifikate mit OTPs erstellen zu lassen, die für diese Art von Covid-Zertifikat nicht zugelassen sind.
Nerd mode on: Bspw. könnte das OTP was eigentlich ein JWT ist, mit entsprechendem Attribut im Payload ergänzt werden und beim verifizieren im Schritt 12 des Ablaufdiagramms oben, würde geprüft ob das OTP bspw. ein Impfzertifikat erstellen darf. Das wäre nicht so kompliziert. Kompliziert bzw. Aufwändig dürfte es sein alle 11'000 Aussteller auf ihre OTP scopes zu limitieren. Ebenfalls wird das nicht alle Probleme adressieren, da der Fall in Schaffhausen auch gezeigt hat, dass ein Mitarbeiter im Impfzentrum der Zugang zur Webplattform hatte die falschen Covid-Zertifikate ausgestellt hat.
Der Bund bietet mit dem API Gateway Service somit Hilfe zur Selbsthilfe, es ist an den Kantonen entweder zu warten, bis die Produktverantwortlichen Ressourcen und Priorität finden, die Dinge richtig zu Lösen oder selber zu handeln. Wurden denn alle Möglichkeiten der Kantone ausgeschöpft, dass der Bund unmittelbar etwas tun muss? Die Antwort ist wahrscheinlich nein, noch nicht.
Warum kein Kanton bisher die Möglichkeiten ausgelotet hat, obschon die Kantone die Verantwortung tragen, aber sie nicht wahrnehmen können, ist unklar. Vermutlich fehlen Geld und Ressourcen obschon mindestens die grossen Kantonen die Kompetenzen dafür besitzen. Im schlimmsten Fall haben die Kantonsregierungen gar nicht die Kompetenz ein entsprechendes IT Projekt aufzugleisen. Trotzdem ist die ewige Kompetenzrangelei zwischen Bund und Kantone in einer Pandemiesituation schwer nachzuvollziehen. Mut zu haben ist nicht umsonst eine wichtige Eigenschaft in der IT; «Sometimes it is easier to ask for forgiveness then for permission».
Statt als Team gemeinsam gegen die Pandemie anzutreten, schieben sich Bund und Kantone gegenseitig die Verantwortung zu und tragen ihre Konflikte offen in den Medien aus: zuletzt mit dem Versuch des Kantons Aargau den Bund unter Zugzwang zu setzen. Ganz nach dem Motto: «Mach du ich will nicht, Nein mach du». Unter der Beziehungskrise leidet nicht nur der Föderalismus sondern auch sämtliche Bürger und Bürgerinnen, die ihren solidarischen Beitrag zur Pandemiebewältigung beigetragen haben.
4 Antworten
Jo, eigentlich könnte das BIT ja auch den Kantonen in der Zwischenzeit den Zugriff auf die (allenfalls entsprechend gefilterten) Log-Events bieten oder diese wenigstens mit Reportings versorgen.
Das würde nicht die (kostbaren) Entwickler-Ressourcen binden, denn so etwas könnte wohl auch ein anderes Team (Betrieb Monitoring/Reporting etc.) tun.
Aber Merci für den Beitrag, Fingerzeigen ist halt manchmal einfacher, als etwas tun, gell Kantone! 😉
Hallo Urs,
es bleiben Mutmassungen ob das herausgeben der Log-Daten und Repporting so einfach von Statten ginge ohne die gesetzlichen und verordnungstechnischen Vorgaben zu verletzen. Mit den Log Daten hätten die Kantone Zugriff auf Erstellungs-Meta-Daten sämtlicher Kantone? Ob die Herausgabe Verhältnismässig wäre?
Ich finde es besonders schade, dass die Kantone sich es so einfach machen und mit dem Finger auf ein Projekt zeigen, dass sich auf so vielen Ebenen positiv hervortut. Wir sehen eine Software-Lösung die auf Transparency, OpenSource und Agiler Arbeitsweise setzt. Das ganze ohne Datenkrake gebaren! Das Projekt sollte als Leuchtturm betrachtet werden aus dem man weiter lernen kann. Nur so kommt man meiner Meinung nach aus dem IT-Bananenstaat-Schweiz.
Dass man nur eine binäre Autorisierung (alles oder nichts) vorgesehen hat, scheint mir ein grober Designfehler zu sein (security by design), der in einem solchen Projekt nicht passieren darf. Ich denke nicht, dass so ein Fehler auf Ressourcenknappheit zurückzuführen ist, sondern eher auf mangelnde Fachkompetenz.
Hallo Thomas,
Danke für dein Kommentar. Retrospektive kann man sicher feststellen, dass im April alles sehr schnell passieren musste. Gleichzeitig ist die Geschwindigkeit und Menge der Änderungen am Covid-Zertifikat hoch, ob die Kantone überhaupt in der Lage gewesen wären ein differenziertes Onboarding durchzuführen ohne wichtige Zeit zu verlieren darf angezweifelt werden. Nichtsdestotrotz: alleine der Fakt, dass das OTP ein JWT Token ist, beweist, dass die Technik bereit dafür gewesen wäre.
Wie viel Geld und Kapital der Bund jetzt noch investieren will, wenn der Chef des BAG bereits das Projektende einläutet?