Safeguard
Vulnerability Analysis•

CVE-2023-52428: High PBKDF2 DoS in Nimbus JOSE+JWT

CVE-2023-52428 is a high (7.5) denial of service in Nimbus JOSE+JWT before 9.37.2 from a large JWE p2c value. Upgrade to 9.37.2 or later and pin it.

Safeguard Security Team
3 min read

CVE-2023-52428 is a high severity (7.5) denial of service in Connect2id Nimbus JOSE+JWT before 9.37.2. A large p2c header value, which is the iteration count for password based JWE decryption, makes the PBKDF2 component consume excessive resources. Upgrade to 9.37.2 or later.

What's affected

NVD lists Nimbus JOSE+JWT before 9.37.2, so 9.37.2 is the fixed version according to the record. The record references a source commit, 3b3b77e, and the project issue 526. The Bitbucket page for the issue returned an error when I tried to open it, so I could not read the maintainers' own notes.

The affected component is PasswordBasedDecrypter, which handles JWE tokens that use password based encryption (PBES2).

Weakness class: CWE-770.

The library is a Java dependency, often pulled in indirectly by OAuth, OpenID Connect and Spring Security components, so you may be running it without a direct dependency.

How to check if you're exposed

Find the version in your dependency tree. With Maven:

mvn dependency:tree -Dincludes=com.nimbusds:nimbus-jose-jwt

With Gradle:

gradle dependencies | grep nimbus-jose-jwt

Anything before 9.37.2 is in scope. Also look for shaded copies inside fat JARs. You can run a free in-browser dependency scan at gold.safeguard.sh/scan to see which of your projects pull this component in, directly or through another package.

What to do now

  1. Upgrade nimbus-jose-jwt to 9.37.2 or later, directly or by upgrading the framework that brings it in.
  2. Pin the version in your build file if a transitive dependency holds an older one.
  3. If you do not use password based JWE, do not accept it. Allow only the algorithms you need when you build the decryption path.
  4. Set limits on token size and request rate at the edge.

Why it matters

PBKDF2 is deliberately slow. A JWE header chooses its own iteration count through the p2c field, so a sender who controls the token can ask for an enormous count and make the server grind. The library did not limit that value before 9.37.2, according to the CVE description.

The general lesson is to treat cost parameters inside untrusted tokens as input to validate. The record shows the CVE is not in the CISA Known Exploited Vulnerabilities catalog.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Which version fixes CVE-2023-52428?

Nimbus JOSE+JWT 9.37.2, according to the NVD description of affected versions.

Am I affected if I only verify signed JWTs?

The flaw is in password based JWE decryption. If your code never decrypts PBES2 tokens it is not exercised, but upgrade anyway, since the library may be reachable from a framework.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.