silverstripe/framework ChangePasswordForm does not check `Member::canLogIn()`
The advisory, in context
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.
Affected 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.
From 3.1.19-rc1 before 3.1.20
Fixed in 3.1.20
4 explicitly affected versions
3.1.19, 3.1.19-rc1, 3.1.20-rc1, 3.1.20-rc2
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "3.1.19-rc1"
},
{
"fixed": "3.1.20"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"3.1.19",
"3.1.19-rc1",
"3.1.20-rc1",
"3.1.20-rc2"
]
}From 3.2.4-rc1 before 3.2.5
Fixed in 3.2.5
4 explicitly affected versions
3.2.4, 3.2.4-rc1, 3.2.5-rc1, 3.2.5-rc2
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "3.2.4-rc1"
},
{
"fixed": "3.2.5"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"3.2.4",
"3.2.4-rc1",
"3.2.5-rc1",
"3.2.5-rc2"
]
}From 3.3.2-rc1 before 3.3.3
Fixed in 3.3.3
4 explicitly affected versions
3.3.2, 3.3.2-rc1, 3.3.3-rc1, 3.3.3-rc2
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "3.3.2-rc1"
},
{
"fixed": "3.3.3"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"3.3.2",
"3.3.2-rc1",
"3.3.3-rc1",
"3.3.3-rc2"
]
}From 3.4.0-rc1 before 3.4.1
Fixed in 3.4.1
4 explicitly affected versions
3.4.0, 3.4.0-rc1, 3.4.1-rc1, 3.4.1-rc2
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "3.4.0-rc1"
},
{
"fixed": "3.4.1"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"3.4.0",
"3.4.0-rc1",
"3.4.1-rc1",
"3.4.1-rc2"
]
}References
- https://github.com/silverstripe/silverstripe-framework/commit/2b30ade44d333a4da4d13b31ffa28d0a34597442
- https://github.com/silverstripe/silverstripe-framework/commit/6606d986634f5b5dec16462acaa8d9a513c29fec
- https://github.com/silverstripe/silverstripe-framework/commit/6d41db77fa78f473db7bcff389456c980ef4e412
- https://github.com/silverstripe/silverstripe-framework/commit/782c18fd13b9fb92707d0ea3b231023204928297
- https://github.com/FriendsOfPHP/security-advisories/blob/master/silverstripe/framework/SS-2016-011-1.yaml
- https://github.com/silverstripe/silverstripe-framework
- https://www.silverstripe.org/download/security-releases/ss-2016-011