TL;DR – Geburtsdatum oder Pesel-Nummer ist keine gute Idee, um den Zugriff auf Daten zu sichern.
Rätsel – was unterscheidet die beiden bilder unten?
Lassen Sie uns jedoch am Anfang beginnen. Leider geht Bequemlichkeit, wie so oft in der IT-Welt, nicht Hand in Hand mit Sicherheit. Ich denke, dieses Mal war es ähnlich. Es gibt jedoch eine Reihe sensibler Daten, bei denen keine Kompromisse eingehen dürfen. Solche Daten sind unter anderem Informationen über unseren Gesundheitszustand.
Alarmiert durch die Nachricht von meinem Freund Kacpra, wie Zugang zu Laborergebnissen gewährt wird, beschloss ich, die Dafür verantwortliche Lösung genauer zu untersuchen.
Wie Sie in den obigen Grafiken sehen können , benötigen Sie zwei Informationen, um über die Funktionalität "vereinfachte Anmeldung" auf Ihr Ergebnis zugreifen zu können:
- die Auftrags-ID, bei der die nachfolgenden Auftragsnummern steigen;
- Geburtsdatum des Auftraggebers [day=X&month=X&year=X]
Bei bestimmten Annahmen beträgt die Anzahl der Kombinationen von Geburtsdaten, die der Auftragskennung zugeordnet werden können, nur etwa 19 000 Kombinationen. Es ist nicht schwer zu erraten, dass es kein großes Problem ist, alle diese Kombinationen zu generieren und zu überprüfen, ob sie mit der Auftragsnummer übereinstimmen.
Es stellte sich heraus, dass meine Vermutungen richtig waren und nach mehreren hundert Enumerationen gelang es mir, die Zugriffsdaten abzugleichen:
Dies ermöglichte es, sensible Patienteninformationen wie:
- Name;
- Name;
- Pesel;
- Geburtsdatum;
- Wohnadresse;
- das Testergebnis;
Ein weiteres Beispiel für einen erfolgreichen Enumerationsversuch:
Unmittelbar nach bestätigung meiner Annahmen über die Anfälligkeit meldete ich diesen Fehler den Verantwortlichen der Software zusammen mit Reparaturempfehlungen:
Was tun, wie man lebt?
Einer der am häufigsten verwendeten Schutzmaßnahmen gegen diese Art von Angriffen ist die Implementierung des Captcha-Mechanismus. Ein Anwendungsbenutzer wird nach mehreren (z. B. drei) fehlgeschlagenen Versuchen, auf die Auftragsdaten zuzugreifen, aufgefordert, den angezeigten Captcha-Code umzuschreiben. Beachten Sie jedoch, dass die Implementierung eines solchen Mechanismus nur (oder bis) eine Verlangsamung des Angreifers darstellt, der in den einfachsten Fällen in der Lage sein wird, das Geburtsdatum mit Hilfe von OCR-Scannern oder dedizierten Captcha-Lesediensten weiter zu brutforsieren.
Eine bessere und von mir empfohlene Sicherheit besteht darin, über ein entsprechend langes, zufälliges Passwortauf die Ergebnisse des Auftrags zuzugreifen, das an die Telefonnummer des Auftraggebers geht.
Glücklicherweise wurde der Fehler durch die Implementierung des reCAPTCHA-Mechanismus von Google recht schnell behoben: