Średnia

PhpSpreadsheet has a Cross-Site Scripting (XSS) vulnerability in custom properties

  • Ujawniono: 03.01.2025
  • Aktualizacja: 11.10.2026 10:22

Cross-Site Scripting (XSS) vulnerability in custom properties

Product: Phpspreadsheet Version: version 3.6.0 CWE-ID: CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') CVSS vector v.3.1: 5.4 (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) CVSS vector v.4.0: 4.8 (AV:N/AC:L/AT:N/PR:L/UI:A/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N) Description: the HTML page is generated without clearing custom properties Impact: executing arbitrary JavaScript code in the browser Vulnerable component: class PhpOffice\PhpSpreadsheet\Writer\Html, method generateMeta Exploitation conditions: a user viewing a specially generated Excel file Mitigation: additional sanitization of special characters in a string Researcher: Aleksey Solovev (Positive Technologies)

Research

The researcher discovered zero-day vulnerability Cross-Site Scripting (XSS) vulnerability in custom properties in Phpspreadsheet. The following code is written on the server, which translates the XLSX file into a HTML representation and displays it in the response.

Listing 9. Source code on the server

php
<?php

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

$inputFileName = './doc/Book1.xlsx';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);
print($writer->generateHTMLAll());

An attacker can embed a payload in a file property that will result in the execution of arbitrary JavaScript code. The Excel file is unpacked and a custom property in the file is inserted into the docProps/custom.xml file.

fig17

Figure 17. Embedding the payload

After making the changes, a new archive with the xlsx extension was created. At the moment of converting the xlsx file into an HTML representation, a property is obtained that participates in the formation of a string without sanitization.

fig18

Figure 18. Getting a custom property

When calling the static generateMeta method, you can see that the key of the custom property is displayed without sanitization.

fig19

Figure 19. Getting a custom property

As a result, when viewing the excel file as the HTML representation, arbitrary JavaScript code will be executed.

<img width="356" alt="fig20" src="https://github.com/user-attachments/assets/a6ed21e3-685c-415c-b2dc-453bc0652bef" />

Figure 20. Executing arbitrary JavaScript code

Credit

This vulnerability was discovered by Aleksey Solovev (Positive Technologies)

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.7.0, < 1.29.7, >= 2.0.0, < 2.1.6, >= 2.2.0, < 2.3.5 3.7.0, 1.29.7, 2.1.6, 2.3.5

Odnośniki

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

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-wv23-996v-q229 - 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. PhpSpreadsheet has a Cross-Site Scripting (XSS) vulnerability in custom properties ten wpis
    Średnia · 5.4 CVE-2024-56410 <= 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.