Every CVE Search/ Get API key

CVE-2026-42206

Roadiz OpenID Connect nonce generated but never validated — ID token replay attack

5.7 MediumFix available

Roadiz is a polymorphic content management system based on a node system. Prior to versions 2.3.43, 2.5.45, 2.6.31, and 2.7.18, the roadiz/openid package generates an OIDC nonce in OAuth2LinkGenerator::generate() and includes it in the authorization request sent to the identity provider, but never stores it and never validates it on the callback. The OpenIdJwtConfigurationFactory validation chain does not include a nonce constraint, and OpenIdAuthenticator::authenticate() never checks the nonce claim in the returned ID token against a stored value. This issue has been patched in versions 2.3.43, 2.5.45, 2.6.31, and 2.7.18.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
Low
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
High
Availability
None

Exploit likelihood

0.15%Up 0.1 points since May 9, 2026
90%50%10%1%

What each source reports

CVE List Score used 5.7

Roadiz OpenID Connect nonce generated but never validated — ID token replay attack

Roadiz is a polymorphic content management system based on a node system. Prior to versions 2.3.43, 2.5.45, 2.6.31, and 2.7.18, the roadiz/openid package generates an OIDC nonce in OAuth2LinkGenerator::generate() and includes it in the authorization request sent to the identity provider, but never stores it and never validates it on the callback. The OpenIdJwtConfigurationFactory validation chain does not include a nonce constraint, and OpenIdAuthenticator::authenticate() never checks the nonce claim in the returned ID token against a stored value. This issue has been patched in versions 2.3.43, 2.5.45, 2.6.31, and 2.7.18.

Record
CVE-2026-42206
CVSS 4.0
5.7 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:P
Weakness
CWE-345
Updated
2026-11-02
EUVDEUVD-2026-28837 5.7

Roadiz is a polymorphic content management system based on a node system. Prior to versions 2.3.43, 2.5.45, 2.6.31, and 2.7.18, the roadiz/openid package generates an OIDC nonce in OAuth2LinkGenerator::generate() and includes it in the authorization request sent to the identity provider, but never stores it and never validates it on the callback. The OpenIdJwtConfigurationFactory validation chain does not include a nonce constraint, and OpenIdAuthenticator::authenticate() never checks the nonce claim in the returned ID token against a stored value. This issue has been patched in versions 2.3.43, 2.5.45, 2.6.31, and 2.7.18.

Record
EUVD-2026-28837
CVSS 4.0
5.7 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:P
Updated
2026-11-02
GitHub AdvisoriesGHSA-3gx8-q682-38mx 5.7

OpenID Connect nonce generated but never validated — ID token replay attack

Summary

The roadiz/openid package generates an OIDC nonce in OAuth2LinkGenerator::generate() and includes it in the authorization request sent to the identity provider, but never stores it and never validates it on the callback. The OpenIdJwtConfigurationFactory validation chain does not include a nonce constraint, and OpenIdAuthenticator::authenticate() never checks the nonce claim in the returned ID token against a stored value.

Details

In src/OAuth2LinkGenerator.php, a nonce is created and sent to the IdP:

'nonce' => $this->tokenGenerator->generateToken(),

However, this value is neither stored in session, cache, nor any other persistent store.

In src/OpenIdJwtConfigurationFactory.php, the JWT validation constraints are:

  • LooseValidAt (expiry)
  • PermittedFor (audience)
  • IssuedBy (issuer)
  • HostedDomain (optional)
  • UserInfoEndpoint (optional)

No nonce constraint is present.

In src/Authentication/OpenIdAuthenticator.php, the authenticate() method validates the state CSRF token correctly (fixed in v2.7.10), but never retrieves a stored nonce or compares it against the nonce claim in the ID token.

PoC

  1. Obtain a valid ID token from a legitimate OIDC flow for a target user (e.g. via network interception, browser history leak, or referrer header exposure on a non-HTTPS redirect).
  2. Replay the ID token: Since the nonce in the token is never cross-checked against a client-stored value, the token passes all validation constraints as long as it has not expired.
  3. Result: An attacker can authenticate as the victim within the ID token's validity window.

Additionally, in an authorization code flow with multiple concurrent sessions, a malicious IdP or a compromised token endpoint could inject a token with a mismatched nonce, and the application would accept it silently.

Impact

  • ID token replay attacks: Valid but intercepted tokens can be reused for authentication within their validity period.
  • Token injection attacks: A malicious or compromised identity provider can inject tokens across sessions without detection.
  • Affects any Roadiz application using the roadiz/openid package with OpenID Connect SSO.

The OIDC Core 1.0 specification (Section 3.1.3.7) explicitly requires clients to verify the nonce claim if it was present in the authorization request.

Record
GHSA-3gx8-q682-38mx
CVSS 4.0
5.7 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:P
Weakness
CWE-345
Updated
2026-11-02
NVD 5.7

Roadiz is a polymorphic content management system based on a node system. Prior to versions 2.3.43, 2.5.45, 2.6.31, and 2.7.18, the roadiz/openid package generates an OIDC nonce in OAuth2LinkGenerator::generate() and includes it in the authorization request sent to the identity provider, but never stores it and never validates it on the callback. The OpenIdJwtConfigurationFactory validation chain does not include a nonce constraint, and OpenIdAuthenticator::authenticate() never checks the nonce claim in the returned ID token against a stored value. This issue has been patched in versions 2.3.43, 2.5.45, 2.6.31, and 2.7.18.

Record
CVE-2026-42206
CVSS 4.0
5.7 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Weakness
CWE-345
Updated
2026-11-02
OSV 5.7

Roadiz OpenID Connect nonce generated but never validated — ID token replay attack

Roadiz is a polymorphic content management system based on a node system. Prior to versions 2.3.43, 2.5.45, 2.6.31, and 2.7.18, the roadiz/openid package generates an OIDC nonce in OAuth2LinkGenerator::generate() and includes it in the authorization request sent to the identity provider, but never stores it and never validates it on the callback. The OpenIdJwtConfigurationFactory validation chain does not include a nonce constraint, and OpenIdAuthenticator::authenticate() never checks the nonce claim in the returned ID token against a stored value. This issue has been patched in versions 2.3.43, 2.5.45, 2.6.31, and 2.7.18.

Record
CVE-2026-42206
CVSS 4.0
5.7 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:P
Weakness
CWE-345
Updated
2026-11-02
OSVGHSA-3gx8-q682-38mx 5.7

OpenID Connect nonce generated but never validated — ID token replay attack

Summary

The roadiz/openid package generates an OIDC nonce in OAuth2LinkGenerator::generate() and includes it in the authorization request sent to the identity provider, but never stores it and never validates it on the callback. The OpenIdJwtConfigurationFactory validation chain does not include a nonce constraint, and OpenIdAuthenticator::authenticate() never checks the nonce claim in the returned ID token against a stored value.

Details

In src/OAuth2LinkGenerator.php, a nonce is created and sent to the IdP:

'nonce' => $this->tokenGenerator->generateToken(),

However, this value is neither stored in session, cache, nor any other persistent store.

In src/OpenIdJwtConfigurationFactory.php, the JWT validation constraints are:

  • LooseValidAt (expiry)
  • PermittedFor (audience)
  • IssuedBy (issuer)
  • HostedDomain (optional)
  • UserInfoEndpoint (optional)

No nonce constraint is present.

In src/Authentication/OpenIdAuthenticator.php, the authenticate() method validates the state CSRF token correctly (fixed in v2.7.10), but never retrieves a stored nonce or compares it against the nonce claim in the ID token.

PoC

  1. Obtain a valid ID token from a legitimate OIDC flow for a target user (e.g. via network interception, browser history leak, or referrer header exposure on a non-HTTPS redirect).
  2. Replay the ID token: Since the nonce in the token is never cross-checked against a client-stored value, the token passes all validation constraints as long as it has not expired.
  3. Result: An attacker can authenticate as the victim within the ID token's validity window.

Additionally, in an authorization code flow with multiple concurrent sessions, a malicious IdP or a compromised token endpoint could inject a token with a mismatched nonce, and the application would accept it silently.

Impact

  • ID token replay attacks: Valid but intercepted tokens can be reused for authentication within their validity period.
  • Token injection attacks: A malicious or compromised identity provider can inject tokens across sessions without detection.
  • Affects any Roadiz application using the roadiz/openid package with OpenID Connect SSO.

The OIDC Core 1.0 specification (Section 3.1.3.7) explicitly requires clients to verify the nonce claim if it was present in the authorization request.

Record
GHSA-3gx8-q682-38mx
CVSS 4.0
5.7 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:P
Weakness
CWE-345
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
roadiz/openid
Packagist
2.7.0 up to 2.7.18
2.7.18
roadiz/openid
Packagist
2.6.0 up to 2.6.31
2.6.31
roadiz/openid
Packagist
2.5.0 up to 2.5.45
2.5.45
roadiz/openid
Packagist
before 2.3.43
2.3.43
roadiz/openid
Packagist
2.7.0 up to 2.7.18, plus listed versions
v2.7.0v2.7.1v2.7.10v2.7.11v2.7.12
Show 13 moreShow less
v2.7.13v2.7.14v2.7.15v2.7.16v2.7.17v2.7.2v2.7.3v2.7.4v2.7.5v2.7.6v2.7.7v2.7.8v2.7.9
2.7.18
roadiz/openid
Packagist
2.6.0 up to 2.6.31, plus listed versions
v2.6.0v2.6.1v2.6.10v2.6.11v2.6.12
Show 26 moreShow less
v2.6.13v2.6.14v2.6.15v2.6.16v2.6.17v2.6.18v2.6.19v2.6.2v2.6.20v2.6.21v2.6.22v2.6.23v2.6.24v2.6.25v2.6.26v2.6.27v2.6.28v2.6.29v2.6.3v2.6.30v2.6.4v2.6.5v2.6.6v2.6.7v2.6.8v2.6.9
2.6.31
roadiz/openid
Packagist
2.5.0 up to 2.5.45, plus listed versions
v2.5.0v2.5.1v2.5.10v2.5.11v2.5.12
Show 40 moreShow less
v2.5.13v2.5.14v2.5.15v2.5.16v2.5.17v2.5.18v2.5.19v2.5.2v2.5.20v2.5.21v2.5.22v2.5.23v2.5.24v2.5.25v2.5.26v2.5.27v2.5.28v2.5.29v2.5.3v2.5.30v2.5.31v2.5.32v2.5.33v2.5.34v2.5.35v2.5.36v2.5.37v2.5.38v2.5.39v2.5.4v2.5.40v2.5.41v2.5.42v2.5.43v2.5.44v2.5.5v2.5.6v2.5.7v2.5.8v2.5.9
2.5.45
roadiz/openid
Packagist
before 2.3.43, plus listed versions
1.6.01.6.11.7.01.7.12.0.0
Show 45 moreShow less
2.0.12.0.22.0.32.0.4v2.1.0v2.1.1v2.1.10v2.1.11v2.1.12v2.1.13v2.1.14v2.1.15v2.1.16v2.1.17v2.1.18v2.1.19v2.1.2v2.1.20v2.1.21v2.1.22v2.1.23v2.1.24v2.1.25v2.1.26v2.1.27v2.1.28v2.1.29v2.1.3v2.1.30v2.1.31v2.1.32v2.1.33v2.1.34v2.1.35v2.1.36v2.1.37v2.1.38v2.1.39v2.1.4v2.1.40v2.1.41v2.1.42v2.1.43v2.1.44v2.1.45
2.3.43

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-42206 is a medium vulnerability (CVSS 5.7) in Roadiz Core-bundle-dev-app, published April 29, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.15%, the 4th percentile. Fixed in roadiz/openid 2.7.18.

References

This page doesn't list everything

Left out here: 107 versions. The JSON record has them.

MoveEnter Open