Prevent user enumeration using Guard or the new Authenticator-based Security
Impact
The ability to enumerate users was possible without relevant permissions due to different exception messages depending on whether the user existed or not. It was also possible to enumerate users by using a timing attack, by comparing time elapsed when authenticating an existing user and authenticating a non-existing user.
Source excerpt · OSVAffected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
| Affected range | Recorded fix |
|---|---|
| From 5.0.0 before 5.2.8Ecosystem versions | 5.2.8 |
| From 2.8.0 before 3.4.49Ecosystem versions | 3.4.49 |
| From 4.0.0 before 4.4.24Ecosystem versions | 4.4.24 |
Version evidence: OSV · GHSA-5pv8-ppvj-4h68
View original version evidence (260 explicit versions)
| Affected range | Recorded fix |
|---|---|
| From 2.8.0 before 3.4.48Ecosystem versions | 3.4.48 |
| From 4.0.0 before 4.4.23Ecosystem versions | 4.4.23 |
| From 5.0.0 before 5.2.8Ecosystem versions | 5.2.8 |
Version evidence: OSV · GHSA-5pv8-ppvj-4h68
View original version evidence (293 explicit versions)
| Affected range | Recorded fix |
|---|---|
| From 2.8.0 before 3.4.48Ecosystem versions | 3.4.48 |
| From 4.0.0 before 4.4.23Ecosystem versions | 4.4.23 |
| From 5.0.0 before 5.2.8Ecosystem versions | 5.2.8 |
Version evidence: OSV · GHSA-5pv8-ppvj-4h68
View original version evidence (298 explicit versions)
| Affected range | Recorded fix |
|---|---|
| From 2.0.0 before 2.10.7Ecosystem versions | 2.10.7 |
| From 2.11.0 before 2.11.3Ecosystem versions | 2.11.3 |
Version evidence: OSV · GHSA-5pv8-ppvj-4h68
View original version evidence (37 explicit versions)
| Affected range | Recorded fix |
|---|---|
| From 1.27.0 before 1.29.2Ecosystem versions | 1.29.2 |
| From 1.30.0 before 1.31.1Ecosystem versions | 1.31.1 |
Version evidence: OSV · GHSA-5pv8-ppvj-4h68
View original version evidence (8 explicit versions)
| Affected range | Recorded fix |
|---|---|
| From 5.1.0 before 5.2.8Ecosystem versions | 5.2.8 |
Version evidence: OSV · GHSA-5pv8-ppvj-4h68
View original version evidence (25 explicit versions)
| Affected range | Recorded fix |
|---|---|
| From 2.8.0 before 3.4.49Ecosystem versions | 3.4.49 |
| From 4.0.0 before 4.4.24Ecosystem versions | 4.4.24 |
| From 5.0.0 before 5.2.9Ecosystem versions | 5.2.9 |
Version evidence: OSV · GHSA-5pv8-ppvj-4h68
View original version evidence (303 explicit versions)
Original source description
Description
The ability to enumerate users was possible without relevant permissions due to different exception messages depending on whether the user existed or not. It was also possible to enumerate users by using a timing attack, by comparing time elapsed when authenticating an existing user and authenticating a non-existing user.
Resolution
We now ensure that 403s are returned whether the user exists or not if the password is invalid or if the user does not exist.
The patch for this issue is available here for branch 3.4.
Credits
I would like to thank James Isaac and Mathias Brodala for reporting the issue and Robin Chalas for fixing the issue.
References
- Security advisory github.com/symfony/symfony/security/advisories/GHSA-5pv8-ppvj-4h68
- Security advisory nvd.nist.gov/vuln/detail/CVE-2021-21424
- Patch github.com/symfony/symfony/commit/2a581d22cc621b33d5464ed65c4bc2057f72f011
- Security advisory symfony.com/cve-2021-21424
- Source reference lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/VRUS2H2SSOQWNLBD35SKIWIDQEMV2PD3
- Source reference lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/UC7BND775DVZDQT3RMGD2HVB2PKLJDJW
- Source reference lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/RH7TMM5CHQYBFFGXWRPJDPB3SKCZXI2M
- Source reference lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/KENRNLB3FYXYGDWRBH2PDBOZZKOD7VY4
- Source reference lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/VRUS2H2SSOQWNLBD35SKIWIDQEMV2PD3
- Source reference lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/UC7BND775DVZDQT3RMGD2HVB2PKLJDJW
- Source reference lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/RH7TMM5CHQYBFFGXWRPJDPB3SKCZXI2M
- Source reference lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/KENRNLB3FYXYGDWRBH2PDBOZZKOD7VY4
- Source reference lists.debian.org/debian-lts-announce/2023/07/msg00014.html
- Source reference github.com/symfony/symfony
- Security advisory github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2021-21424.yaml
- Security advisory github.com/FriendsOfPHP/security-advisories/blob/master/symfony/security/CVE-2021-21424.yaml
- Security advisory github.com/FriendsOfPHP/security-advisories/blob/master/symfony/security-http/CVE-2021-21424.yaml
- Security advisory github.com/FriendsOfPHP/security-advisories/blob/master/symfony/security-guard/CVE-2021-21424.yaml
- Security advisory github.com/FriendsOfPHP/security-advisories/blob/master/symfony/maker-bundle/CVE-2021-21424.yaml
- Security advisory github.com/FriendsOfPHP/security-advisories/blob/master/lexik/jwt-authentication-bundle/CVE-2021-21424.yaml