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_checkerthat 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.