image

Lang wachtwoord kon DoS op bepaalde servers veroorzaken

dinsdag 17 september 2013, 17:51 door Redactie, 1 reacties

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.

Rekenkracht

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.

Reacties (1)
18-09-2013, 17:45 door 0101 - Bijgewerkt: 18-09-2013, 17:46
De manier waarop Django PBKDF2 gebruikt om de hash te laten berekenen kan de nodige rekenkracht van de server vragen.
En dat is ook precies het doel van PBKDF2: door een password herhaaldelijk met salt te hashen kost het veel rekenkracht om de uiteindelijke hash te krijgen. Als een aanvaller de hash in handen zou krijgen, zou het teveel rekenkracht kosten om het bijbehorende wachtwoord via brute-force of dictionaryaanvallen met zeer veel woorden te achterhalen, omdat hij voor elk mogelijk wachtwoord die rekenkrachtintensieve PBKDF2-functie moet gebruiken.
Als elke gebruiker zoals het hoort een unieke salt heeft zal hij bovendien bruteforce / dictionary aanvallen voor elke opgeslagen wachtwoordhash moeten herhalen, waardoor alleen de zwakste wachtwoorden achterhaald kunnen worden.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.