Internetgebruikers krijgen over het algemeen het advies om lange wachtwoorden te kiezen, aangezien dit extra bescherming biedt, maar in het geval van de web-ontwikkelomgeving Django kan het juist voor problemen zorgen. Django is een framework voor het ontwikkelen van flexibele webapplicaties.
Een kwetsbaarheid in het authenticatiegedeelte van Django maakt het mogelijk om een Denial of Service-aanval op servers uit te voeren. Voor het hashen van wachtwoorden gebruikt Django het PBKDF2 (Password-Based Key Derivation Function 2) algoritme.
Zodra een gebruiker tijdens de registratie op een met Django gemaakte website een wachtwoord opgeeft, wordt PBKDF2 gebruikt om een hash van het wachtwoord te maken, waarna de hash in de database wordt opgeslagen. De volgende keer dat de gebruiker inlogt wordt er weer een hash van het opgegeven wachtwoord gemaakt en vergeleken met de hash in de database.
De manier waarop Django PBKDF2 gebruikt om de hash te laten berekenen kan de nodige rekenkracht van de server vragen. Het grootste probleem is dat het framework geen limiet stelt aan de lengte van het wachtwoord dat de gebruiker tijdens het inloggen opgeeft. Een aanvaller kan daardoor een gigantisch lang wachtwoord opgeven waar Django vervolgens een zeer zware hash-berekening voor gaat uitvoeren om te controleren of de gebruiker wel het juiste wachtwoord heeft opgegeven.
Een wachtwoord van één megabyte groot zorgt ervoor dat de server ongeveer een berekening van één minuut moet uitvoeren. Door het herhaaldelijk opgeven van lange wachtwoorden is het daarom mogelijk een Denial of Service te veroorzaken.
Aangezien het probleem openbaar was gemaakt zonder dit aan het Django-ontwikkelteam te melden, is er nu in alle haast een beveiligingsupdate uitgebracht die het probleem verhelpt. Beheerders krijgen het advies de update zo snel als mogelijk te installeren.
Deze posting is gelocked. Reageren is niet meer mogelijk.