GitHub Advisoryadvisory · Packagist

GHSA-rx7m-68vc-ppxh PhpSpreadsheet vulnerable to SSRF when reading and displaying a processed HTML document in the browser

HIGH Published 2025-08-25 Modified 2025-08-29 Official page ↗
Aliases
CVE-2025-54370
Ecosystem
Packagist
Packages
phpoffice/phpspreadsheet
Severity
High
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Weaknesses
CWE-918
Reviewed
2025-08-25

Affected packages

• Packagist phpoffice/phpspreadsheet: < 1.30.0 → fixed in 1.30.0 • Packagist phpoffice/phpspreadsheet: >= 2.0.0, < 2.1.12 → fixed in 2.1.12 • Packagist phpoffice/phpspreadsheet: >= 2.2.0, < 2.4.0 → fixed in 2.4.0 • Packagist phpoffice/phpspreadsheet: >= 3.0.0, < 3.10.0 → fixed in 3.10.0 • Packagist phpoffice/phpspreadsheet: >= 4.0.0, < 5.0.0 → fixed in 5.0.0

Description

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* ``` 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* ``` ``` 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)

Related

Alias · CVE (1)

  • CVE-2025-54370 PhpOffice/PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. vulnerability

Weakness · CWE (1)

  • CWE-918 Server-Side Request Forgery weakness

References