Datenleck: Wie Baden in Österreich 33.000 Meldedatensätze ins Netz stellte
Baden in Niederösterreich hat sich die BadenCard für den Wertstoffhof ausgedacht. Da der politische Druck groß war, baute man hastig eine Website: mit Folgen.
- Jan Mahn
Die Verwaltung von Baden bei Wien wollte eigentlich nur ein kleines Problem lösen: Den Recyclinghof, betrieben vom Bauhof der Stadt, sollten nur Einheimische besuchen und auch die nur maximal 52 Mal pro Jahr. Anstatt sich vor Ort bei jedem Besuch den Ausweis zeigen zu lassen und eine Strichliste auf Papier oder in Excel zu führen, entschied sich die Stadt für eine digitale Lösung mit einem schwungvollen Namen: die BadenCard.
Ende 2020 überlegte sich die Verwaltung dann eine Weiterentwicklung: Künftig sollte die Karte 15 Euro bei der Ausstellung und danach 10 Euro pro Jahr kosten. Weil bei der ersten Version aber die Daten der Inhaber nicht erfasst wurden, forderte die Stadt alle Entsorgungswilligen auf, persönlich im Bürgerbüro zum Ausstellen einer neuen Karte vorstellig zu werden. Die Aussicht auf alljährliches Schlangestehen und Nummernziehen im Rathaus passte nicht jedem in Baden und die Lokalpolitiker der liberalen Partei NEOS nutzten die Gelegenheit, lautstark eine Möglichkeit zur Online-Verlängerung und bei der Gelegenheit auch eine Digitalstrategie für Baden zu fordern. Eine Online-Verlängerung sei nicht nur während des Lockdowns eine gute Idee für die Zukunft.
Anfang 2022 verkündete die Stadt dann stolz: "Die Stadtgemeinde Baden hat eine Online-Lösung geschaffen, die es erlaubt, sowohl die Verlängerung selbst als auch die Bezahlung bequem zu Hause zu erledigen." Die Bezahlung funktionierte, wie man es aus vielen Webshops gewohnt ist, per Sofortüberweisung oder Kreditkarte, dazu hatte man Dienste des österreichischen Zahlungsdienstleisters Hobex eingebunden.
Neugierige Blicke
Neugierig schaute sich auch einer unserer österreichischen Leser das neue Angebot an. Auf den ersten Blick suspekt war schon der Link zum Portal, den die Stadt auf ihrer Homepage eingebaut hatte. Der endete mit dem Pfad cgi-bin/web_if/web_if.cgi – ungewöhnlich für ein Portal, das man eher unter einer leicht zu merkenden Adresse wie etwa card.baden.at vermutet hätte. Ließ man diese Pfadangabe weg, antwortete auf dem Server eine CGI-Testseite. Nicht gerade das, was man von einer fertigen und produktiv genutzten Anwendung erwartet. Da eine Anwendung, die sich schon vor den Kulissen so verdächtig benimmt, oft einen genaueren Blick wert ist, schaute sich unser Leser genauer auf dem Server um und prüfte gängige Pfade, die schon andernorts für Datenlecks verantwortlich waren.
Alle Tore offen
Anfang März 2022 landete dann eine Mail mit einem Hinweis in unserem Investigativ-Briefkasten (zu erreichen über heise.de/investigativ). Der aufmerksame Leser hatte entdeckt, dass sich der Webserver auf dem Pfad /data übermäßig geschwätzig zeigte: Aktiviert war das sogenannte Directory Listing, das fast alle Webserver eingebaut haben. Ist es eingeschaltet, generiert der Server für jeden Ordner, der keine Index-Webseite enthält, eine Übersichtsseite mit allen darin befindlichen Dateien und Ordnern, die man darüber per Klick bequem herunterladen kann. Gedacht ist das eher für die Entwicklungsphase, in fertigen Anwendungen hat diese Seite nichts verloren.
Wir schauten uns die URL an und konnten uns ein Bild vom Ausmaß des Problems machen. Einen Passwortschutz gab es nicht, alle Ordner mit allen Daten waren direkt einsehbar. Neben Dateien mit kryptischen Namen stach sofort die Datei meldeamt.dbf (letzte Änderung am 8.3.2022, dem Tag unseres Abrufs) ins Auge, die 8,4 MByte groß war. dbf-Dateien gehören zum antiquierten Datenbanksystem dBASE II, das in den 1980ern auf den Markt kam. Öffnen kann man die dbf-Dateien, die jeweils eine Datenbanktabelle enthalten, heute am schnellsten mit der Tabellenkalkulation Calc aus der LibreOffice-Programmfamilie.
Uns offenbarte sich das, was wir anhand des Dateinamens befürchtet hatten: Auf 33.483 Zeilen erstreckten sich Name, Vorname, Anschrift, Geschlecht, Geburtsdatum sowie die Information, ob es sich um einen Erst- oder Zweitwohnsitz handelt. 28.400 Personen haben laut dieser Datenbanktabelle ihren Erstwohnsitz in Baden – etwas mehr als die 26.037, die die Stadt auf ihrer Homepage unter "Baden in Zahlen" selbst angibt. Man kann also annehmen, dass wir die vollständige Meldedatenbank der Stadt gefunden hatten.
Noch mehr Datenfelder enthielt die Tabelle cards.dbf. Darin offenbar die Datensätze der 14.420 ausgestellten BadenCards. Neben der postalischen Anschrift, die in allen Datensätzen eingetragen und wohl aus der Meldedatenbank übernommen war, hatten einige Nutzer zusätzlich auch eine E-Mail-Adresse und eine Telefonnummer hinterlegt. Außerdem enthielt die Tabelle Informationen zur Plastikkarte wie die ID des eingebauten RFID-Chips sowie die Gültigkeit der BadenCard.
Als wären das nicht genug personenbezogene Daten, hatte der Server noch jede Menge Textdateien mit der Zeichenkette "Hobex" und JSON-Objekten im Angebot. Dabei handelte es sich offenbar um die Transaktions-Logs, die der Zahlungsdienstleister Hobex erzeugte, wenn ein Bürger seine 10 Euro für die nächsten 365 Tage Entsorgungsvergnügen bezahlt hatte. Die Daten enthielten unter anderem Name und Rechnungsanschrift sowie die IP-Adresse. Bei Kreditkartenzahlung sah man immerhin nur die letzten vier Stellen der Kreditkartennummer – bei Sofortüberweisung aber die vollständige IBAN.
Mit diesen Erkenntnissen beendeten wir die Suche und informierten am 8. März den Datenschutzbeauftragten der Stadtverwaltung mit dem Hinweis auf Responsible Disclosure. Wir sicherten zu, nicht über den Fall zu berichten, solange das Problem besteht. Schon am nächsten Morgen war das Leck provisorisch abgedichtet. Der Webserver antwortete mit "403 Forbidden", abgestellt war aber vorerst nur das Directory Listing. Wenig später war der gesamte Server nicht mehr erreichbar und auf der Homepage der Stadt hieß es: "Die Online-Verlängerung der Baden Card ist vorübergehend aufgrund von Wartungsarbeiten nicht möglich!"
In unserer E-Mail hatten wir um Antworten innerhalb von 14 Tagen auf Fragen zum Problem gebeten – diesen Termin ließ die Behörde ohne Reaktion verstreichen und auch auf erneute Anfrage bekamen wir keine Antwort. Auskunftsfreudiger zeigte sich die Österreichische Datenschutzbehörde. Sie bestätigte, dass sie am 11. März gemäß Artikel 33 der DSGVO informiert wurde und dass das Verfahren noch laufe. Auch auf die Frage, welche Konsequenzen die folgenschwere Nachlässigkeit für die Stadtverwaltung haben würde, antwortete der Sprecher: "Eine Verhängung von Verwaltungsstrafen gegen Behörden ist in Österreich durch § 30 Abs. 5 DSG ausgeschlossen."
Viele c’t-Investigativ-Recherchen sind nur möglich dank anonymer Informationen von Hinweisgebern.
Wenn Sie Kenntnis von einem Missstand haben, von dem die Öffentlichkeit erfahren sollte, können Sie uns Hinweise und Material zukommen lassen. Nutzen Sie dafür bitte unseren anonymen und sicheren Briefkasten.
Finger weg
Aus technischer Sicht gibt es kaum neue Lehren aus dem Fall, vor allem die alte Erkenntnis: Für das Directory Listing auf Webservern gibt es eigentlich keinen guten Grund; diese Übersichtsseite macht es enorm leicht, sensible Daten in Verzeichnissen zu finden. Aber mit dem Abstellen des Directory Listings ist es nicht getan: Datenbanken und andere sensible Inhalte wie Logs gehören nicht in ein Verzeichnis, das per HTTP von einem Webserver ausgeliefert wird. Und wenn es dafür wirklich mal einen triftigen Grund geben sollte, nur hinter einer sicheren Authentifizierung – fast immer gibt es aber bessere Alternativen wie einen Abruf der sensiblen Daten per SSH.
Problematisch war auch die grundsätzliche Architektur der BadenCard-Plattform. Deren Server speicherte mehr Daten als für die Aufgabe unbedingt nötig. Wer den Auftrag bekommt, eine solche Anwendung zu entwerfen, sollte sich gut und in Ruhe überlegen, ob er nicht eine Möglichkeit findet, ohne eine stets aktualisierte Kopie des gesamten Melderegisters auszukommen. Die Forderung nach Datensparsamkeit ist keine weltfremde Idee der Datenschutzgesetzgeber, sondern reduziert den Schaden bei einem Leck wie diesem. Sollen die Geburtsdaten zum Beispiel wie in diesem Fall nur dazu benutzt werden, dass sich Baden-Card-Inhaber mit ihrer Kartennummer und dem Geburtsdatum anmelden können, kann man die Geburtsdaten auch wie ein Kennwort behandeln und als Hash abspeichern.
Einen rudimentären Schutz vor vergleichbaren Datenlecks können Monitoring-Werkzeuge liefern, die für gewöhnlich regelmäßig eine URL aufrufen und Alarme auslösen, wenn eine Seite nicht erreichbar ist – etwa wenn der Server ausgefallen ist. Mit der Open-Source-Software Uptime Kuma haben wir ein solches Werkzeug kürzlich vorgestellt. Solche Anwendungen kann man oft auch in einem inversen Modus betreiben: Dann schlagen sie per Mail oder Messenger Alarm, wenn eine nicht für die Öffentlichkeit bestimmte Seite wider Erwarten im Netz hängt. Konfigurationsfehler bleiben dann nicht lange unentdeckt, sofern man alle schützenswerten Pfade pflichtbewusst ins Monitoring aufnimmt.
Solche technischen Helfer können aber nur unterstützen und ersetzen nicht den kritischen Blick von Admin-Kollegen oder von extern eingekauften Penetration-Testern. Diesen Blick schärft man, indem man sich auch als Admin oder Entwickler in die Rolle potenzieller Datendiebe versetzt und beispielsweise mit einer Testumgebung gängige Angriffe ausprobiert.
[Update 18.5.22] Infoschreiben der Stadt Baden:
Nach unserem Bericht über ein Datenleck in der Stadt Baden in Österreich meldete uns ein Leser, dass er am 14. April ein Infoschreiben über den Datenvorfall erhalten hat. In dem Schreiben, das uns vorliegt, bestätigt die Stadt, dass die Meldedaten von 33.400 Wohnsitzdatensätzen, 14.400 Datensätze der Baden Card sowie Zahlungsvorgänge von etwa 750 Personen von einem „Datenvorfall“ betroffen waren.
(jam)