CVE-2025-22131 Cross-Site Scripting (XSS) vulnerability in generateNavigation() function
Attackers can inject malicious scripts via XLSX files when converted to HTML, potentially executing code in user browsers.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- Available
What is CVE-2025-22131?
CVE-2025-22131 is a medium-severity cross-site scripting vulnerability in PHPOffice PhpSpreadsheet, published on 20 Jan 2025. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.
Official description
PhpSpreadsheet is a PHP library for reading and writing spreadsheet files. Cross-Site Scripting (XSS) vulnerability in the code which translates the XLSX file into a HTML representation and displays it in the response.
Weakness: CWE-79
Which versions are affected by CVE-2025-22131?
10 open source packages ship an affected version, including phpoffice/phpspreadsheet and phpoffice/phpexcel. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
phpoffice/phpspreadsheet Packagist | All versions | 1.29.8 |
phpoffice/phpspreadsheet Packagist | All versions | 1.29.8 |
phpoffice/phpspreadsheet Packagist | From 2.0.0 | 2.1.7 |
phpoffice/phpspreadsheet Packagist | From 2.0.0 | 2.1.7 |
phpoffice/phpspreadsheet Packagist | From 2.2.0 | 2.3.6 |
phpoffice/phpspreadsheet Packagist | From 2.2.0 | 2.3.6 |
4 more packages
phpoffice/phpspreadsheet Packagist | From 3.0.0 | 3.8.0 |
phpoffice/phpspreadsheet Packagist | From 3.0.0 | 3.8.0 |
phpoffice/phpexcel Packagist | All versions to 1.8.2 | None |
phpoffice/phpexcel Packagist | All versions to 1.8.2 | None |
Products include Phpoffice Phpspreadsheet.
How do I fix CVE-2025-22131?
Upgrade phpoffice/phpspreadsheet to a fixed version for your release line: 1.29.8, 2.1.7, 2.3.6 or 3.8.0.
Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.
Is CVE-2025-22131 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2025-22131 exists.
Public exploit code: 2 proofs of concept on GitHub.
Other vulnerabilities in PHPOffice PhpSpreadsheet
- CVE-2026-34084 PhpSpreadsheet SSRF and RCE via PHP stream wrappers in IOFactory::load
- CVE-2024-45048 XML External Entity Reference (XXE) in PHPSpreadsheet
- CVE-2019-12331 XXE in PHPSpreadsheet due to incomplete fix for previous encoding issue
- CVE-2018-19277 XXE in PHPSpreadsheet due to encoding issue
- CVE-2024-56365 PhpSpreadsheet vulnerable to unauthorized reflected XSS in the constructor of the Downloader class
Sources
Also known as GHSA-79xx-vf93-p7cx.