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
composer require silverstripe/framework:^3.1.20- Affected
- >=3.2.4-rc1 <3.2.5
- Fixed in
- 3.2.5
composer require silverstripe/framework:^3.2.5- Affected
- >=3.3.2-rc1 <3.3.3
- Fixed in
- 3.3.3
composer require silverstripe/framework:^3.3.3- Affected
- >=3.4.0-rc1 <3.4.1
- Fixed in
- 3.4.1
composer require silverstripe/framework:^3.4.1Details
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
- Linkgithub.com/silverstripe/silverstripe-framework/commit/2b30ade44d333a4da4d13b31ffa28d0a34597442
- Linkgithub.com/silverstripe/silverstripe-framework/commit/6606d986634f5b5dec16462acaa8d9a513c29fec
- Linkgithub.com/silverstripe/silverstripe-framework/commit/6d41db77fa78f473db7bcff389456c980ef4e412
- Linkgithub.com/silverstripe/silverstripe-framework/commit/782c18fd13b9fb92707d0ea3b231023204928297
- Linkgithub.com/FriendsOfPHP/security-advisories/blob/master/silverstripe/framework/SS-2016-011-1.yaml
- Packagegithub.com/silverstripe/silverstripe-framework
- Linkwww.silverstripe.org/download/security-releases/ss-2016-011
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.