pbkdf2 negeert stilletjes Uint8Array-invoer en retourneert statische sleutels
Platform
nodejs
Component
pbkdf2
Opgelost in
3.1.3
### Samenvatting Op historische, maar als ondersteund verklaarde Node.js-versies (0.12-2.x), negeert pbkdf2 stilletjes Uint8Array-invoer Dit heeft alleen invloed op Node.js <3.0.0, maar `pbkdf2` beweert: * Node.js [>= 0.12](https://github.com/browserify/pbkdf2/blob/v3.1.2/package.json#L62) te ondersteunen (en er lijkt een voortdurende inspanning in deze repo te zijn om dat te onderhouden) * `Uint8Array`-invoer te ondersteunen (invoer wordt getypecheckt tegen Uint8Array, en het foutbericht bevat bijvoorbeeld "Password must be a string, a Buffer, a typed array or a DataView" ### Details De fout zit in de `toBuffer`-methode Dit beveiligingslek heeft het zelfs tot tests gehaald: https://github.com/browserify/pbkdf2/commit/eb9f97a66ed83836bebc4ff563a1588248708501 Daar is `resultsOld` (waar mismatch `results`) gewoon ongeldige uitvoer gegenereerd van een leeg wachtwoord/zout in plaats van het geleverde wachtwoord/zout ### PoC Op Node.js/io.js < 3.0.0 ```console > require('pbkdf2').pbkdf2Sync(new Uint8Array([1,2,3]), new Uint8Array([1,3,4]), 1024, 32, 'sha256') <Buffer 21 53 cd 5b a5 f0 15 39 2f 68 e2 40 8b 21 ba ca 0e dc 7b 20 d5 45 a4 8a ea b5 95 9f f0 be bf 66> // Maar dat is gewoon een hash van lege data met een leeg wachtwoord: > require('pbkdf2').pbkdf2Sync('', '', 1024,
Hoe te verhelpen
Geen officiële patch beschikbaar. Zoek naar tijdelijke oplossingen of monitor updates.
Bewaak uw afhankelijkheden automatisch
Ontvang meldingen wanneer nieuwe kwetsbaarheden uw projecten beïnvloeden.
Gratis beginnen