GHSA-j6f8-qcj9-gh4r: AshAuthentication log_out_everywhere leaves sessions valid after a password reset or non-atomic password change

Published Nov 3, 2026
·
Updated

Summary

Improper Session Invalidation after Authentication Credential Change vulnerability in team-alembic ashauthentication allows an attacker holding a victim's session token to stay signed in after the victim resets or changes their password.

With applyonpasswordchange? true, AshAuthentication.AddOn.LogOutEverywhere.Transformer adds OnPasswordChange to update actions as a global change guarded by where: changing(hashedpassword). That condition is evaluated before the action's beforeaction hooks run, but AshAuthentication.Strategy.Password.HashPasswordChange sets the new hash in a beforeaction hook, so for every non-atomic password change the condition is false and the user's stored tokens are not revoked. The generated password reset action and the installer's changepassword action are both non-atomic.

This issue affects ashauthentication: from 4.5.0 before 4.15.1 and from 5.0.0-rc.0 before 5.0.0-rc.16.

Configurations

The logouteverywhere add-on sets applyonpasswordchange? true, as mix ashauthentication.install writes, and the password is changed through a non-atomic update action, which includes the generated password reset action and the installer's changepassword action. The attacker must already hold one of the victim's session tokens.

Other sources

Improper Session Invalidation after Authentication Credential Change vulnerability in team-alembic ashauthentication allows an attacker holding a victim's session token to stay signed in after the victim resets or changes their password.

With applyonpasswordchange? true, AshAuthentication.AddOn.LogOutEverywhere.Transformer adds OnPasswordChange to update actions as a global change guarded by where: changing(hashedpassword). That condition is evaluated before the action's beforeaction hooks run, but AshAuthentication.Strategy.Password.HashPasswordChange sets the new hash in a beforeaction hook, so for every non-atomic password change the condition is false and the user's stored tokens are not revoked. The generated password reset action and the installer's changepassword action are both non-atomic.

This issue affects ashauthentication: from 4.5.0 before 4.15.1 and from 5.0.0-rc.0 before 5.0.0-rc.16.

— OSV

Affected Software

2 affected componentsFixes available
erlang/ash_authentication>=4.5.0<4.15.1
4.15.1
erlang/ash_authentication>=5.0.0-rc.0<5.0.0-rc.16
5.0.0-rc.16

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade erlang/ash_authentication to a version that resolves this vulnerability.

    Fixed in 4.15.1
  2. Upgrade

    Upgrade erlang/ash_authentication to a version that resolves this vulnerability.

    Fixed in 5.0.0-rc.16
  3. Upgrade

    Upgrade ash_authentication to a version that resolves this vulnerability.

    Fixed in 4.15.1
  4. Upgrade

    Upgrade ash_authentication to a version that resolves this vulnerability.

    Fixed in 5.0.0-rc.16

Event History

Nov 3, 2026
CVE Published
via OSV·07:19 PM
Data Sourced
via OSV·07:19 PM
DescriptionSeverityWeakness
Data Sourced
via OSV·07:19 PM
Affected Software

Frequently Asked Questions

1

Which deployments are affected by this issue?

Affected deployments use ash_authentication versions 4.5.0 through before 4.15.1, or 5.0.0-rc.0 through before 5.0.0-rc.16. The log_out_everywhere add-on must have apply_on_password_change? enabled, as written by mix ash_authentication.install, and the password change must use a non-atomic update action.

2

What does an attacker need to exploit this?

An attacker needs to already possess a victim's valid session token. They can continue using that token after the victim resets or changes their password if token revocation is skipped.

3

Are the generated password reset and installer-provided password-change actions affected?

Yes. The generated password reset action and the installer's change_password action are non-atomic, so they meet the condition that causes stored tokens not to be revoked.

4

How can I determine whether my password-change flow is exposed?

Check whether log_out_everywhere is configured with apply_on_password_change? true and whether the relevant password update action is non-atomic. For such actions, the changing(hashed_password) guard is evaluated before the before_action hook that sets the new password hash, preventing the logout-everywhere change from running.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203