GHSA-rx7m-68vc-ppxh
PhpSpreadsheet vulnerable to SSRF when reading and displaying a processed HTML document in the browser
Quick fix
GHSA-rx7m-68vc-ppxh — phpoffice/phpspreadsheet: upgrade to the fixed version with the command below.
composer require phpoffice/phpspreadsheet:^1.30.0Details
**Product:** PhpSpreadsheet **Version:** 3.8.0 **CWE-ID:** CWE-918: Server-Side Request Forgery (SSRF) **CVSS vector v.3.1:** 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) **CVSS vector v.4.0:** 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N) **Description:** SSRF occurs when a processed HTML document is read and displayed in the browser **Impact:** Server-Side Request Forgery **Vulnerable component:** the `PhpOffice\PhpSpreadsheet\Worksheet\Drawing` class, `setPath` method **Exploitation conditions:** getting a string from the user that is passed to the HTML reader **Mitigation:** improved processing of the `$path` variable of the `setPath` method of the `PhpOffice\PhpSpreadsheet\Worksheet\Drawing` class is needed **Researcher: Aleksey Solovev (Positive Technologies)**
# Research The researcher discovered zero-day vulnerability Server-Side Request Forgery (SSRF) (in the `setPath` method of the `PhpOffice\PhpSpreadsheet\Worksheet\Drawing` class) in Phpspreadsheet. The latest version (3.8.0) of the `phpoffice/phpspreadsheet` library was installed. Below are the details of the installation:
*Listing 1. Installing the phpoffice/phpspreadsheet library* ``` $ composer require phpoffice/phpspreadsheet --prefer-source ``` The code that processes the HTML string with further rendering and displaying the result in the browser. *Listing 2. Executable file index.php using the PhpSpreadsheet library* ``` <?php
require __DIR__ . '/vendor/autoload.php';
$inputFileType = 'Html'; $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
$inputFileName = './doc/file.html'; $spreadsheet = $reader->load($inputFileName);
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet); print($writer->generateHTMLAll()); ```
Also, the `./doc/file.html` has the following content: the `img` tag with the `src` attribute, which contains the value `http:// 127.0.0.1:1337`
*Listing 3. The ./doc/file.html file* ``` <table> <tr> <img src="http://127.0.0.1:1337"> </tr> </table> ``` The vulnerability lies in the `setPath` method of the `PhpOffice\PhpSpreadsheet\Worksheet\Drawing` class. Figure 1. The `PhpOffice\PhpSpreadsheet\Worksheet\Drawing` class, `setPath` method.

Figure 2 below demonstrates the SSRF vulnerability exploitation.

Figure 2. Demonstration of the SSRF vulnerability exploitation
Also, there is code on line 154 that could potentially be used by an attacker to perform unsafe deserialization via the `phar` archive and the `file_exists` method. Figure 3. Opportunity to perform phar deserialization 
_____________________________________________
Please, assign all credits to: Aleksey Solovev (Positive Technologies)
# Credit
Aleksey Solovev (Positive Technologies)
Are you affected?
Enter the version of the package you're using.
Affected packages
0Fixed in: 1.30.0composer require phpoffice/phpspreadsheet:^1.30.02.0.0Fixed in: 2.1.12composer require phpoffice/phpspreadsheet:^2.1.122.2.0Fixed in: 2.4.0composer require phpoffice/phpspreadsheet:^2.4.03.0.0Fixed in: 3.10.0composer require phpoffice/phpspreadsheet:^3.10.04.0.0Fixed in: 5.0.0composer require phpoffice/phpspreadsheet:^5.0.0References
- https://github.com/PHPOffice/PhpSpreadsheet/security/advisories/GHSA-rx7m-68vc-ppxh[WEB]
- https://nvd.nist.gov/vuln/detail/CVE-2025-54370[ADVISORY]
- https://github.com/PHPOffice/PhpSpreadsheet/commit/334a67797ace574d1d37c0992ffe283b7415471a[WEB]
- https://github.com/PHPOffice/PhpSpreadsheet/commit/4050f14521d70634c3320b170236574a6106eb39[WEB]
- https://github.com/PHPOffice/PhpSpreadsheet/commit/81a0de2261f698404587a6421a5c6eb263c40b31[WEB]
- https://github.com/PHPOffice/PhpSpreadsheet/commit/ac4befd2f7ccc21a59daef606a02a3d1828ade09[WEB]
- https://github.com/PHPOffice/PhpSpreadsheet/commit/c2cd0e64392438e4c6af082796eb65c1d629a266[WEB]
- https://github.com/FriendsOfPHP/security-advisories/blob/master/phpoffice/phpspreadsheet/CVE-2025-54370.yaml[WEB]
- https://github.com/PHPOffice/PhpSpreadsheet[PACKAGE]