Description
Actual is a local-first personal finance tool. Prior to 26.6.0, the GET /secret/:name endpoint in @actual-app/sync-server checks only that the caller has a valid session and does not verify the caller is an admin, while the sibling POST /secret/ handler enforces an admin check in OpenID mode. Any authenticated non-admin BASIC user in OpenID multi-user deployments can probe the secrets store and learn which admin-managed bank-sync integrations have been configured, including simplefin_accessKey, pluggyai_clientSecret, pluggyai_itemIds, and the gocardless secrets. This issue is fixed in version 26.6.0.
Published: 2026-07-07
Score: 4.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Actual is a local‑first personal finance tool that uses a sync server. Prior to version 26.6.0, a flaw in the GET /secret/:name endpoint caused it to verify only that a caller had a valid session, without checking that the caller was an administrator. This lack of authorization enforcement allowed any authenticated non‑admin BASIC user in an OpenID multi‑user deployment to probe the secrets store and discover which bank‑sync integrations were configured, exposing credentials such as simplefin_accessKey, pluggyai_clientSecret, pluggyai_itemIds, and Gocardless secrets. The vulnerability is classified as a CWE‑285 authorization bypass and results in accidental disclosure of sensitive credential information.

Affected Systems

The vulnerable component is the Actual Budget sync server (@actual-app/sync-server). All releases before version 26.6.0 contain the flaw. The issue applies to OpenID multi‑user deployments that use BASIC authentication; non‑admin users in those environments can trigger the enumeration.

Risk and Exploitability

The CVSS score of 4.3 indicates moderate risk, while the EPSS score is under 1%, suggesting a very low probability of exploitation. The vulnerability is not listed in the CISA KEV catalog. Exploitation requires only a valid authenticated session within the sync server; repeated GET requests with different secret names allow enumeration. Once the patch is applied, the risk of disclosing credential data is eliminated.

Generated by OpenCVE AI on July 31, 2026 at 14:11 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Actual to version 26.6.0 or later to apply the authorization fix for the GET /secret/:name endpoint.
  • Reconfigure OpenID role assignments so that non‑admin users are prevented from accessing the /secret/ endpoint, ensuring that only administrators can invoke it.
  • If an immediate upgrade is not feasible, temporarily block or restrict access to the GET /secret/:name endpoint for non‑admin users using network filtering or internal service configuration until the patch is applied.

Generated by OpenCVE AI on July 31, 2026 at 14:11 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-3f62-qv96-4p78 @actual-app/sync-server's missing authorization on GET /secret/:name allows non-admin OpenID users to enumerate admin-configured bank-sync secrets
History

Wed, 08 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 07 Jul 2026 23:45:00 +0000

Type Values Removed Values Added
First Time appeared Actualbudget
Actualbudget actual
Vendors & Products Actualbudget
Actualbudget actual

Tue, 07 Jul 2026 21:00:00 +0000

Type Values Removed Values Added
Description Actual is a local-first personal finance tool. Prior to 26.6.0, the GET /secret/:name endpoint in @actual-app/sync-server checks only that the caller has a valid session and does not verify the caller is an admin, while the sibling POST /secret/ handler enforces an admin check in OpenID mode. Any authenticated non-admin BASIC user in OpenID multi-user deployments can probe the secrets store and learn which admin-managed bank-sync integrations have been configured, including simplefin_accessKey, pluggyai_clientSecret, pluggyai_itemIds, and the gocardless secrets. This issue is fixed in version 26.6.0.
Title Actual: Missing authorization on GET /secret/:name allows non-admin OpenID users to enumerate admin-configured bank-sync secrets
Weaknesses CWE-285
References
Metrics cvssV3_1

{'score': 4.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N'}


Subscriptions

Actualbudget Actual
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-08T14:43:18.586Z

Reserved: 2026-05-15T23:26:58.308Z

Link: CVE-2026-46700

cve-icon Vulnrichment

Updated: 2026-07-08T14:42:35.039Z

cve-icon NVD

Status : Deferred

Published: 2026-07-07T21:17:25.560

Modified: 2026-07-08T15:28:15.630

Link: CVE-2026-46700

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-31T14:15:03Z

Weaknesses