Hoe Knuz.nl het lekken van gegevens over 280.000 leden had kunnen voorkomen

Zojuist las ik een bericht op www.security.nl dat de datingsite www.knuz.nl persoonlijke gegevens lekt van 280.000 leden:

“Door een fout in de inlogprocedure waren de privégegevens van 280.000 leden van de gratis datingsite Knuz.nl voor enige tijd voor onbevoegden toegankelijk, zo heeft Security.nl na een tip ontdekt. Een bezoeker van de website die via zijn KPN Mobiel verbinding de pagina benaderde, kreeg het onderstaande adminscherm te zien. Hier zijn de e-mailadressen, IP-adressen, ongehashte wachtwoorden, nicknaam en profielgegevens van 280.000 ingeschreven leden te vinden.”

Dit is een interessante casus, aangezien door Knuz.nl een aantal fouten gemaakt worden, die – opgestapeld – vergaande gevolgen hebben. Dit incident had nooit mogen gebeuren, had eenvoudig kunnen worden voorkomen van schade had kunnen worden beperkt als een aantal beveiligingsprincipes waren toegepast.

Tip #1: Definieer administratorrechten als rol
Door bijvoorbeeld administratorrechten als rol te definiëren, en deze rol alleen aan gebruikers toe te wijzen wanneer ze deze nodig hebben. Nu lijkt het er sterk op dat bij Knuz.nl er maar één soort gebruiker is en dat er geen rollen gedefinieerd zijn.

Tip #2: Baseer administratorrechten nooit alleen op IP adres
Nu worden administratorrechten toebedeeld wanneer iemand het juiste IP adres heeft, nog erger, als iemands IP adres in een bepaald bereik zit. IP adres restrictie is goed, maar alleen in combinatie met het toewijzen van rollen aan gebruikers.

Tip #3: Sla wachtwoorden versleuteld op in database
Daarnaast had damage control kunnen worden toegepast door wachtwoorden niet in normale tekst op te slaan, maar in een versleutelde (gehashde) versie daarvan. Wanneer de database in verkeerde handen valt – wat hier dus het geval is – dan zijn in ieder geval de wachtwoorden alleen te achterhalen door heel veel computerkracht in te zetten. Mensen gebruiken vaak hetzelfde wachtwoord voor veel verschillende systemen, en die systemen zijn te hacken als wachtwoorden door kwaadwillenden worden buitgemaakt en door gebruikers worden hergebruikt.

Tip #4: Geef nooit wachtwoorden leesbaar weer op de website
Verder is het zeer discutabel om in een administratorinterface wachtwoorden van gebruikers weer te geven (zie screenshot onder). Behalve dat dit een zeer vertrouwelijk gegeven is, en klanten ervan uitgaan dat niemand dit te zien krijgt, levert dit ook nog eens een zeer ernstig beveiligingslek op. Wanneer deze website ook een Cross Site Scripting lek bevat (het kunnen injecteren van JavaScript), dan kunnen alle wachtwoorden worden uitgelezen via een gerichte aanval op de administrator.

Cross Site Scripting lekken zijn de meest voorkomende lekken in dynamische websites. Uit mijn ervaring met beveiligingsaudits op soortgelijke websites, kan ik zeggen dat deze website ongetwijfeld ook een dergelijk lek ergens heeft zitten.

Tip #5: Voorkomen is beter dan genezen
Dit waren zomaar een aantal tips dat dit bedrijf grote imagoschade (en mogelijke boetes!) had kunnen voorkomen.

About Sijmen Ruwhof

Independent IT Security Researcher / Ethical Hacker
This entry was posted in website security. Bookmark the permalink.

3 Responses to Hoe Knuz.nl het lekken van gegevens over 280.000 leden had kunnen voorkomen

  1. Yorick says:

    Beheerinterfaces horen sowieso niet via het internet benaderbaar te zijn (ik weet het; eerder regel dan uitzondering, maar toch…).

  2. Prof. dr. ir. Henk van Haagen says:

    De tips zijn niet meer dan logisch. Hoe bestaat het (dat denk ik dan als wiskundig hoogleraar) dat webmaster zo onnozel zijn. Hoe is dit wiskundig te verklaren?

    dr. ir. Henk van Haagen,
    Bijzonder hoogleraar Technische Wiskunde, TU Delft

Comments are closed.