Anfang September schrieben wir im Fazit zum Einsatz von eVoting bei den Parlamentswahlen folgendes:
Schlussendlich hängt vieles vom Verhalten der Stimmbürger ab, und deren Reaktion auf vermutete oder effektive Unstimmigkeiten während der Stimmabgabe. Hierzu muss man sich insbesondere fragen, wie kritisch allfällige Unstimmigkeiten wahrgenommen werden, wenn Bund und Kanton gleichzeitig die Botschaft «eVoting ist sicher» verkünden. Positiv ist aber immerhin, dass sich die Risikobeurteilung der Kantone stark auf die praktische Durchführung einer Abstimmung fokussiert und die getroffenen Massnahmen grundsätzlich zielführend sind. Offen bleibt auch bei den Kantonen die vielbemühte „Schwachstelle Mensch“
Wir haben eigentlich nicht erwartet (und auch nicht erhofft), dass es gerade mal einen Monat gehen würde, bis wir ein konkretes Beispiel für diese Problematik sehen würden. Aber ein im Ausland lebender Schweizer Informatik-Ingenieur hat sich nach der eVoting-basierten Abstimmung im Juni einige Gedanken über die Angreifbarkeit im Browser gemacht und eine Möglichkeit dokumentiert, wie zumindest grundsätzlich Stimmen unbemerkt manipuliert werden können.
Um was geht es?
Eines der zentralen Elemente des Schweizer eVotings ist die individuelle Verifizierbarkeit. Damit kann die Stimmbürgerin verifizieren, dass ihre Stimme korrekt vom eVoting-System registriert wurde (bildlich gesprochen kann sie so überprüfen, ob der Wahlzettel unverändert in der Urne gelandet ist). Um dies zu ermöglichen, werden beim Drucken der Stimmunterlagen für jeden Stimmberechtigten individuelle Prüfcodes für „Ja“ und „Nein“ generiert, welche anschliessend auf dem jeweiligen Stimmausweis aufgedruckt sowie geschützt auf dem eVoting-System gespeichert werden. Bei der eigentlichen Stimmabgabe zeigt der Browser der Stimmberechtigten nach dem Speichern der Stimme den entsprechenden Prüfcode an, welche sie mit dem Wert in den Unterlagen abgleichen muss. Falls sie dabei Differenzen entdeckt, ist sie angehalten, die zuständige Behörde ihres Kantons zu kontaktieren (und den Abstimmvorgang nicht abzuschliessen). Der ordentliche Ablauf ist also wie folgt:
- Die Stimmbürgerin gibt im Browser ihre Stimmen ein, diese werden an den eVoting-Server gesandt.
- Der eVoting-Server gibt die individuellen Prüfcodes für die jeweilige Stimme („ja“/„nein“) zurück, diese werden im Browser angezeigt.
- Die Stimmbürgerin vergleicht die angezeigten Prüfcodes mit denjenigen aus den den Abstimmunngsunterlagen.
- Falls alles miteinander übereinstimmt, bestätigt sie die Korrektheit der Übermittlung im nächsten Schritt (durch Eingabe eines weiteren Codes).
Wie Andreas Kuster im oben verlinkten Blog-Post dokumentiert hat, sind Details des Prüfvorgangs (insbesondere Screenshots) nicht in seinen gedruckten Abstimmunterlagen enthalten sondern nur online verfügbar. Ein sich unsicher fühlender Stimmbürger wird sich daher unter Umständen nicht auf die Papierunterlagen verlassen, sondern zusätzlich auch noch die Online-Beschreibung des Kantons konsultieren deren URL in den Papierunterlagen enthalten ist. Sofern es einem Angreifer gelingt, den Browser des Stimmbürgers so unter Kontrolle zu kriegen, dass sowohl der Zugriff auf die ergänzende Online-Vorgehensbeschreibung wie anschliessend auch die eigentliche Stimmabgabe manipuliert werden können, dann können Stimmen unbemerkt verändert werden.
Technisch gesehen kann das zum Beispiel über ein Browser-Plugin erfolgen, welches sich entweder direkt als „eVoting-Helfer“ anpreist oder die Beeinflussungs-Funktionalität hinter etwas nützlichem wie zB einem CH-News-Aggregator verbirgt. Plugins haben üblicherweise den vollen Zugriff auf die aufgerufenen Seiteninhalte und können insbesondere Seiteninhalte beliebig ändern (auf diesem Weg können Plugins zum Download von Youtube-Video beispielsweise zusätzliche Buttons auf Youtube einblenden). Im konkreten Fall könnte ein Plugin also auch die im Browser angezeigten Inhalte der Online-Vorgehensbeschreibung der e-Voting-Infoplattform so ändern, dass sie zur manipulierten eVoting-Seite passt. Dabei würde der Stimmbürger die URL der e-Voting-Infoplattform eingeben, der Browser würde den Inhalt der Seite von der Plattform holen und anschliessend würde (ohne dass der Stimmbürger das sieht) der Text direkt im Browser durch einen vom Plugin bereitgestellten ersetzt. Benutzer ohne Plugin würden von der Manipulation nichts mitkriegen, da sie ja nur im Browser der manipulierten Stimmbürger erfolgt.
Schematisch könnte das folgendermassen aussehen (zeitlicher Ablauf von oben nach unten):
Das Vorgehen zur Manipulation der Stimmen ist dann vom Ablauf her verhältnismässig einfach:
- Die zur manipulierende Stimme wird durch den Angreifer auf dem Weg vom Browser zum eVoting-Server verändert (der eVoting-Server erhält also zum Beispiel ein „Ja“ obwohl der Stimmbürger ein „Nein“ ausgewählt hat).
- Der vom Server an den Browser gesandte Prüfcode wird nicht wie vorgesehen angezeigt, stattdessen wird der Stimmbürger zur Eingabe des Codes aus den Abstimmunterlagen aufgefordert.
- Anschliessend gaukelt der Browser einen Vergleich des eingegebenen Codes mit demjenigen des eVoting-Servers vor und und meldet auch bei durch die Manipulation entstandenen Differenz eine korrekte Prüfung.
Schematisch sieht das vom Ablauf her ähnlich aus wie oben:
Der Trick besteht konkret darin, die Code-Prüfung nicht wie vorgesehen durch den Stimmbürger vornehmen zu lassen, sondern sie stattdessen verborgen durch den Browser bzw. im Plugin durchzuführen. Dem Stimmbürger bleibt somit verborgen, dass die Codes eben genau nicht identisch sind. Und da der Stimmbürger keine Papierunterlagen hat welche den detaillierten Ablauf zeigen, hat er apriori auch keine direkte Möglichkeit zu erkennen, dass die verdeckte Code-Prüfung irregulär ist. Für den eVoting-Server hingegen sieht alles wie erwartet aus, er kann ja nicht erkennen dass die Prüfcode-Prüfung im Browser abläuft (und nicht wie vorgesehen im Kopf des Stimmbürgers).
Risikoeinschätzung
Praktisch gesehen muss einiges schiefgehen, um mit der beschriebenen Methode Wahlen oder Abstimmungen signifikant (im Sinne einer Verfälschung des Ergebnis) beeinflussen zu können:
- Die Angreifer müssen einen Weg finden, eine signifikante Anzahl von eVoting-Berechtigten zur Installation eines Plugins zu überreden, ohne das Post und Kantone davon Kenntnis erhalten.
- Eine signifikante Anzahl von eVoting-Berechtigten muss entgegen der Empfehlungen nicht den Private Browsing-Modus verwenden (in welchem Plugins üblicherweise nicht aktiv sind).
- Keinem der eVoting-Berechtigten darf auffallen, dass der modifizierte Ablauf der individuellen Verifizierbarkeit anders ist als bei der letzten Abstimmung, oder dass der modifizierte Ablauf eigentlich gar keine Kontrolle beinhaltet.
Dies sind eine ganze Reihe von Voraussetzungen, die zumindest in der Summe unwahrscheinlich sind. Und selbst wenn der Angriff unbemerkt bliebe und von den rund 60-70‘000 fürs eVoting zugelassenen Stimmberechtigten 1% drauf reinfallen, sind das bei einer (hohen) elektronischen Stimmbeteiligung von 50% gerade mal 350 Stimmen über alle drei Versuchskantone hinweg, damit lässt sich eine nationale Abstimmung nicht kippen. Bei Wahlen mag es subtil anders aussehen, allerdings besteht das Beeinflussungspotential hier nur aus rund 120 Stimmen (da sich die 350 geänderten Voten auf drei Kantone aufteilen). Es ist zu bezweifeln, dass eine Partei wegen einer minim erhöhten Chance auf einen zusätzlichen Sitz das Risiko eines massiven politischen Schadens durch Manipulation einer Wahl eingehen will (und der viel beschworene ausländische Akteur mit erheblicher Leistungsfähigkeit wird wegen eines Sitzes mehr oder weniger kaum aktiv, bzw. kann das Vertrauen ins Ergebnis auch direkt durch Propaganda schädigen).
Wir haben die beteiligten Player (Bundeskanzlei, Post und Kantone) um eine Stellungnahme gebeten. Grundsätzlich erkennen sie in der beschriebenen Methode keine Erhöhung des Gesamtrisikos sondern primär den bereits bekannten Umstand, dass die Stimmabgabe über ein unsicheres Endgerät erfolgt. Insofern sehen sie auch keinen Grund für kurzfristige Massnahmen.
Für die Bundeskanzlei stellt die Methode keine neue Schwachstelle dar, sie sieht aber den bestehenden Massnahmenkatalog bestätigt, welcher die Rolle des Stimmberechtigten im korrekten Umgang mit eVoting und dem Erkennen von Manipulationsversuchen betont. Sie sieht eVoting weiterhin in einer Versuchsphase und sieht im konkreten Fall einen guten Grund, die Information der Stimmberechtigten weiter zu verbessern.
Die Post stuft die Priorität der Problematik als „low“ ein, da das System ”auf das Vertrauensmodell ausgerichtet [ist], das die rechtlichen Grundlagen des Bundes definieren. Das Gerät des Stimmberechtigten ist in diesem Modell als nicht-vertrauenswürdig eingestuft. Der Befund von Andreas Kuster geht von einer Manipulation des Geräts eines Stimmberechtigten aus und davon, dass der Stimmberechtigte den Abstimmungsprozess nicht korrekt durchführt.“ Vereinfacht gesagt: Unsere Software funktioniert wie sie muss, auf Vorgänge ausserhalb der Systemgrenzen haben wir keinen Einfluss. Dass der Stimmberechtigte im beschriebenen Szenario unter Umständen gar nicht in der Lage ist, die Manipulation zu erkennen (oder sie als korrekt wahrnimmt), geht dabei etwas vergessen. Aus Sicht der Post als Software-Lieferanten ist der Fokus auf das eVoting-System als solches zwar nachvollziehbar, es erhöht aber die Wichtigkeit der end-to-end-Sicht und -Verantwortung durch die Kantone.
Die Kantone verlassen sich weitgehend darauf, dass die bestehenden Schutzmechanismen ausreichen und dass, wie eingangs beschrieben, die effektive Durchführung des Angriffs auf eine signifikante Anzahl von Stimmen in der Praxis kaum funktionieren wird. Sie scheinen aber Tragweite der Abhängigkeit von einer rein online vorliegenden Dokumentation nicht ganz erfasst zu haben, schreiben sie doch in ihrer Antwort: „Auf sämtlichen Stimmrechtsausweisen wird festgehalten, dass die Stimmberechtigten auf der Webseite des Kantons weitere Informationen finden“. Immerhin geht das den Abstimmunterlagen beigelegte Merkblatt (zum Beispiel im Kanton Thurgau) konkret auf den Ablauf ein und hält fest, dass es am Stimmberechtigten ist, die auf der eVoting-Seiten angezeigten Codes mit der Papierversion zu vergleichen. Und die Kantone nehmen die Sache zum Anlass, eine Konkretisierung der Instruktionen zu prüfen.
Die Kantone überprüfen, ob weitere Massnahmen sinnvoll sind und ob die erwähnten Anleitungen prominenter platziert werden sollen. Sie überprüfen insbesondere, ob auf den Stimmrechtsausweisen, auf dem Merkblatt oder auf der Webseite deutlicher hervorgehoben werden könnte, welche Schritte wann von wem gemacht werden. Beispiel: Prüfcodes werden vom System angezeigt, die Prüfung, ob sie stimmen, wird von den Stimmberechtigten vorgenommen.
Auskunft von Olivia Meier, Staatskanzlei St. Gallen
Fazit
Auch wenn das reale Risiko der beschriebenen Methode also eher gering ist, bestätigen sich hier trotzdem zwei der bezüglich eVoting seit Jahren geäusserten Kritikpunkte: Die Verantwortung des Stimmbürgers in Bezug auf eine korrekte Stimmabgabe steigt mit eVoting deutlich an, und die Stimmabgabe mittels eines ungesicherten Endgeräts bleibt ein Risiko. Ob man die Tatsache, dass die oben beschriebene Schwachstelle keine praktischen Auswirkungen hat, nun positiv oder kritisch sieht, dürfte stark davon abhängen, ob man eVoting als ganzes positiv oder negativ gegenübersteht. So oder so kann man jedem Sicherheitsforscher dankbar dafür sein, der den Finger auf die wunden Punkte legt und somit zumindest Gelegenheit gibt, die Risikoeinschätzungen zu verifizieren und allenfalls zu überdenken.
Es zeigt sich allerdings erneut, dass die Bug Bounty-Programme der Post zwar mithelfen können, konzeptionelle und technische Fehler in der eVoting-Software zu finden, nicht aber im End-to-end-Prozess. Argumente wie „eVoting ist sicher da das Bug Bounty-Programm keine kritischen Fehler gefunden hat“ sind daher weiterhin schlicht falsch. Und wenn die Kantone in ihrer Antwort auf die online dokumentierten Verifikationsschritte verweisen, die Attacke aber genau den Online-Zugriff auf diese aushebelt, dann bleibt zumindest ein ungutes Gefühl zurück. Es wäre zur Vertrauenssteigerung sehr zu begrüssen, wenn die BK und die Kantone im Nachgang zu den Parlamentswahlen vermehrt Gewicht auf Penetrationtests legen würden, welche neben der reinen eVoting-Software auch das Drumherum (d.h. der Weg vom Stimmbürger und dessen Papierunterlagen bis hin zum publizierten Endergebnis) zum Testinhalt haben.
Eine Antwort
Ich finde es verdienstvoll, dass die DNIP auf immer noch bestehende Schwachstellen im Gesamt-System des eVotings hinweist. Hier sollte nach besseren bzw. sichereren Lösungen gesucht werden. Man muss aber eVoting auch in den Gesamtkontext der Wahlen setzen. Auch die briefliche Stimmabgabe bietet Gelegenheiten zum Missbrauch. So kommt es immer wieder vor, dass in Altersheimen das Wahlmaterial von einer Person aus der Leitung zurückbehalten wird, die dann an Stelle aller Bewohner*innen ihre Stimme vielfach abgiebt. Die grösste Schwachstelle dürfte aber die kantonale Informatik zur Verarbeitung der ausgezählten Stimmen sein. Wem es gelingt, sort einzudringen, der kann – bei entsprechenden Fachkenntnissen – die Wahlem in erheblichem Masse manipulieren, ohne dass dies erkannt wird.