Read the docs
TI-2026-85905 Aliases CVE-2026-123746

Programmatic logins in Symfony skip post-authentication user checks

Priority LOW 12CWE-288Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
None
Attack complexity
Low
Attack requirements
Present
Impact type
Security bypass
Confidentiality · integrity · availability
Low · Low · None
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA. Impact type from CWE-288.

Summary

Symfony versions before 5.4.56, from 6.0.0 before 6.4.50, from 7.0.0 before 7.4.23, and from 8.0.0 before 8.1.11 skip the custom user checker's checkPostAuth() method on programmatic logins. An application whose checker rejects accounts in checkPostAuth() still lets those accounts obtain an authenticated session through such a login, for example after a password reset or e-mail verification link. An attacker with low privileges can exploit this over the network without user interaction (CWE-288).

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

Description from the CNA

The Symfony Security HTTP component AuthenticatorManager::authenticateUser() does not run the firewall user checker’s checkPostAuth() method when a user is authenticated programmatically, allowing an account rejected by a custom user checker, such as an expired account, to be authenticated in Symfony versions prior to 5.4.56, 6.x prior to 6.4.50, 7.x prior to 7.4.23, and 8.x prior to 8.1.11. AuthenticatorManager::authenticateUser() is used by UserAuthenticatorInterface::authenticateUser() and by the SecurityBundle’s Security::login() to authenticate a user programmatically, but it does not dispatch the security.authentication.success event, on which checkPostAuth() runs. The fix for CVE-2024-50341 made Security::login() call checkPreAuth(), but checkPostAuth() was still skipped. As a result, an account rejected by a custom user checker in checkPostAuth() is refused by form login and the other authenticators of the firewall, but can still be authenticated programmatically. Applications are affected when they use a custom user checker that rejects users in checkPostAuth() and authenticate users programmatically, for example after a password reset or an e-mail verification link. A user whose account is rejected can then obtain an authenticated session through that flow. The default user checker does nothing in checkPostAuth(), so the default configuration is not affected. The fix makes AuthenticatorManager::authenticateUser() dispatch the security.authentication.success event once the token is created and before it is stored, as authentications through the firewall do, so that checkPostAuth() runs and can reject the user.

Why it matters now

EPSS 0.00279 20th percentileScored 2026-11-07
Fix Fixed No fixed version in the sources yet

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

No affected products listed by the sources yet.

Remediation

Upgrade Symfony to 5.4.56, 6.4.50, 7.4.23, or 8.1.11, matching your release line.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

Fixed in the same release

Records fixed by the same vendor advisory or release, as the CNA lists them.

  • Release ·

    sensiolabs symfony 5.4.56, 6.4.50 and 2 more versions

    6 records Highest priority Priority LOW 6 LOW

    Other records, highest priority first

    • TI-2026-85971 Symfony YAML parser inefficient parsing enables denial of servicePriority LOW 38
    • TI-2026-85989 Symfony Serializer lets clients turn server files into uploadsPriority LOW 37
    • TI-2026-85987 Symfony DataUriNormalizer reads local files from uppercase data URIsPriority LOW 36

Timeline

  1. 2026-11-06 Threatist record created from CVE-2026-123746

References

  • TI-2019-13616 An issue was discovered in Symfony 3.4.0 through 3.4.34, 4.2.0 through 4.2.11, and 4.3.0… CVSS 3.1CRITICAL 9.8
  • TI-2018-10604 An issue was discovered in Http Foundation in Symfony 2.7.0 through 2.7.48, 2.8.0 through… CVSS 3.1MEDIUM 6.5
  • TI-2019-08131 In Symfony before 2.7.51, 2.8.x before 2.8.50, 3.x before 3.4.26, 4.x before 4.1.12, and… CVSS 3.1CRITICAL 9.8
  • TI-2016-02159 Symfony before 2.8.6 and 3.x before 3.0.6 allows remote attackers to bypass… CVSS 3.0CRITICAL 9.8
  • TI-2019-08459 An issue was discovered in Symfony before 4.2.12 and 4.3.x before 4.3.8. CVSS 3.1CRITICAL 9.8
  • TI-2018-08136 An issue was discovered in the Ldap component in Symfony 2.8.x before 2.8.37, 3.3.x… CVSS 3.0CRITICAL 9.8
See all 107 →

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences