De All-In-One Security-plugin voor WordPress hield wachtwoorden van gebruikers bij in een plaintext-database die op de koop toe toegankelijk was voor beheerders.
Waarom zou je wachtwoorden omzetten naar gezouten hashes, en enkel die in beveiligde databases gebruiken, wanneer je logingegevens ook als tekst kan noteren? Er zijn vele goede redenen, maar geen daarvan kon All-In-One Security (AIOS) overtuigen. Dat is een beveiligingsplugin voor WordPress die geïnstalleerd staat op meer dan één miljoen websites.
Platte tekst
AIOS maakt het mogelijk voor een website om gebruikers te laten inloggen. De plugin moet dus met wachtwoorden van die gebruikers omgaan. De ontwikkelaars vonden er niet beter op dan die wachtwoorden als platte tekst in een database te bewaren. Beheerders van de site waarop de plugin draait, hebben toegang tot die database.
Een beheerder, of een aanvaller die de logingegevens van een beheerder kan bemachtigen, krijgt zo toegang tot die wachtwoorden. AIOS maakt zich sterk dat de bug niet zo’n ramp is, aangezien enkel beheerders met hoge rechten toegang hebben tot de database. Dat is naast de kwestie, aangezien decennia aan bugs en hacks getoond hebben dat aanvallers geregeld toegang krijgen tot systemen. Databases met wachtwoorden worden op gezette tijdstippen gestolen.
Gezouten hash
Doorgaans is dat niet erg. Opslag van wachtwoorden is geen complex euvel waarvoor de correcte oplossing nog ter discussie staat. De correcte manier om een wachtwoord op te slaan, is om het niet op te slaan. Geef je je wachtwoord in, dan wordt dat via een cryptografisch hash-algoritme omgezet naar een hexadecimale code. Dat algoritme werkt maar in één richting: het wachtwoord naar de code omzetten is eenvoudig, via de code het wachtwoord ontrafelen is haast onmogelijk.
Haast onmogelijk, maar niet helemaal onmogelijk: om helemaal veilig te zijn, wordt de hash gekruid. Een salted hash bevat nog wat extra willekeurige informatie die het nog moeilijker maakt om wachtwoorden te kraken. Wanneer je inlogt op een site, wordt je wachtwoord meteen door het algoritme gehaald en vergeleken met de hash in de database. Je wachtwoord wordt uit veiligheidsoverwegingen nooit bewaard. Een gestolen database met salted hashes is vandaag virtueel waardeloos voor hackers. Enkel te korte wachtwoorden kunnen eventueel nog wel achterhaald worden.
Niet mee met best practices
AIOS heeft die memo niet gekregen. Wachtwoorden onversleuteld en leesbaar opslaan is een pijnlijke faux-pas en eigenlijk geen bug, maar een groteske vorm van nalatigheid. AIOS heeft intussen een update van zijn plugin gelanceerd die ervoor zorgt dat wachtwoorden niet meer leesbaar in een toegankelijke database terechtkomen.
Het is maar de vraag in welke mate AIOS intussen wel mee is met de recentste beveiligingsinzichten. Het bedrijf geeft immers nog enkele tips mee, en suggereert terecht dat je ervoor zorgt dat de AIOS-plugin steeds up to date is, en 2FA geactiveerd is voor WordPress en andere accounts. We lezen echter ook de tip om je wachtwoord geregeld te veranderen. Dat is een compleet achterhaalde praktijk, waarvan onderzoek heeft aangewezen dat die tot slechtere wachtwoorden en minder beveiligde accounts leidt.
Je wachtwoord veranderen na een mogelijks beveiligingslek, zoals wanneer je het toevertrouwde aan AIOS dat het vervolgens in een database noteerde, is natuurlijk wel een goed idee.