PT-2026-51455 · Npm+2 · @Actual-App/Web+1
CVSS v3.1
4.2
Medium
| Vector | AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N |
Name of the Vulnerable Software and Affected Versions
Actual versions prior to 26.6.0
Description
Actual is a local-first personal finance tool that fails to neutralize formula-trigger characters when exporting data to CSV. The functions
exportToCSV() and exportQueryToCSV() in packages/loot-core/src/server/transactions/export/export-to-csv.ts pass user-controlled strings from the Payee, Notes, Account, and Category variables to the csv-stringify library without a cast callback. Consequently, strings starting with =, +, -, @, tab, or carriage return are written verbatim into the CSV file.When a user opens the exported file in spreadsheet software such as Microsoft Excel, LibreOffice Calc, or Google Sheets, these strings are interpreted as formulas. This can lead to the exfiltration of sensitive transaction data (such as amounts, account names, and balances) to an attacker-controlled URL via functions like
=HYPERLINK, =WEBSERVICE, or =IMPORTXML. Additionally, it allows attackers to manipulate displayed values in the spreadsheet or potentially achieve remote code execution on older versions of Excel through Dynamic Data Exchange (DDE).Recommendations
Update Actual to version 26.6.0.
As a temporary mitigation, avoid importing files from untrusted sources and restrict the use of the CSV export feature until the update is applied.
Exploit
Fix
RCE
Found an issue in the description? Have something to add? Feel free to write us 👾
Weakness Enumeration
Related Identifiers
Affected Products
@Actual-App/Web
Actual