CVE-2026-45069: Symfony OidcTokenHandler insufficient JWT claim verification

CVE-2026-45069 · Severity: medium · CVSS 4 · Published 2026-07-14

Symfony is a popular PHP framework used to build web applications. A vulnerability in its OpenID Connect (OIDC) component allows the system to accept security tokens that are missing critical safety checks, such as expiration dates or sender identity. This could allow an attacker to use expired or unauthorized tokens to gain access to user accounts or protected data.

Technologies: symfony/security-http (Packagist), symfony/symfony (Packagist), Symfony Security HTTP. Vendors: Packagist, Symfony.

Quick answers

Is CVE-2026-45069 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-45069 being exploited in the wild.
How severe is CVE-2026-45069?
Medium severity, with a CVSS score of 4, published 14 July 2026.
Which products and versions are affected?
symfony/security-http (Packagist) ECOSYSTEM:introduced=6.3.0,fixed=6.4.40; symfony/symfony (Packagist) ECOSYSTEM:introduced=6.3.0,fixed=6.4.40.
Is there a fix for CVE-2026-45069?
Yes. symfony/security-http (Packagist): upgrade to 6.4.40 or later; symfony/symfony (Packagist): upgrade to 6.4.40 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-45069 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-45069?
Check whether you run symfony/security-http (Packagist), symfony/symfony (Packagist) or Symfony Security HTTP at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • symfony/security-http (Packagist): upgrade to 6.4.40 or later
    composer require symfony/security-http:^6.4.40
  • symfony/symfony (Packagist): upgrade to 6.4.40 or later
    composer require symfony/symfony:^6.4.40

Technical details

The OidcTokenHandler::verifyClaims() method in Symfony's security-http component fails to pass the $mandatoryClaims argument to the ClaimCheckerManager::check() method. While audience (aud), issuer (iss), and expiry (exp) checkers are registered, the underlying library only validates claims that are present in the token. Consequently, a validly signed JWT that omits these mandatory claims will pass verification instead of being rejected. This allows for the use of tokens that have expired or were intended for different audiences. The issue is fixed in versions 6.4.40, 7.4.12, and 8.0.12 by explicitly passing the list of mandatory claims during verification.

Affected products

  • Symfony symfony/security-http >= 6.3.0, < 6.4.40; >= 7.4.0, < 7.4.12; >= 8.0.0, < 8.0.12
  • Symfony symfony/symfony >= 6.3.0, < 6.4.40; >= 7.4.0, < 7.4.12; >= 8.0.0, < 8.0.12

Identifiers

  • CVE-2026-45069
  • GHSA-29fc-p6c4-24cg

Timeline

  • 2026-05-20: patched: Fixed versions 6.4.40, 7.4.12, and 8.0.12 released.
  • 2026-05-20: advisory: GitHub Security Advisory GHSA-29fc-p6c4-24cg published.
  • 2026-07-14: disclosed: CVE-2026-45069 published to NVD.

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.