Summary
Changing a user’s password does not invalidate existing sessions, allowing an attacker with a stolen cookie to retain access even after the victim resets their password.
Details
SillyTavern relies on cookie-session for authentication, storing all session data (user handle, permissions) in a signed cookie. The endpoints POST /api/users/change-password and POST /api/users/recover-step2 only update the password hash in the database but do not expire current sessions. Because the session is stateless and stored entirely in the client cookie, there is no server-side mechanism to revoke a token once issued.
PoC
1.Log into the same SillyTavern account from two different browsers (e.g., Chrome and Firefox private mode).
2.In Chrome, change the account password under User Settings → Change Password.
3.In Firefox, refresh the page or perform a protected action (e.g., view API keys).
4.Expected: Firefox session should be invalidated and ask for login.
5.Actual: Firefox remains fully authenticated, able to perform all actions as the targeted user.
Impact
An attacker who obtains a valid session cookie (via XSS, MITM, physical access, etc.) can continue using it indefinitely, even after the legitimate user changes their password.
This nullifies the most common recovery measure against session theft.
The default cookie lifespan is 400 days, giving an attacker a very long exploitation window.
Resolution
A fix was released in the version 1.18.0, invalidating a session cookie on account password change.
References
Summary
Changing a user’s password does not invalidate existing sessions, allowing an attacker with a stolen cookie to retain access even after the victim resets their password.
Details
SillyTavern relies on cookie-session for authentication, storing all session data (user handle, permissions) in a signed cookie. The endpoints POST /api/users/change-password and POST /api/users/recover-step2 only update the password hash in the database but do not expire current sessions. Because the session is stateless and stored entirely in the client cookie, there is no server-side mechanism to revoke a token once issued.
PoC
1.Log into the same SillyTavern account from two different browsers (e.g., Chrome and Firefox private mode).
2.In Chrome, change the account password under User Settings → Change Password.
3.In Firefox, refresh the page or perform a protected action (e.g., view API keys).
4.Expected: Firefox session should be invalidated and ask for login.
5.Actual: Firefox remains fully authenticated, able to perform all actions as the targeted user.
Impact
An attacker who obtains a valid session cookie (via XSS, MITM, physical access, etc.) can continue using it indefinitely, even after the legitimate user changes their password.
This nullifies the most common recovery measure against session theft.
The default cookie lifespan is 400 days, giving an attacker a very long exploitation window.
Resolution
A fix was released in the version 1.18.0, invalidating a session cookie on account password change.
References