# SEC-005A session and recovery revocation verification Date: 2026-08-02 Status: `VERIFIED LOCALLY`; browser and production verification remain. ## Implemented transitions - Logout is anonymous/idempotent, exempt from CSRF gating, best-effort reads valid or expired local session cookies, revokes only the matching `(userId, sid)` row, and always clears session/CSRF cookies. - Local JWT validation now requires the principal user ID and `sid` to match the same live row. - Successful password reset revokes every target session and trusted device while preserving 2FA configuration; reset mail is sent only for confirmed local-password accounts with a generic response otherwise. - Successful password change revokes every old session, creates one replacement session, removes other trusted devices, and retains the current trusted device. - Pending 2FA tokens issued by real sign-in flows carry the user's security stamp; password/reset stamp changes invalidate the pending challenge. ## Commands and results | Command/check | Result | |---|---| | focused auth/session/2FA controller suite | Pass; 48/48 after adding the expired-cookie case | | full backend Release suite | Pass; 497/497 | | copied-principal validation after logout | Rejected as expected | | reset with two target sessions/devices plus another user | Target revoked/removed; other user untouched; 2FA preserved | | password change with two sessions and three device rows | Old sessions revoked; one new session; current device retained; other-user row untouched | | pending 2FA with stale security stamp | Rejected and consumed | ## Limitations and rollback - No real email was sent and no browser/multi-tab flow was run. - Password change deliberately revokes before issuing the replacement. If replacement issuance fails, the password is changed and the user must sign in again; no old token remains valid. - Existing pending tokens issued before deployment have no stamp and retain their five-minute lifetime for compatibility. All tokens issued after deployment are stamp-bound. - Production rollout should verify copied-cookie invalidation, session-row counts, reset with 2FA and trusted-device behavior using disposable accounts. - Rollback requires application binaries only; no schema changed. Do not restore non-revoking logout/reset behavior.