Symfony possible session fixation vulnerability
Published 12 Nov 2023 · Updated 10 Sept 2026
Affected packages
- Affected
- >=5.4.21 <5.4.31
- Fixed in
- 5.4.31
composer require symfony/security-http:^5.4.31- Affected
- >=6.2.7 <6.3.8
- Fixed in
- 6.3.8
composer require symfony/security-http:^6.3.8- Affected
- >=5.4.21 <5.4.31
- Fixed in
- 5.4.31
composer require symfony/symfony:^5.4.31- Affected
- >=6.2.7 <6.3.8
- Fixed in
- 6.3.8
composer require symfony/symfony:^6.3.8Details
Description
SessionStrategyListener does not always migrate the session after a successful login. It only migrate the session when the logged-in user identifier changes. In some use cases, the user identifier doesn't change between the verification phase and the successful login, while the token itself changes from one type (partially-authenticated) to another (fully-authenticated). When this happens, the session id should be regenerated to prevent possible session fixations.
Resolution
Symfony now checks the type of the token in addition to the user identifier before deciding whether the session id should be regenerated.
The patch for this issue is available here for branch 5.4.
Credits
We would like to thank Robert Meijers for reporting the issue and providing the fix.
Is GHSA-m2wj-r6g3-fxfx in any of your client repos?
Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected symfony/security-http, and gives you the command that fixes it.
References
- Linkgithub.com/symfony/symfony/security/advisories/GHSA-m2wj-r6g3-fxfx
- Advisorynvd.nist.gov/vuln/detail/CVE-2023-46733
- Linkgithub.com/symfony/symfony/commit/7467bd7e3f888b333102bc664b5e02ef1e7f88b9
- Linkgithub.com/symfony/symfony/commit/dc356499d5ceb86f7cf2b4c7f032eca97061ed74
- Linkgithub.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2023-46733.yaml
- Packagegithub.com/symfony/symfony
- Linksymfony.com/cve-2023-46733
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.