CVE-2026-49229: Actual Finance App OpenID Session Token Bypass in Disabled User Accounts
Actual is a personal finance application that supports multi-user access through OpenID authentication. In versions before 26.6.0, when an administrator disables a user account, the system blocks that user from logging in with OpenID—but any existing session tokens they had obtained before being disabled remain active and valid. This means a disabled user can continue to use the application and access authenticated features as if they were still enabled, bypassing the intended access revocation.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 8.3 HIGH · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L
- Weaknesses (CWE)
- CWE-613
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-07-07 / 2026-07-09
NVD description (verbatim)
Actual is a local-first personal finance app. Prior to 26.6.0, in OpenID multi-user mode, disabling a user only blocks future OpenID login for that identity, while existing Actual session tokens for the disabled user remain valid. The shared session validation path accepts any existing token row that has not expired without checking whether the associated user is still enabled, allowing a disabled user to continue calling authenticated server endpoints. This issue is fixed in version 26.6.0.
4 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability exists in Actual's shared session validation logic. When a user is disabled in OpenID multi-user mode, the application invalidates future OpenID login attempts for that identity but does not invalidate or check the enabled status of existing session tokens during authenticated requests. The session validation path accepts any token row that has not expired, without verifying the associated user's current enabled state. This allows a disabled user to continue issuing authenticated API calls to protected endpoints. The issue is a failure in the authorization layer to enforce user account status as part of the session validation flow, classified under CWE-613 (Insufficient Session Expiration).
Business impact
For organizations or households using Actual as a shared multi-user finance application, a disabled user account provides a persistent backdoor to financial data and transaction history. A disgruntled employee, contractor, or family member whose access is revoked can continue viewing account balances, transaction records, and potentially modifying financial information, depending on the endpoint permissions. This creates both a confidentiality and integrity risk, particularly concerning in shared household or small-business finance scenarios where account disabling is expected to immediately revoke all access.
Affected systems
Actual versions prior to 26.6.0 are affected when deployed in OpenID multi-user mode. Single-user deployments or non-OpenID authentication methods are not impacted by this vulnerability. Users should verify their Actual installation version and authentication configuration against vendor documentation.
Exploitability
Exploitation requires a valid session token obtained prior to account disabling. An attacker must either be a current or former user who had legitimate access and received a session token before being disabled, or gain access to such a token through other means. The attack is network-accessible and requires no user interaction—once the token is in hand, disabled accounts can call authenticated endpoints. The CVSS score of 8.3 (HIGH) reflects the combination of network accessibility, low complexity, the requirement for prior legitimate access, and the high confidentiality and integrity impact on shared financial records.
Remediation
Upgrade to Actual version 26.6.0 or later. This version implements user enabled-state checking in the shared session validation path, ensuring that disabled users cannot execute authenticated requests even if they possess a valid, non-expired token. Organizations should apply this patch to all Actual instances deployed in multi-user OpenID mode.
Patch guidance
1. Review your Actual deployment to confirm the current version and whether OpenID multi-user mode is in use. 2. Back up your Actual data and configuration before upgrading. 3. Download and install Actual version 26.6.0 from the official source (verify against vendor advisory for specific installation instructions). 4. Test multi-user authentication and account disabling workflows in a staging environment to confirm the fix works as expected. 5. Disable any user accounts that should no longer have access and verify that their existing sessions are now rejected. 6. Deploy to production and monitor for any authentication or session-related issues.
Detection guidance
In environments running Actual prior to 26.6.0, monitor server access logs for unusual API requests from user accounts that should be disabled. Look for authenticated requests with tokens issued before the user's disable timestamp. If OpenID integration is in place, cross-reference disabled user identity claims against active session tokens in your Actual database. A forensic check can be performed by examining the token expiration timestamps and user enabled status columns to identify if any disabled accounts have active, non-expired sessions. After patching, verify that disabled user accounts are unable to execute previously-successful authenticated requests.
Why prioritize this
This vulnerability should be prioritized highly because: (1) it allows complete bypass of account disabling in multi-user deployments; (2) the attack surface includes all authenticated endpoints, giving an attacker broad access to financial data; (3) exploitation does not require network access to obtain a token—an insider threat or recently-removed user is sufficient; and (4) the integrity risk means a disabled user could modify shared financial records. While KEV listing is not yet applicable, the ease of exploitation and persistence of the threat in active sessions makes rapid patching essential for organizations sharing financial data.
Risk score, explained
The CVSS 3.1 score of 8.3 (HIGH) is driven by: Network accessibility (AV:N) lowers the barrier to exploitation; Low Attack Complexity (AC:L) because only a valid token is needed; Requires Privilege (PR:L) reflecting the need for prior user access; No User Interaction (UI:N); Unchanged Scope (S:U) because the impact is limited to the Actual application; High Confidentiality impact (C:H) due to exposure of shared financial records; High Integrity impact (I:H) because disabled users can modify data; and Low Availability impact (A:L) reflecting minimal disruption. The combination of high confidentiality and integrity impact, paired with the low complexity and network accessibility, justifies the HIGH severity designation.
Frequently asked questions
Does this vulnerability affect single-user Actual deployments?
No. The vulnerability only manifests in OpenID multi-user mode. Single-user instances and deployments using non-OpenID authentication methods are not impacted.
If I disable a user in Actual, are their existing sessions immediately terminated?
In versions before 26.6.0, no. Disabling a user blocks future OpenID logins but leaves existing session tokens active. Version 26.6.0 fixes this by checking user enabled status during session validation, ensuring disabled users cannot continue using their old tokens.
What should I do if I suspect a disabled user has accessed Actual after being disabled?
First, upgrade to version 26.6.0 immediately to prevent future unauthorized access. Then, audit your Actual database and server logs to identify any API requests from disabled users. Review what financial data or transactions may have been accessed or modified. Consider forcing a password reset or re-authentication for all active users as an additional precaution.
Will patching to 26.6.0 log out disabled users automatically?
Patching does not automatically terminate existing sessions; however, version 26.6.0 will reject authenticated requests from disabled users going forward. To fully revoke access for a disabled user, you may need to manually clear their session tokens from the database or force a re-authentication flow, depending on your deployment configuration—consult the vendor advisory for specific guidance.
This analysis is based on the CVE description, CVSS vector, and vendor information available as of the publication date. No exploit code or proof-of-concept details are provided. Patch version numbers and affected product information should be verified against the official Actual vendor advisory before deployment. Organizations should conduct their own risk assessment based on their specific Actual deployment configuration, OpenID integration status, and sensitivity of financial data stored. SEC.co makes no warranty regarding the completeness or accuracy of this analysis and recommends consulting Actual's official security documentation for the most current remediation guidance. Source: NVD (public-domain), retrieved 2026-08-16. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2025-36359HIGHIBM DevOps Automation and Loop Session Invalidation Flaw
- CVE-2025-71335HIGHFlowise Session Invalidation Flaw Allows Post-Password-Change Account Takeover
- CVE-2026-44648HIGHSillyTavern Session Expiration Vulnerability – Account Takeover Risk
- CVE-2026-46656HIGHBludit Ghost Session Vulnerability – Broken Access Control Flaw
- CVE-2026-46657HIGHBludit Account Disablement Bypass via Persistent Authentication Tokens
- CVE-2026-53843HIGHOpenClaw Authorization Bypass: Pairing-Scoped Session Re-Establishment
- CVE-2026-54321HIGHDaytona Sandbox Visibility Cache Bypass (v0.101.0-0.183.1)
- CVE-2026-54479HIGHPredictable Session Identifiers in WebSocket Charging Station Backend