Średnia

Cross-Site Scripting (XSS) vulnerability in generateNavigation() function in PhpSpreadsheet

  • Ujawniono: 21.01.2025
  • Aktualizacja: 11.10.2026 10:22

Summary

The researcher discovered zero-day vulnerability Cross-Site Scripting (XSS) vulnerability in the code which translates the XLSX file into a HTML representation and displays it in the response.

Details

When generating the HTML from an xlsx file containing multiple sheets, a navigation menu is created. This menu includes the sheet names, which are not sanitized. As a result, an attacker can exploit this vulnerability to execute JavaScript code.

php
        // Construct HTML
        $html = '';

        // Only if there are more than 1 sheets
        if (count($sheets) > 1) {
            // Loop all sheets
            $sheetId = 0;

            $html .= '<ul class="navigation">' . PHP_EOL;

            foreach ($sheets as $sheet) {
                $html .= '  <li class="sheet' . $sheetId . '"><a href="#sheet' . $sheetId . '">' . $sheet->getTitle() . '</a></li>' . PHP_EOL;
                ++$sheetId;
            }

            $html .= '</ul>' . PHP_EOL;
        }

PoC

  1. Create an XLSX file with multiple sheets : image

  2. Generate the HTML content

php
<?php
	require __DIR__ . '/vendor/autoload.php';

	$inputFileName = 'payload.xlsx';
	$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
	$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);
	$writer->writeAllSheets();
	echo $writer->generateHTMLAll();
?>
  1. Enjoy image

Impact

XSS can cause a variety of problems for the end user that range in severity from an annoyance to complete account compromise. Example of impacts :

  • Disclosure of the user’s session cookie, allowing an attacker to hijack the user’s session and take over the account (Only if HttpOnly cookie's flag is set to false).
  • Redirecting the user to some other page or site (like phishing websites)
  • Modifying the content of the current page (add a fake login page that sends credentials to the attacker).
  • Automatically download malicious files.
  • Requests access to the victim geolocation / camera.
  • ...

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka Composer phpoffice/phpexcel <= 1.8.2 brak poprawki
Paczka Composer phpoffice/phpspreadsheet >= 3.0.0, < 3.8.0, < 1.29.8, >= 2.0.0, < 2.1.7, >= 2.2.0, < 2.3.6 3.8.0, 1.29.8, 2.1.7, 2.3.6

Odnośniki

Ocena CVSS 6.1/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Słabość (CWE)
CWE-79
Platforma
Composer
Paczka
phpoffice/phpexcel, phpoffice/phpspreadsheet
Ujawniono
21.01.2025
Aktualizacja
11.10.2026 10:22

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-79xx-vf93-p7cx - CC BY 4.0

Historia podatności: phpoffice/phpexcel

Wszystkie opisane podatności tej paczki (Paczka Composer), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (23) w archiwum
Wszystkich wpisów
23
Pierwsza → ostatnia
11.2019 02.2025
Bez poprawki
20
Wykorzystywana w atakach
0

Rozkład istotności

  • Wysoka 12
  • Średnia 10
  • Niska 1

Ujawnienia w latach

  1. 2019: 2
  2. 2020: 0
  3. 2021: 1
  4. 2022: 1
  5. 2023: 0
  6. 2024: 10
  7. 2025: 9
  8. 2026: 0
Istotność:
  1. Cross-Site Scripting (XSS) vulnerability in generateNavigation() function in PhpSpreadsheet ten wpis
    Średnia · 6.1 CVE-2025-22131 <= 1.8.2 brak poprawki
  2. Wysoka · 7.1 CVE-2024-56409 <= 1.8.2 brak poprawki
  3. Wysoka · 7.1 CVE-2024-56366 <= 1.8.2 brak poprawki
  4. Wysoka · 7.1 CVE-2024-56408 <= 1.8.2 brak poprawki
  5. Wysoka · 7.5 CVE-2024-48917 <= 1.8.2 brak poprawki
  6. Wysoka · 7.5 CVE-2024-47873 <= 1.8.2 brak poprawki
  7. Wysoka CVE-2015-3542 < 1.8.1 1.8.1
  8. Wysoka · 7.5 CVE-2024-45293 <= 1.8.2 brak poprawki
  9. Wysoka · 8.8 CVE-2024-45048 <= 1.8.2 brak poprawki
  10. Wysoka · 8.8 CVE-2019-12331 <= 1.8.2 brak poprawki
  11. Wysoka · 8.8 CVE-2018-19277 < 1.8.2 1.8.2

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.