Gelukkig! Digitale Wachtkamer heeft lessen getrokken uit de hack.
Ik las vandaag volgend artikel. Hierin staat wat we al wisten, namelijk dat Ronny Paesen, de man achter Digitale Wachtkamer, ontkent dat wachtwoorden onversleuteld werden opgeslagen in de database. Hoewel verschillende bronnen aangeven (zie ook deze post) dat de wachtwoorden plain-text in de database werden opgeslagen, beweert Ronny Paesen tegenover datanews het volgende:
“De wachtwoorden in de database zaten wel degelijk geëncrypteerd in de database. Maar op een of andere manier heeft de hacker die kunnen ontcijferen”.
Het maakt echter niet uit of de wachtwoorden ‘geëncrypteerd’ worden opgeslagen in de database, encryptie is namelijk geen geschikte manier om wachtwoorden te beveiligen. Wachtwoorden dienen gehasht te worden alvorens ze worden opgeslagen in de database. Hashing is een protocol dat maar in 1 richting werkt, dit wil zeggen het originele wachtwoord kan niet ontcijferd worden uit de hash. Encryptie daarentegen werkt met een sleutel die kan gebruikt worden om het wachtwoord te versleutelen maar dus ook om te ontcijferen.
Wachtwoord resetten
Iets anders wat me opviel in het artikel op security.nl is dat het wachtwoord reset proces is gewijzigd. Je krijgt niet langer een wachtwoord in tekstvorm toegestuurd, maar een link waarmee je zelf een nieuw wachtwoord kan instellen. Mooi, dat zou je denken ten minste…
Even een korte flashback. Deze e-mail kreeg ik gestuurd toen ik maandag 18/07 mijn wachtwoord gereset heb. Een wachtwoord door Digitale Wachtkamer voor mij gemaakt werd in plain-text gemaild.
Kleine opmerking hierbij: aangezien mijn huisdokter niet langer gebruik maakt van digitale wachtkamer kan ik niet langer inloggen op de website (zie de bijzonder knappe post-it!) en was ik dus ook niet in de mogelijkheid om mijn wachtwoord aan te passen.
Vandaag heb ik nogmaals een reset gedaan en dat resulteerde in de volgende e-mail in mijn inbox. En inderdaad een link om mijn wachtwoord — of om in het in de bewoordingen van Digitale Wachtkamer te zeggen, ‘paswoor’ — aan te passen.
Hidden features en andere, serieuzere problemen bij wachtwoord reset
So far so good. Even op de link klikken en een nieuw wachtwoord instellen.
Wat ik dan typisch doe is een zeer lang en willekeurig wachtwoord laten genereren door mijn password manager. Omwille van de veiligheid en ook omdat dit al een eerste indicatie geeft hoe sites omgaan met wachtwoorden. Bijvoorbeeld: “M],zv,FFgA,P6oW8_u9tX%n_8c@T3AVjU8J2wwtA)]X&nETXwrmLegE8)Q8TA4z+”. Tot mijn grote verbazing kreeg ik toen volgende foutmelding:
Dus als je een sterk wachtwoord ingeeft, kom je op een error page die je de optie geeft om een dokter te zoeken voor een bepaalde postcode. Logisch, toch?
Laat ons eens 2000, de postcode van Antwerpen, ingeven. En inderdaad we krijgen een lijstje van dokters in Antwerpen die gebruik maken van Digitale Wachtkamer.
Toen vroeg ik me af wat er zou gebeuren als ik eens gewoon ‘test’ als wachtwoord zou ingeven, zou ik dan ook op dezelfde pagina terechtkomen omdat mijn wachtwoord niet aanvaard wordt wegens onvoldoende sterk? Dit is het resultaat:
‘Uw paswoord is aangepast’, m.a.w. ‘test’ wordt aanvaard als wachtwoord. Ok, dan proberen we een wachtwoord van 1 karakter lang. En ook dat blijkt voldoende voor Digitale Wachtkamer.
Zou ik nog 1 stap verder kunnen gaan en een leeg wachtwoord ingeven? En je raadt het nooit.. ook dit wordt zonder problemen geaccepteerd. Ik wilde uiteraard testen of ik met mijn username en leeg wachtwoord kan inloggen op de website, maar aangezien ik zelf niet meer kan inloggen met mijn account heb ik even wat hulp moeten inroepen. Wat blijkt is dat inloggen met een leeg wachtwoord niet mogelijk is.
Wachtwoord wijzigen via profiel
Zou wachtwoord wijzigen via het profiel zich hetzelfde gedragen als via een reset? Hier is het niet toegestaan om het wachtwoord veld leeg te laten, maar wachtwoorden met lengte 1 worden wederom zonder problemen aanvaard.
Dit is zeer zwak op het gebied van beveiliging. Als je gebruikers toelaat om wachtwoorden van 1 karakter te kiezen en geen minimum wachtwoord lengte oplegt, dan zullen zelfs sterke hashing algoritmes niet kunnen voorkomen dat deze hashes gekraakt worden.
Nog een ‘kleiner’ gebrek
Als je bij een wachtwoord reset een onbestaand e-mail adres ingeeft, wordt dit duidelijk aangegeven. Hiermee lek je de aan- of afwezigheid van gebruikers in het systeem. Op deze manier zou je zelfs kunnen achterhalen (in combinatie met de bug die een zoekfunctie voor artsen per postcode beschikbaar maakt), wie patient is bij welke dokter.
Conclusie
Er is duidelijk een fundamenteel security (én communicatie) probleem bij Digitale Wachtkamer. Dit is waarschijnlijk het topje van de ijsberg, dit zijn allemaal problemen die ik op heel korte tijd heb ontdekt.
Gelukkig heeft Ronny Paesen lessen getrokken uit de hack, hij gaat zelfs op regelmatige basis audits laten doen. Wel, beste Ronny Paesen, zie dit dan alvast als een gratis audit van mijnentwege.
En oh ja, wat uw communicatie probleem betreft, het minimum wat elke gebruiker mag verwachten is dat hij serieus wordt genomen en dat hij geïnformeerd wordt indien er iets misgaat. Hopelijk leer je eruit.
Update 31/07/2017
Eergisteren stelde ik vast dat Digitale Wachtkamer een eerste poging heeft gedaan om de veiligheid te verbeteren. Vanaf nu is het niet meer mogelijk om een wachtwoord van minder dan 8 karakters in te geven. Dit is zeker een stap in de goede richting, maar nog steeds ontoereikend aangezien wachtwoorden zoals ‘password’ nog altijd toegestaan zijn.
Veel gebruikers hebben de slechte gewoonte om dergelijke zwakke, veel gebruikte wachtwoorden te kiezen wanneer een systeem het toelaat. Lijsten met gekende wachtwoorden (gehackt uit andere systemen) circuleren op het internet en worden door hackers gebruikt om wachtwoorden te kraken. Een goed authenticatie systeem zou deze lijsten in zijn voordeel moeten gebruiken: indien een wachtwoord al ooit gelekt is bij een hack, kan dit niet meer gekozen worden door een gebruiker. Dit is slechts 1 van de mogelijke verbeteringen die Digitale Wachtkamer best zou doorvoeren. Als je hier meer over wil weten is dit artikel van de Australische security expert Troy Hunt een echte aanrader.