{"items":[{"id":"NVI-00008198","kind":"vulnerability","title":"silverstripe/framework ChangePasswordForm does not check `Member::canLogIn()`","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-p5h2-vr99-xm99"],"plain_summary":"OSV carries this publisher advisory for silverstripe/framework, silverstripe/framework, silverstripe/framework, silverstripe/framework. This is an aggregated source copy; consult the original publisher and compare update dates.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"The original advisory lists fixed boundaries 3.1.20 for silverstripe/framework. Confirm the publisher’s latest guidance.","source_ids":["sr-f9e63fa72377fe2c7b0640eb70bfb883"],"action_type":"vendor_patch","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null},{"summary":"The original advisory lists fixed boundaries 3.2.5 for silverstripe/framework. Confirm the publisher’s latest guidance.","source_ids":["sr-f9e63fa72377fe2c7b0640eb70bfb883"],"action_type":"vendor_patch","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null},{"summary":"The original advisory lists fixed boundaries 3.3.3 for silverstripe/framework. Confirm the publisher’s latest guidance.","source_ids":["sr-f9e63fa72377fe2c7b0640eb70bfb883"],"action_type":"vendor_patch","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null},{"summary":"The original advisory lists fixed boundaries 3.4.1 for silverstripe/framework. Confirm the publisher’s latest guidance.","source_ids":["sr-f9e63fa72377fe2c7b0640eb70bfb883"],"action_type":"vendor_patch","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-f9e63fa72377fe2c7b0640eb70bfb883","url":"https://github.com/advisories/GHSA-p5h2-vr99-xm99","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-p5h2-vr99-xm99","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:42:30.986Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-f9e63fa72377fe2c7b0640eb70bfb883"],"technology":"silverstripe/framework","known_exclusions":[],"conditions_summary":"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.\n\n","public_affected_ranges":["ECOSYSTEM: introduced 3.1.19-rc1; fixed 3.1.20"]},{"certainty":"source_listed","source_ids":["sr-f9e63fa72377fe2c7b0640eb70bfb883"],"technology":"silverstripe/framework","known_exclusions":[],"conditions_summary":"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.\n\n","public_affected_ranges":["ECOSYSTEM: introduced 3.2.4-rc1; fixed 3.2.5"]},{"certainty":"source_listed","source_ids":["sr-f9e63fa72377fe2c7b0640eb70bfb883"],"technology":"silverstripe/framework","known_exclusions":[],"conditions_summary":"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.\n\n","public_affected_ranges":["ECOSYSTEM: introduced 3.3.2-rc1; fixed 3.3.3"]},{"certainty":"source_listed","source_ids":["sr-f9e63fa72377fe2c7b0640eb70bfb883"],"technology":"silverstripe/framework","known_exclusions":[],"conditions_summary":"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.\n\n","public_affected_ranges":["ECOSYSTEM: introduced 3.4.0-rc1; fixed 3.4.1"]}],"null_published_at":"2026-10-31T22:13:22.834Z","source_updated_at":"2024-12-02T05:47:41.315Z","source_disclosed_at":"2024-05-27T18:36:59.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-10-31T21:42:30.986Z"}],"next_cursor":null,"snapshot_revision":"42594"}