Description
ExcelJS through 4.4.0 contains a prototype pollution vulnerability that allows attackers to add numeric keys to Object.prototype through a crafted defined name referencing a __proto__ sheet. Attackers can supply an xlsx whose xl/workbook.xml definedName range targets __proto__, causing CellMatrix to write empty arrays onto Object.prototype process-wide when workbook.xlsx.load() runs.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| exceljs | exceljs | ≤ 4.4.0 | — |
References
- https://github.com/exceljs/exceljs product
- GitHub Security Advisory (GHSA-pwgq-2cgg-6ph9) third-party-advisory
- https://github.com/exceljs/exceljs/blob/v4.4.0/lib/utils/cell-matrix.js#L50-L52 technical-description
- https://github.com/exceljs/exceljs/blob/v4.4.0/lib/doc/defined-names.js#L182-L193 technical-description
- VulnCheck Advisory: ExcelJS through 4.4.0 Prototype Pollution via __proto__ Defined Name third-party-advisory