CVE-2025-6545
NoneCVSS
—
EPSS
0.4%
Published
Jun 23, 2025
CISA due date
—
Cloudanix analysis
Some applications may mistakenly accept forged security checks if they use an affected password-based cryptography library and have not been updated.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Data Tampering
- Component
- Library
- Class
- Cryptographic Weakness
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw is an improper input validation issue in the browserify/pbkdf2 package, affecting versions 3.0.10 through 3.1.2, associated with lib/to-buffer.js. When an application passes attacker-controlled or malformed values into pbkdf2-based cryptographic workflows, ambiguous or invalid input may be converted and accepted in a way that weakens signature or key-validation logic. In affected use cases, this can allow signature spoofing or acceptance of data that should fail integrity validation. The CVSS vector indicates network reachability, low attack complexity, no privileges, and no user interaction, but with a required attack condition: the vulnerable library must be used in a security-sensitive path such as token validation, request signing, password-derived key generation, or message authentication.
Why it matters to the business
Applications that rely on the affected pbkdf2 versions for authentication, request signing, token validation, or integrity checks may incorrectly trust forged or tampered data. The practical business risk is unauthorized access, fraudulent transactions or API calls, bypass of integrity controls, and loss of trust in cryptographic protections. Although EPSS is low at 0.00359, there is no known CISA KEV listing, no known ransomware association, and no reported mature public exploitation in the provided data, the issue has been public for over a year, so vulnerable dependencies should be treated as patch debt in any externally exposed or authentication-related application.
How an attack unfolds
An attacker first identifies an application feature that uses the affected pbkdf2 implementation in a security decision, such as verifying a signed token, deriving a key from supplied material, validating a request signature, or checking integrity of a message. The attacker then supplies specially formed input that reaches the vulnerable conversion routine in lib/to-buffer.js. Because the vulnerable code does not properly validate the input before converting it for cryptographic use, the application may derive or compare cryptographic material against an unintended byte representation. If the surrounding application treats the result as authoritative, the attacker can cause a forged signature or malformed authenticated value to be accepted without needing an account or user interaction. Exploitability is application-dependent: deployments that include the vulnerable package but do not expose attacker-controlled inputs to pbkdf2-backed trust decisions may have limited direct exposure.
How to fix it
Upgrade or patch all affected uses of browserify/pbkdf2 versions 3.0.10 through 3.1.2. For source consumers, use a version that includes commit 9699045c37a07f8319cfb8d44e2ff4252d7a7078 or later. If consuming through npm or a transitive dependency, update the direct dependency, regenerate lockfiles, and verify that the resolved pbkdf2 package is no longer in the affected range. Where immediate upgrade is not possible, restrict untrusted input from reaching pbkdf2-related code paths, add strict type and length validation before cryptographic operations, reject non-Buffer/non-string inputs unless explicitly supported, and add application-level checks that fail closed on malformed cryptographic material. For Mageia 6 packages listed in the advisory data, update to the fixed package versions: kernel and kernel-userspace-headers 4.14.100-1.mga6, kmod-vboxadditions and kmod-virtualbox 5.2.24-4.mga6, kmod-xtables-addons 2.13-78.mga6, wireguard-tools 0.0.20190123-1.mga6, and ndiswrapper 1.62-1.mga6. After patching any authentication or signing service, consider invalidating high-risk sessions, rotating affected derived signing material where feasible, and reissuing tokens if suspicious activity is found.
How to confirm the fix worked
Confirm exposure by inventorying dependencies and resolved lockfiles for pbkdf2 versions 3.0.10 through 3.1.2. Check package-lock.json, npm-shrinkwrap.json, yarn.lock, pnpm-lock.yaml, bundled JavaScript assets, container images, and software composition analysis results. Confirm remediation by verifying the resolved package version is outside the affected range or that the source includes commit 9699045c37a07f8319cfb8d44e2ff4252d7a7078 or later. For Mageia systems, validate installed package versions with the system package manager and confirm they match or exceed the fixed versions listed in the advisory. Functionally test security-sensitive flows that use pbkdf2 by submitting malformed, non-canonical, oversized, null, object-like, or unexpected input types and verifying the application rejects them before cryptographic comparison. Regression tests should assert fail-closed behavior for invalid signatures, invalid tokens, and malformed key-derivation inputs.
Typical attack path
- Identify a web application, API, client-side bundle, or service that includes browserify/pbkdf2 version 3.0.10 through 3.1.2.
- Determine whether the application uses pbkdf2-derived values in authentication, request signing, token validation, password reset flows, encrypted payload handling, or message integrity checks.
- Send crafted inputs to the feature that are processed by the vulnerable lib/to-buffer.js conversion path.
- Trigger ambiguous or improperly validated conversion of attacker-controlled data before cryptographic verification or key derivation.
- Use the resulting validation weakness to cause a forged or tampered value to be accepted as authentic.
- Leverage the accepted forged value to access protected functionality, impersonate a user or service, or modify data that should have been integrity-protected.
How to detect it
There are no universal exploitation artifacts for this library-level cryptographic weakness; evidence depends on the application using the affected code. Start with exposure detection by searching dependency manifests and deployed artifacts for pbkdf2 versions 3.0.10 through 3.1.2 or source trees containing lib/to-buffer.js from the affected package. For possible exploitation, review application, API gateway, authentication, identity, and web access logs for malformed or unusual signed tokens, request signatures, password-reset tokens, authorization headers, or cryptographic parameters that nevertheless resulted in successful authentication or authorization. Look for clusters of failed signature, token, or MAC validation events followed by successful access from the same IP address, user agent, session, API client, or target account. Investigate successful privileged actions that occurred immediately after invalid-token errors, unusually encoded payloads, oversized inputs, null-like values, object-like serialized values, or non-canonical base64/hex strings. In JavaScript services, inspect error telemetry for TypeError, RangeError, buffer conversion errors, unexpected input type messages, or validation exceptions near pbkdf2, crypto, token, or signature verification code. If client-side bundles include the vulnerable library, inspect web telemetry for unexpected token-generation or signing behavior, but treat server-side trust decisions as the primary risk.
What your security team should do
- Prioritize patching applications where pbkdf2 is used in authentication, session/token validation, request signing, password reset, API authentication, or message integrity enforcement.
- Run dependency inventory across source repositories, lockfiles, build artifacts, containers, and deployed bundles to identify browserify/pbkdf2 versions 3.0.10 through 3.1.2.
- Upgrade to a fixed version or source revision containing commit 9699045c37a07f8319cfb8d44e2ff4252d7a7078, then rebuild and redeploy affected services.
- Add strict input validation around cryptographic code paths so unexpected types, encodings, lengths, and malformed values are rejected before pbkdf2 or signature-verification logic is reached.
- Review authentication and signing logs for anomalous successful validations, especially malformed tokens, unusual encodings, repeated signature failures followed by success, and access from unfamiliar sources.
- If exploitation is suspected, invalidate active sessions and rotate relevant signing secrets, derived keys, API tokens, or credentials according to application design.
- Track this as moderate urgency where the package is present but not used in trust decisions, and higher urgency for externally reachable services using the affected library in security-sensitive workflows.
The record
Improper Input Validation vulnerability in pbkdf2 allows Signature Spoofing by Improper Validation. This vulnerability is associated with program files lib/to-buffer.Js. This issue affects pbkdf2: from 3.0.10 through 3.1.2.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| npm | pbkdf2 | 3.0.10 | 3.1.3 |
| Debian:11 | node-pbkdf2 | 0 | No fix |
| Debian:12 | node-pbkdf2 | 0 | No fix |
| Debian:13 | node-pbkdf2 | 0 | No fix |
| Debian:14 | node-pbkdf2 | 0 | 3.1.3+~3.1.2-1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | python-pluggy | 0 | 1.5.0-150400.14.10.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | python-pytest | 0 | 8.3.5-150400.3.9.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | python-pytest-cov | 0 | 6.2.1-150400.12.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | python-pytest-mock | 0 | 3.14.0-150400.13.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | python-pluggy | 0 | 1.5.0-150400.14.10.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | python-pytest | 0 | 8.3.5-150400.3.9.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | python-pytest-cov | 0 | 6.2.1-150400.12.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | python-pytest-mock | 0 | 3.14.0-150400.13.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | python-pluggy | 0 | 1.5.0-150400.14.10.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | python-pytest | 0 | 8.3.5-150400.3.9.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | python-pytest-cov | 0 | 6.2.1-150400.12.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | python-pytest-mock | 0 | 3.14.0-150400.13.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | python-pluggy | 0 | 1.5.0-150400.14.10.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | python-pytest | 0 | 8.3.5-150400.3.9.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | python-pytest-cov | 0 | 6.2.1-150400.12.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | python-pytest-mock | 0 | 3.14.0-150400.13.6.1 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP6 | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP4 | aws-cli | 0 | 1.33.26-150400.34.7.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP4 | python-boto3 | 0 | 1.34.138-150400.27.7.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP4 | python-botocore | 0 | 1.34.144-150400.41.7.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP5 | aws-cli | 0 | 1.33.26-150400.34.7.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP5 | python-boto3 | 0 | 1.34.138-150400.27.7.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP5 | python-botocore | 0 | 1.34.144-150400.41.7.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | aws-cli | 0 | 1.33.26-150400.34.7.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | python-boto3 | 0 | 1.34.138-150400.27.7.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | python-botocore | 0 | 1.34.144-150400.41.7.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP7 | aws-cli | 0 | 1.33.26-150400.34.7.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP6 | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP6 | python-pluggy | 0 | 1.5.0-150400.14.10.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP6 | python-pytest | 0 | 8.3.5-150400.3.9.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP6 | python-pytest-cov | 0 | 6.2.1-150400.12.6.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP6 | python-pytest-mock | 0 | 3.14.0-150400.13.6.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP7 | python-boto3 | 0 | 1.34.138-150400.27.7.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP7 | python-botocore | 0 | 1.34.144-150400.41.7.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP7 | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP7 | python-pluggy | 0 | 1.5.0-150400.14.10.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP7 | python-pytest | 0 | 8.3.5-150400.3.9.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP7 | python-pytest-cov | 0 | 6.2.1-150400.12.6.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP7 | python-pytest-mock | 0 | 3.14.0-150400.13.6.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | python-pluggy | 0 | 1.5.0-150400.14.10.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | python-pytest | 0 | 8.3.5-150400.3.9.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | python-pytest-cov | 0 | 6.2.1-150400.12.6.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | python-pytest-mock | 0 | 3.14.0-150400.13.6.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | python-pluggy | 0 | 1.5.0-150400.14.10.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | python-pytest | 0 | 8.3.5-150400.3.9.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | python-pytest-cov | 0 | 6.2.1-150400.12.6.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | python-pytest-mock | 0 | 3.14.0-150400.13.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | python-pluggy | 0 | 1.5.0-150400.14.10.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | python-pytest | 0 | 8.3.5-150400.3.9.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | python-pytest-cov | 0 | 6.2.1-150400.12.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | python-pytest-mock | 0 | 3.14.0-150400.13.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | python-pluggy | 0 | 1.5.0-150400.14.10.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | python-pytest | 0 | 8.3.5-150400.3.9.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | python-pytest-cov | 0 | 6.2.1-150400.12.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | python-pytest-mock | 0 | 3.14.0-150400.13.6.1 |
| openSUSE:Leap 15.6 | aws-cli | 0 | 1.33.26-150400.34.7.1 |
| openSUSE:Leap 15.6 | python-boto3 | 0 | 1.34.138-150400.27.7.1 |
| openSUSE:Leap 15.6 | python-botocore | 0 | 1.34.144-150400.41.7.1 |
| openSUSE:Leap 15.6 | python-coverage | 0 | 7.6.10-150400.12.6.1 |
| openSUSE:Leap 15.6 | python-flaky | 0 | 3.8.1-150400.14.6.1 |
| openSUSE:Leap 15.6 | python-pluggy | 0 | 1.5.0-150400.14.10.1 |
| openSUSE:Leap 15.6 | python-pytest | 0 | 8.3.5-150400.3.9.1 |
| openSUSE:Leap 15.6 | python-pytest-cov | 0 | 6.2.1-150400.12.6.1 |
| openSUSE:Leap 15.6 | python-pytest-mock | 0 | 3.14.0-150400.13.6.1 |
| openSUSE:Tumbleweed | python-pytest-html | 0 | 4.1.1-6.1 |
| openSUSE:Tumbleweed | velociraptor | 0 | 0.7.0.4.git185.a5708584-2.1 |
Related vulnerabilities
- CVE-2025-6547 Improper Input Validation vulnerability in pbkdf2 allows Signature Spoofing by Improper… Also affects pbkdf2
- CVE-2025-5889 A vulnerability was found in juliangruber brace-expansion up to 1.1.11/2.0.1/3.0.0/4.0.0. Also affects python-coverage
- CVE-2024-21538 Versions of the package cross-spawn before 6.0.6, from 7.0.0 and before 7.0.5 are… Also affects python-coverage
- CVE-2024-48948 The Elliptic package 6.5.7 for Node.js, in its for ECDSA implementation, does not… Also affects python-coverage
- CVE-2024-48949 The verify function in lib/elliptic/eddsa/index.js in the Elliptic package before 6.5.6… Also affects python-coverage
- CVE-2026-13311 shell-quote prior to 1.8.5 finalizes parsed tokens in parse() using… Also affects python-pytest-html
- CVE-2026-53550 js-yaml is a JavaScript YAML parser and dumper. Also affects python-pytest-html
- CVE-2026-9277 shell-quote's `quote()` function did not validate object-token inputs against the… Also affects python-pytest-html