GHSA-wgmf-q9vr-vww6MediumCVSS 5.4

PhpSpreadsheet HTML writer is vulnerable to Cross-Site Scripting via style information

Published
August 29, 2024
Last Modified
March 6, 2025

🔗 CVE IDs covered (1)

📋 Description

Summary

\PhpOffice\PhpSpreadsheet\Writer\Html doesn't sanitize spreadsheet styling information such as font names, allowing an attacker to inject arbitrary JavaScript on the page.

PoC

Example target script:

<?php

require 'vendor/autoload.php';

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
$spreadsheet = $reader->load(__DIR__ . '/book.xlsx');

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);
print($writer->generateHTMLAll());

Save this file in the same directory: book.xlsx

Open index.php in a web browser. An alert should be displayed.

Impact

Full takeover of the session of users viewing spreadsheet files as HTML.

🎯 Affected products3

  • composer/phpoffice/phpspreadsheet:>= 2.0.0, < 2.1.0
  • composer/phpoffice/phpspreadsheet:< 1.29.1
  • composer/phpoffice/phpexcel:<= 1.8.2

🔗 References (5)