CVE-2026-46672
Full vulnerability record from the local CVENow database.
Description
Actual is a local-first personal finance app. Prior to 26.6.0, @actual-app/cli ships a hand-rolled CSV serializer in packages/cli/src/output.ts used whenever the global --format csv option is passed, whose escapeCsv helper only handles RFC 4180 delimiter, quote, and newline escaping and does not neutralize standard CSV formula-injection prefixes. Any CLI command that streams an object array containing user-controlled strings, including transactions list, accounts list, payees list, categories list, tags list, category-groups list, rules list, schedules list, and query, can emit cells that auto-evaluate when the resulting CSV is opened in Excel, LibreOffice Calc, or Google Sheets, enabling data exfiltration and arbitrary formula execution. This issue is fixed in version 26.6.0.
View original CVE JSON
{
"id": "CVE-2026-46672",
"sourceIdentifier": "[email protected]",
"published": "2026-07-07T21:17:25.420",
"lastModified": "2026-10-25T20:10:00.147",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Actual is a local-first personal finance app. Prior to 26.6.0, @actual-app/cli ships a hand-rolled CSV serializer in packages/cli/src/output.ts used whenever the global --format csv option is passed, whose escapeCsv helper only handles RFC 4180 delimiter, quote, and newline escaping and does not neutralize standard CSV formula-injection prefixes. Any CLI command that streams an object array containing user-controlled strings, including transactions list, accounts list, payees list, categories list, tags list, category-groups list, rules list, schedules list, and query, can emit cells that auto-evaluate when the resulting CSV is opened in Excel, LibreOffice Calc, or Google Sheets, enabling data exfiltration and arbitrary formula execution. This issue is fixed in version 26.6.0."
},
{
"lang": "es",
"value": "Actual es una aplicación de finanzas personales primero local. Antes de la versión 26.6.0, @actual-app/cli incluye un serializador CSV hecho a mano en packages/cli/src/output.ts, utilizado cada vez que se pasa la opción global --format csv, cuya función auxiliar escapeCsv solo maneja el escape de delimitadores, comillas y saltos de línea de RFC 4180 y no neutraliza los prefijos estándar de inyección de fórmulas CSV. Cualquier comando de CLI que transmita una matriz de objetos que contenga cadenas controladas por el usuario, incluyendo la lista de transacciones, la lista de cuentas, la lista de beneficiarios, la lista de categorías, la lista de etiquetas, la lista de grupos de categorías, la lista de reglas, la lista de programaciones y la consulta, puede emitir celdas que se auto-evalúan cuando el CSV resultante se abre en Excel, LibreOffice Calc o Google Sheets, lo que permite la exfiltración de datos y la ejecución arbitraria de fórmulas. Este problema se ha corregido en la versión 26.6.0."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "actualbudget",
"product": "actual",
"versions": [
{
"version": "< 26.6.0",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N",
"baseScore": 4.6,
"baseSeverity": "MEDIUM",
"attackVector": "LOCAL",
"attackComplexity": "LOW",
"privilegesRequired": "LOW",
"userInteraction": "REQUIRED",
"scope": "CHANGED",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 1.5,
"impactScore": 2.7
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-08T12:59:38.913676Z",
"id": "CVE-2026-46672",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-1236"
}
]
}
],
"references": [
{
"url": "https://github.com/actualbudget/actual/commit/068185751c03b42e726e3c60b718413d5f96c306",
"source": "[email protected]"
},
{
"url": "https://github.com/actualbudget/actual/pull/7859",
"source": "[email protected]"
},
{
"url": "https://github.com/actualbudget/actual/releases/tag/v26.6.0",
"source": "[email protected]"
},
{
"url": "https://github.com/actualbudget/actual/security/advisories/GHSA-7gh7-258j-4mpq",
"source": "[email protected]"
},
{
"url": "https://github.com/actualbudget/actual/security/advisories/GHSA-7gh7-258j-4mpq",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
]
}