Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:U/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable, no-auth endpoint; S:C because leaked client_secret directly impacts the external identity provider; A:N as no availability impact is described.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Actual is a local-first personal finance tool. The POST /openid/config endpoint in Actual Budget's sync-server versions <= 26.4.0 exposes the full OpenID Connect configuration-including the OAuth2 client_secret-to any caller who knows the bootstrap password. The endpoint also lacks authentication and rate limiting, making the bootstrap password brute-forceable. Version 26.5.0 fixes the issue.
AnalysisAI
Unauthenticated access to the POST /openid/config endpoint in Actual Budget sync-server versions <= 26.4.0 exposes the full OpenID Connect configuration-including the OAuth2 client_secret-to any caller who can supply the bootstrap password. Because the endpoint enforces no rate limiting, the bootstrap password itself is brute-forceable, compounding the exposure. No public exploit has been identified at time of analysis, and the EPSS score of 0.03% (11th percentile) reflects low current exploitation probability; however, internet-exposed instances with OIDC configured are at meaningful risk of credential harvesting.
Technical ContextAI
Actual Budget is a local-first personal finance application whose sync-server component (CPE: cpe:2.3:a:actualbudget:actual:*:*:*:*:*:*:*:*) implements OpenID Connect (OIDC) to support federated authentication. The POST /openid/config endpoint is intended for managing the OIDC configuration, including the OAuth2 client_secret-a sensitive credential that authorizes the Actual Budget application to communicate with the configured identity provider (IdP). The root cause is CWE-863 (Incorrect Authorization): the endpoint validates only a bootstrap password but neither authenticates callers with session-bound credentials nor enforces any rate limit, making the single protective factor (the bootstrap password) susceptible to automated guessing. A leaked client_secret could allow an attacker to impersonate the Actual Budget application in OAuth2 flows against the IdP, enabling unauthorized token issuance or manipulation of user sessions depending on the IdP's configuration and client permissions.
RemediationAI
Upgrade Actual Budget sync-server to version 26.5.0, which resolves the issue per the vendor security advisory at https://github.com/actualbudget/actual/security/advisories/GHSA-49v6-pqjq-xw55 and the release notes at https://actualbudget.org/blog/release-26.5.0. If immediate patching is not feasible, restrict network access to the sync-server at the firewall or reverse-proxy layer so that the POST /openid/config endpoint is reachable only from trusted administrative hosts; this eliminates remote brute-force risk but requires infrastructure changes and prevents legitimate remote administration. Additionally, if the sync-server was previously internet-exposed, rotate the OAuth2 client_secret in the connected identity provider immediately, as the secret may have already been exfiltrated without evidence in application logs. Using a long, randomly generated bootstrap password raises the brute-force cost as an interim measure but is not a substitute for patching, since the lack of rate limiting means even strong passwords are eventually vulnerable under sustained attack.
Actual is a local-first personal finance tool. [CVSS 7.5 HIGH]
Actual personal finance application prior to version 26.2.1 fails to enforce access controls on multi-user sync API endp
Privilege escalation via broken authorization in Actual (self-hosted open-source budgeting app) before 26.7.0 lets any s
Path traversal across multiple endpoints in Actual, the open-source self-hosted personal finance application, allows aut
Actual Sync Server allows authenticated users to upload files through POST /sync/upload-user-file. In versions up to 26.
Same weakness CWE-863 – Incorrect Authorization
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-36543