Description
Actual is a local-first personal finance tool. Prior to 26.6.0, exportToCSV and exportQueryToCSV in packages/loot-core/src/server/transactions/export/export-to-csv.ts pass user-controlled Payee, Notes, Account, and Category strings to csv-stringify with no cast callback and no formula-prefix neutralization. Strings that begin with equals sign, plus, minus, at sign, tab, or carriage return survive verbatim into the exported CSV, and when a recipient opens the file in Excel, LibreOffice Calc, or Google Sheets, the strings are interpreted as formulas, enabling transaction data exfiltration and attacker-chosen spreadsheet display values. This issue is fixed in version 26.6.0.
Published: 2026-07-07
Score: 4.2 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Actual is a local‑first personal finance tool whose export functions write transaction fields to CSV without filtering or neutralizing characters that trigger spreadsheet formulas. Fields such as Payee, Notes, Account, and Category that begin with equals, plus, minus, at sign, a tab, or a carriage return are written verbatim. When a user later opens the exported file in Excel, LibreOffice Calc, or Google Sheets, those leading characters cause the application to evaluate the string as a formula, allowing the attacker to craft spreadsheet expressions that can exfiltrate transaction data or manipulate how the file is displayed. This is a Code Injection vulnerability (CWE‑1236) that does not provide remote code execution but can compromise confidentiality and integrity of exported data.

Affected Systems

Any installation of the Actual personal finance application prior to release 26.6.0 is affected. The vendor product listed by the CNA is actualbudget:actual, an open‑source tool. Users running versions older than 26.6.0 should verify their product version and plan remediation accordingly.

Risk and Exploitability

The CVSS score of 4.2 indicates moderate severity because the flaw targets local data export rather than enabling arbitrary code execution. The EPSS score is less than 1 %, showing a very low but non‑zero probability of exploitation in the wild. The vulnerability is not catalogued in CISA KEV. The attack requires the attacker to control or supply the CSV file that a user will later open in a spreadsheet application; this is inferred from the description, as the export process itself does not provide an external trigger. Once the file is opened, the injected formulas execute automatically, exposing data and allowing malicious spreadsheet display. The flaw is best classified as a Code Injection scenario (CWE‑1236).

Generated by OpenCVE AI on August 3, 2026 at 04:53 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to Actual version 26.6.0 or later to apply the vendor‑supplied fix that sanitises export strings.
  • If upgrading is not immediately possible, manually sanitize the Payee, Notes, Account, and Category fields before exporting by removing or escaping leading formula‑trigger characters such as ‘=’, ‘+’, ‘-’, ‘@’, tabs, or carriage returns.
  • Configure spreadsheet applications to disable automatic formula evaluation for imported data or train users to review CSV files for unexpected formulas prior to opening.

Generated by OpenCVE AI on August 3, 2026 at 04:53 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-xqjm-27pc-rvwm @actual-app/web has CSV Formula Injection in Transaction Export via Imported Payee/Notes Fields
History

Thu, 09 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


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

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

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

Type Values Removed Values Added
Description Actual is a local-first personal finance tool. Prior to 26.6.0, exportToCSV and exportQueryToCSV in packages/loot-core/src/server/transactions/export/export-to-csv.ts pass user-controlled Payee, Notes, Account, and Category strings to csv-stringify with no cast callback and no formula-prefix neutralization. Strings that begin with equals sign, plus, minus, at sign, tab, or carriage return survive verbatim into the exported CSV, and when a recipient opens the file in Excel, LibreOffice Calc, or Google Sheets, the strings are interpreted as formulas, enabling transaction data exfiltration and attacker-chosen spreadsheet display values. This issue is fixed in version 26.6.0.
Title Actual: CSV Formula Injection in Transaction Export via Imported Payee/Notes Fields
Weaknesses CWE-1236
References
Metrics cvssV3_1

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


Subscriptions

Actualbudget Actual
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-09T14:42:17.117Z

Reserved: 2026-06-03T22:05:13.644Z

Link: CVE-2026-50179

cve-icon Vulnrichment

Updated: 2026-07-09T14:21:11.364Z

cve-icon NVD

Status : Deferred

Published: 2026-07-07T22:16:52.923

Modified: 2026-07-09T16:16:42.473

Link: CVE-2026-50179

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T05:00:16Z

Weaknesses
  • CWE-1236

    Improper Neutralization of Formula Elements in a CSV File