Firewall configured with unanimous strategy was not actually unanimous in Symfony
Impact
On Symfony before 4.4.0, when a Firewall checks an access control rule (using the unanimous strategy), it iterates over all rule attributes and grant access only if all calls to the accessDecisionManager decide to grant access.
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 4.4.0 before 4.4.7Ecosystem versions | 4.4.7 |
| From 5.0.0 before 5.0.7Ecosystem versions | 5.0.7 |
Version evidence: OSV · GHSA-g4m9-5hpf-hx72
View original version evidence (7 explicit versions)
| Affected range | Recorded fix |
|---|---|
| From 4.4.0 before 4.4.7Ecosystem versions | 4.4.7 |
| From 5.0.0 before 5.0.7Ecosystem versions | 5.0.7 |
Version evidence: OSV · GHSA-g4m9-5hpf-hx72
View original version evidence (14 explicit versions)
| Affected range | Recorded fix |
|---|---|
| From 4.4.0 before 4.4.7Ecosystem versions | 4.4.7 |
| From 5.0.0 before 5.0.7Ecosystem versions | 5.0.7 |
Version evidence: OSV · GHSA-g4m9-5hpf-hx72
View original version evidence (14 explicit versions)
Original source description
Description
On Symfony before 4.4.0, when a Firewall checks an access control rule (using the unanimous strategy), it iterates over all rule attributes and grant access only if all calls to the accessDecisionManager decide to grant access.
As of Symfony 4.4.0, a bug was introduced that prevents the check of attributes as soon as accessDecisionManager decide to grant access on one attribute.
Resolution
The accessDecisionManager is now called with all attributes at once, allowing the unanimous strategy being applied on each attribute.
The patch for this issue is available here for the 4.4 branch.
Credits
I would like to thank Antonio J. García Lagar for reporting & Robin Chalas for fixing the issue.
References
- Security advisory github.com/symfony/symfony/security/advisories/GHSA-g4m9-5hpf-hx72
- Security advisory nvd.nist.gov/vuln/detail/CVE-2020-5275
- Patch github.com/symfony/symfony/commit/c935e4a3fba6cc2ab463a6ca382858068d63cebf
- Security advisory github.com/FriendsOfPHP/security-advisories/blob/master/symfony/security-http/CVE-2020-5275.yaml
- Security advisory github.com/FriendsOfPHP/security-advisories/blob/master/symfony/security/CVE-2020-5275.yaml
- Security advisory github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2020-5275.yaml
- Source reference lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/C36JLPHUPKDFAX6D5WYFC4ALO2K7RDUQ
- Security advisory symfony.com/cve-2020-5275