Potential Security Misconfiguration when Using withIssuerLocation

MEDIUM | APRIL 20, 2026 | CVE-2026-22748

Description

When an application configures JWT decoding with NimbusJwtDecoder or NimbusReactiveJwtDecoder, it must configure an OAuth2TokenValidator<Jwt> separately, for example by calling setJwtValidator.

This is easy to miss when using NimbusJwtDecoder#withIssuerLocation or NimbusReactiveJwtDecoder#withIssuerLocation, which may be interpreted as adding issuer validation automatically.

Recent maintenance versions of NimbusJwtDecoder#withIssuerLocation and NimbusReactiveJwtDecoder#withIssuerLocation now add issuer validation by default.

Affected Spring Products and Versions

Spring Security:

  • 7.0.0 - 7.0.4
  • 6.5.0 - 6.5.9
  • 6.4.0 - 6.4.14
  • 6.3.14 and earlier

Mitigation

Users of affected versions should upgrade to the corresponding fixed version.
Fix versionAvailability
7.0.5OSS
6.5.10OSS
6.4.15Enterprise Support Only
6.3.15Enterprise Support Only

Note that if this upgrade causes you trouble due to unwanted issuer validation, you can change it to the earlier default in the following way:

@Bean
JwtDecoder jwtDecoder() {
    String issuer = "https://issuer.example.org";
    NimbusJwtDecoder jwtDecoder = NimbusJwtDecoder.withIssuerLocation(issuer)
        // ... other configurations
        .build();
    jwtDecoder.setOAuth2TokenValidator(JwtValidators.createDefaults()); // set to the non-issuer default validator
    return jwtDecoder;
}

Credit

The issue was identified and responsibly reported by Daniel Seiler.

History

  • 2026-04-20: Initial vulnerability report published.

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all