When your app logs a user in from code with Security::login(), Symfony skipped the custom user_checker you set on the firewall. An account that checker is meant to reject could still be logged in this way.

Apps often log users in from code after registration, a password reset or an email verification link. See the Symfony advisory and the fix.

Who is affected

Apps on symfony/security-bundle (also part of symfony/symfony) when both of these are true:

  • A firewall has a custom user_checker that rejects some users.
  • The app calls Security::login() for users that checker should be able to stop.

Apps without a custom user checker, or that never call Security::login(), aren't affected.

What to do

Update to 6.4.10, 7.0.10 or 7.1.3, depending on your branch. After the update, Security::login() calls the user checker configured on the firewall.

A later advisory found that this fix only ran the checker's checkPreAuth() method, not checkPostAuth(). See CVE-2026-123746 for the releases that fix both.

Reported by Oleg Andreyev and Antoine MAKDESSI. Christian Flothmann provided the fix.