CVE-2026-49229
Deferred Deferred - Pending Action

OpenID Session Token Persistence in Actual Finance App

Vulnerability report for CVE-2026-49229, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-07-07

Last updated on: 2026-07-09

Assigner: GitHub, Inc.

Description

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-07-07
Last Modified
2026-07-09
Generated
2026-07-11
AI Q&A
2026-07-08
EPSS Evaluated
2026-07-09
NVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
actual actual 26.6.0

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-613 According to WASC, "Insufficient Session Expiration is when a web site permits an attacker to reuse old session credentials or session IDs for authorization."

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability affects the Actual personal finance app in versions prior to 26.6.0 when using OpenID multi-user mode. When a user is disabled, the system only blocks future OpenID logins for that user identity. However, any existing session tokens for the disabled user remain valid because the session validation process does not check if the user is still enabled. This allows a disabled user to continue accessing authenticated server endpoints despite being disabled.

Impact Analysis

The vulnerability can allow a disabled user to maintain access to the application through existing session tokens. This means that even after disabling a user, that user could continue to perform actions and access sensitive data within the app, potentially leading to unauthorized access, data breaches, or misuse of the system.

Mitigation Strategies

To mitigate this vulnerability, upgrade the Actual personal finance app to version 26.6.0 or later, where the issue is fixed.

Until the upgrade is applied, be aware that disabling a user in OpenID multi-user mode only blocks future logins but does not invalidate existing session tokens, so consider additional session management or token revocation strategies if possible.

Compliance Impact

This vulnerability allows disabled users to retain access to authenticated server endpoints indefinitely due to sessions not being invalidated. This poses a high risk to confidentiality and integrity of sensitive data, including personal financial information.

Such unauthorized continued access can lead to non-compliance with data protection regulations like GDPR and HIPAA, which require strict access controls and timely revocation of access when a user is disabled or removed.

Failure to promptly invalidate sessions of disabled users may result in unauthorized data exposure or modification, violating principles of least privilege and data minimization mandated by these standards.

Detection Guidance

This vulnerability involves disabled users retaining access through existing session tokens because the session validation does not check if the user is enabled. Detection would involve verifying whether sessions for disabled users are still accepted by the server.

Since the vulnerability is related to session validation logic on the server side, detection on the network or system could include monitoring for authenticated requests made by users who have been disabled in the system.

One approach is to audit the user status and active sessions in the application database or logs to identify if any disabled users have active sessions.

Specific commands depend on the environment and access to the Actual Budget application's backend or database. For example, querying the sessions table joined with the users table to find sessions where the user is disabled but the session is still active.

  • Example SQL query to detect active sessions for disabled users (assuming access to the database):
  • SELECT sessions.* FROM sessions JOIN users ON sessions.user_id = users.id WHERE users.enabled = FALSE AND sessions.expires > NOW();

Additionally, monitoring server logs for authenticated requests from disabled users or implementing application-level checks to log or alert on such activity can help detect exploitation.

No specific network commands or tools are provided in the available resources, so detection primarily relies on application or database-level inspection.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-49229. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart