MediumGHSA-p5h2-vr99-xm99

silverstripe/framework ChangePasswordForm does not check `Member::canLogIn()`

Published 27 May 2024 · Updated 2 Dec 2024

Affected packages

Affected
>=3.1.19-rc1 <3.1.20
Fixed in
3.1.20
Update to the fixed version for your release line, for example:composer require silverstripe/framework:^3.1.20
Affected
>=3.2.4-rc1 <3.2.5
Fixed in
3.2.5
Update to the fixed version for your release line, for example:composer require silverstripe/framework:^3.2.5
Affected
>=3.3.2-rc1 <3.3.3
Fixed in
3.3.3
Update to the fixed version for your release line, for example:composer require silverstripe/framework:^3.3.3
Affected
>=3.4.0-rc1 <3.4.1
Fixed in
3.4.1
Update to the fixed version for your release line, for example:composer require silverstripe/framework:^3.4.1

Details

After performing a password reset, ChangePasswordForm::doChangePassword() logs in the user without checking Member::canLogIn(). This presents an issue for sites that are using the extension point in that method to deny access to users (for example members that have not been “approved”, or members that have had their access revoked temporarily). It looks like Member::canLogIn() was originally designed to only be used for checking whether the user is locked out (due to too many incorrect login attempts) but has been opened up to other uses.

Is GHSA-p5h2-vr99-xm99 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 silverstripe/framework, and gives you the command that fixes it.

References

Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.