CVE-2026-78209 json
exceljs through 4.4.0 CSV Formula Injection via Unescaped Cell Values
published 2026-08-24 2 mo ago modified 2026-11-08 24 h ago also EUVD-2026-64684
- cvss
- 8.2
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 35%
- public exploits
- 0
- none known
Summary
exceljs through 4.4.0 fails to neutralize leading equals, plus, minus, or at signs in cell values written to CSV output. Attackers who can influence exported cell values can inject formulas that execute when the CSV file is opened in a spreadsheet application, potentially exfiltrating data or performing other malicious actions.
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2 mo ago
Exploit prediction
0.41% chance of exploitation in the next 30 days, higher than 35% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 8.4 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N |
| CNA | 3.1 | 8.2 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N |
| CNA | 4.0 | 8.4 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N/E:X/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 |
Affected products
- exceljs exceljs
Classification
- Weakness
-
- CWE-1236 Improper Neutralization of Formula Elements in a CSV File
References
-
github.com
/mateocallec/exceljs-hardened/security/advisories/GHSA-9wxc-4rhw-hfrw
third-party-advisory, vendor-advisory
-
github.com
/exceljs/exceljs
product
-
github.com
/exceljs/exceljs/blob/v4.4.0/lib/csv/csv.js#L109-L182
technical-description
-
vulncheck.com
/advisories/exceljs-through-csv-formula-injection-via-unescaped-cell-values
third-party-advisory
Sources
- CVE List CVE-2026-78209
- NVD CVE-2026-78209
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.