---
id: CVE-2026-102414
title: >-
  pbkdf2 through 3.1.6 re-hashes passwords longer than the digest's block size
  on every iteration in its JavaScript fallback (lib/sync.js)
summary: >-
  pbkdf2 through 3.1.6 re-hashes passwords longer than the digest's block size
  on every iteration in its JavaScript fallback (lib/sync.js). A password longer
  than the block size (64 bytes, or 128 bytes for sha384 and sha512) is passed
  to H…
severity: low
cvss: 3.7
cvssVector: 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L'
cwe:
  - CWE-400
vendor: browserify
product: pbkdf2
affected:
  - pbkdf2 <= 3.1.6
published: '2026-09-29'
updated: '2026-09-30'
sourceUpdated: '2026-09-30T17:32:07.107'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-102414'
references:
  - url: 'https://github.com/browserify/pbkdf2/commit/493d8d8'
    label: 7ffcee3d-2c14-4c3e-b844-86c6a321a158
  - url: 'https://github.com/browserify/pbkdf2/issues/82'
    label: 7ffcee3d-2c14-4c3e-b844-86c6a321a158
  - url: >-
      https://github.com/browserify/pbkdf2/security/advisories/GHSA-477h-4r7f-fvrx
    label: 7ffcee3d-2c14-4c3e-b844-86c6a321a158
  - url: >-
      https://github.com/browserify/pbkdf2/security/advisories/GHSA-477h-4r7f-fvrx
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-102414'
  - url: >-
      https://github.com/browserify/pbkdf2/commit/493d8d8ff437f680338bf7397398fda884ad462e
  - url: 'https://github.com/advisories/GHSA-477h-4r7f-fvrx'
tags:
  - nvd
  - cve.org
  - exploit-available
  - ghsa
  - npm
epss: 0.00345
epssPercentile: 0.27847
exploitAvailable: true
ssvc:
  exploitation: poc
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-09-30T15:16:42.833185Z'
ingestedAt: '2026-09-29T04:27:15.486Z'
aliases:
  - GHSA-477h-4r7f-fvrx
ecosystem: npm
patched:
  - pbkdf2 3.1.7
---

## Overview

pbkdf2 through 3.1.6 re-hashes passwords longer than the digest's block size on every iteration in its JavaScript fallback (lib/sync.js). A password longer than the block size (64 bytes, or 128 bytes for sha384 and sha512) is passed to HMAC as the key on every iteration, and HMAC hashes such keys in full each time. Cost is therefore O(iterations × password length), and a long password can block the event loop. The fallback is used by pbkdf2Sync and pbkdf2 on Node.js before 0.12, on Bun (1.0.0 through 1.1.34, and 1.2.6 and later), and on Deno 2.9.0 and later, because their native pbkdf2Sync fails the library's feature check. It is also used when lib/sync.js is imported directly. Node.js 0.12 and later, and browser builds (which use lib/sync-browser.js), are not affected. Applications that enforce a reasonable maximum password length are not meaningfully affected.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Package advisory (CVE-2026-102414)

Affected packages:

- `pbkdf2 <= 3.1.6`

Patched in:

- `pbkdf2 3.1.7`

Source: https://github.com/advisories/GHSA-477h-4r7f-fvrx
