Skip to content

← Public intelligence

npm package

pbkdf2

Open actionable advisories and recorded vendor fixes. This public package view has no inventory attached and cannot establish whether your deployment is affected. A vendor fix never resolves your finding; verify your installed version and the source guidance.

Open advisories

3 actionable advisories, newest first. Withdrawn advisories and news are excluded. Coverage is partial.

  1. Medium, CVSS 6.3npmAmendedPublished

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

    CVE-2026-102414 · GHSA-477h-4r7f-fvrx

    Affected
    • npm pbkdf2 <= 3.1.6
    Fixed in
    3.1.7· Vendor fix available
    Issue
    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 Impact DoS

    Recommended action: Upgrade to 3.1.7 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:github.com (1)osv.dev (2)Source checked Evidence →
  2. Critical, CVSS 9.1npmAmendedPublished

    pbkdf2 silently disregards Uint8Array input, returning static keys

    CVE-2025-6547 · GHSA-v62p-rq8g-8h59

    Affected
    • npm pbkdf2 >= 1.0.0, <= 3.1.2
    Fixed in
    3.1.3· Vendor fix available
    Issue
    On historic but declared as supported Node.js versions (0.12-2.x), pbkdf2 silently disregards Uint8Array input This only affects Node.js <3.0.0, but pbkdf2 claims to: Support Node.js = 0.12 (and there seems to be ongoing effort in this repo to maintain that) Support Uint8Array input (input is typechecked against Uint8Array, and the error message includes e.g. "Password must be a string, a Buffer, a typed array or a DataView" Details The error is in toBuffer method This vulnerability somehow even made it to tests: https://github.com/browserify/pbkdf2/commit/eb9f97a66ed83836bebc4ff563a1588248708501 There, resultsOld (where mismatch results) are just invalid output generated from empty password/salt instead of the supplied one PoC On Node.js/io.js < 3.0.0 Impact Static hashes being outputted and used as keys/passwords can completely undermine security That said, no one should be using those Node.js versions anywhere now, so I would recommend to just drop them This lib should not…

    Recommended action: Upgrade to 3.1.3 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:osv.dev (1)github.com (2)Source checked Evidence →
  3. Critical, CVSS 9.1npmAmendedPublished

    pbkdf2 returns predictable uninitialized/zero-filled memory for non-normalized or unimplemented algos

    CVE-2025-6545 · GHSA-h7cp-r72f-jxh6

    Affected
    • npm pbkdf2 >= 3.0.10, <= 3.1.2
    Fixed in
    3.1.3· Vendor fix available
    Issue
    This affects both: 1. Unsupported algos (e.g. sha3-256 / sha3-512 / sha512-256) 2. Supported but non-normalized algos (e.g. Sha256 / Sha512 / SHA1 / sha-1 / sha-256 / sha-512) All of those work correctly in Node.js, but this polyfill silently returns highly predictable ouput Under Node.js (only with pbkdf2/browser import, unlikely) / Bun (pbkdf2 top-level import is affected), the memory is not zero-filled but is uninitialized, as Buffer.allocUnsafe is used Under browsers, it just returns zero-filled buffers (Which is also critical, those are completely unacceptable as kdf output and ruin security) Were you affected? The full list of arguments that were not affected were literal: 'md5' 'sha1' 'sha224' 'sha256' 'sha384' 'sha512' 'rmd160' 'ripemd160' Any other arguments, e.g. representation variations of the above ones like 'SHA-1'/'sha-256'/'SHA512' or different algos like 'sha3-512'/'blake2b512', while supported on Node.js crypto module, returned predictable output on pbkdf2…

    Recommended action: Upgrade to 3.1.3 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.

    Sources:osv.dev (1)github.com (2)Source checked Evidence →