CVE-2026-33318 Details
Description
Actual is a local-first personal finance tool. Prior to version 26.4.0, any authenticated user (including `BASIC` role) can escalate to `ADMIN` on servers migrated from password authentication to OpenID Connect. Three weaknesses combine: `POST /account/change-password` has no authorization check, allowing any session to overwrite the password hash; the inactive password `auth` row is never removed on migration; and the login endpoint accepts a client-supplied `loginMethod` that bypasses the server's active auth configuration. Together these allow an attacker to set a known password and authenticate as the anonymous admin account created during the multiuser migration. The three weaknesses form a single, sequential exploit chain — none produces privilege escalation on its own. Missing authorization on POST /change-password allows overwriting a password hash, but only matters if there is an orphaned row to target. Orphaned password row persisting after migration provides the target row, but is harmless without the ability to authenticate using it. Client-controlled loginMethod: "password" allows forcing password-based auth, but is useless without a known hash established by step 1. All three must be chained in sequence to achieve the impact. No single weakness independently results in privilege escalation. The single root cause is the missing authorization check on /change-password; the other two are preconditions that make it exploitable. Version 26.4.0 contains a fix.
A privilege escalation vulnerability has been identified in Actual Budget, a local-first personal finance tool, prior to version 26.4.0. This vulnerability allows any authenticated user, including those with the BASIC role, to escalate privileges to ADMIN on servers that have migrated from password authentication to OpenID Connect. The issue arises from a combination of three weaknesses: the 'POST /account/change-password' endpoint lacks proper authorization checks, enabling any session to overwrite password hashes; orphaned password authentication rows remain after migration, and the login endpoint accepts client-supplied 'loginMethod' values that can bypass the server's active authentication settings. Exploiting this vulnerability involves chaining these weaknesses to overwrite a password hash, authenticate as an admin, and gain unauthorized access to administrative privileges.
Users who have fully migrated to OpenID and do not need password authentication can delete the orphaned password row from the 'auth' table. For servers that require password authentication, the 'POST /account/change-password' endpoint should be restricted to password-authenticated sessions only, and current-password confirmation should be required before accepting a new password.
Metrics
CVSS 4.0 Severity and Vector Strings:
No CVSS 4.0 data is available for this CVE.
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
CISA-ADP
Assessed Apr 25, 2026References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://github.com/actualbudget/actual/security/advisories/GHSA-prp4-2f49-fcgp | CISA-ADP | ExploitMitigationVendor Advisory |
| https://actualbudget.org/blog/release-26.4.0 | [email protected] | Release Notes |
| https://github.com/actualbudget/actual/security/advisories/GHSA-prp4-2f49-fcgp | [email protected] | ExploitMitigationVendor Advisory |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-284 | Improper Access Control | [email protected] |
| CWE-862 | Missing Authorization | [email protected] |
Affected Products
| Product | Versions |
|---|---|
| actualbudget actual | < 26.4.0 |
CPE
Remediation
| |
Change History
5 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Jun 17, 2026 | CVE Modified | [email protected] |
| Jun 17, 2026 | CVE Modified | CISA-ADP |
| Apr 27, 2026 | Initial Analysis | [email protected] |
| Apr 25, 2026 | CVE Modified | CISA-ADP |
| Apr 24, 2026 | New CVE Received | [email protected] |