CVE-2024-45291 Path traversal and Server-Side Request Forgery in HTML writer when embedding images is enabled in PHPSpreadsheet

Medium 6.3 Published Updated

Attackers can read arbitrary files and execute code via SSRF in PHPSpreadsheet when image embedding is enabled in the HTML writer.

Exploited in the wild
Not known
Login needed
Any signed-in user
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2024-45291?

CVE-2024-45291 is a medium-severity path traversal vulnerability in PHPOffice PhpSpreadsheet, published on 7 Oct 2024. Any signed-in user can exploit it over the network, with no action from the victim.

Official description

PHPSpreadsheet is a pure PHP library for reading and writing spreadsheet files. It's possible for an attacker to construct an XLSX file that links images from arbitrary paths. When embedding images has been enabled in HTML writer with `$writer->setEmbedImages(true);` those files will be included in the output as `data:` URLs, regardless of the file's type. Also URLs can be used for embedding, resulting in a Server-Side Request Forgery vulnerability. When embedding images has been enabled, an attacker can read arbitrary files on the server and perform arbitrary HTTP GET requests. Note that any PHP protocol wrappers can be used, meaning that if for example the `expect://` wrapper is enabled, also remote code execution is possible. This issue has been addressed in release versions 1.29.2, 2.1.1, and 2.3.0. All users are advised to upgrade. there are no known workarounds for this vulnerability.

Weakness: CWE-22, CWE-918, CWE-36

Which versions are affected by CVE-2024-45291?

8 open source packages ship an affected version, including phpoffice/phpspreadsheet and phpoffice/phpexcel. It affects 1 product.

PackageAffectedFixed in
phpoffice/phpspreadsheet PackagistAll versions1.29.2
phpoffice/phpspreadsheet PackagistAll versions1.29.2
phpoffice/phpspreadsheet PackagistFrom 2.0.02.1.1
phpoffice/phpspreadsheet PackagistFrom 2.0.02.1.1
phpoffice/phpspreadsheet PackagistFrom 2.2.02.3.0
phpoffice/phpspreadsheet PackagistFrom 2.2.02.3.0
2 more packages
phpoffice/phpexcel PackagistAll versions to 1.8.2None
phpoffice/phpexcel PackagistAll versions to 1.8.2None

Products include Phpoffice Phpspreadsheet.

How do I fix CVE-2024-45291?

Upgrade phpoffice/phpspreadsheet to a fixed version for your release line: 1.29.2, 2.1.1 or 2.3.0.

Upgrade, and resolve every user-supplied path against an allowed base folder before opening it. More about Path traversal.

Is CVE-2024-45291 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2024-45291 exists.

Sources

Also known as GHSA-w9xv-qf98-ccq4.

Is CVE-2024-45291 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free