Skip to main content
← All vulnerabilities
CVE-2026-108360EUVD-2026-108264GHSA-2PHH-27FW-Q4GC

PhpSpreadsheet: SSRF whitelist bypass via unre-validated HTTP redirect in Drawing::setPath external image loading

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 1.30.7, 2.1.19, 2.4.8, 3.10.8, 5.10.0
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: poc
  • Automatable: no
  • Technical impact: partial

Summary

PhpSpreadsheet, a PHP library for reading and writing spreadsheet files, is affected when external image loading is enabled. An attacker who controls an allowed image host can use an HTTP redirect to make the server send a request to an internal address, potentially reaching internal services or cloud metadata endpoints.

Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.

Read the original description

PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0, Worksheet\Drawing::setPath validates only the initial external-image URL with setIsWhitelisted when setAllowExternalImages is enabled. The HTTP stream context permits PHP to follow a redirect without applying the callback to the redirected URL, so a permitted image host can redirect the server to an internal address and cause a blind GET request. The response body is not returned to the attacker because the reader validates the downloaded content as an image and removes the temporary file, but internal GET-driven endpoints, network reachability, and cloud metadata endpoints may be reached. This issue is fixed in versions 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0.

Timeline

  1. CVE published
  2. First seen by cve.now
  3. CISA SSVC assessment

    Exploitation: poc · Automatable: no · Technical impact: partial

  4. Record last updated

Affected versions

  • PHPOffice PhpSpreadsheet

    fixed in 1.30.7; From 2.0.0 · fixed in 2.1.19; From 2.2.0 · fixed in 2.4.8; From 3.3.0 · fixed in 3.10.8; From 4.0.0 · fixed in 5.10.0

  • phpoffice/phpspreadsheetPackagist

    From 4.0.0 · fixed in 5.10.0

  • phpoffice/phpspreadsheetPackagist

    From 3.3.0 · fixed in 3.10.8

  • phpoffice/phpspreadsheetPackagist

    From 2.2.0 · fixed in 2.4.8

  • phpoffice/phpspreadsheetPackagist

    From 2.0.0 · fixed in 2.1.19

  • phpoffice/phpspreadsheetPackagist

    fixed in 1.30.7

References 11

GitHub · PHPOffice/PhpSpreadsheet