Vulnerabilidad en PhpSpreadsheet (CVE-2024-48917)
Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-611
Restricción incorrecta de referencia a entidad externa XML (XXE)
Fecha de publicación:
18/11/2024
Última modificación:
07/03/2025
Descripción
PhpSpreadsheet es una librería PHP para leer y escribir archivos de hojas de cálculo. La clase `XmlScanner` tiene un método de escaneo que debería evitar ataques XXE. Sin embargo, en una omisión del `CVE-2024-47873` informado anteriormente, las expresiones regulares del método `findCharSet`, que se utiliza para determinar la codificación actual, se pueden omitir utilizando un payload en la codificación UTF-7 y agregando al final del archivo un comentario con el valor `encoding="UTF-8"` con `"`, que coincide con la primera expresión regular, de modo que `encoding='UTF-7'` con comillas simples `'` en el encabezado XML no coincida con la segunda expresión regular. Un atacante puede omitir el desinfectante y lograr un ataque de entidad externa XML. Las versiones 1.9.4, 2.1.3, 2.3.2 y 3.4.0 solucionan el problema.
Impacto
Puntuación base 3.x
7.50
Gravedad 3.x
ALTA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:a:phpoffice:phpspreadsheet:*:*:*:*:*:*:*:* | 1.29.4 (excluyendo) | |
cpe:2.3:a:phpoffice:phpspreadsheet:*:*:*:*:*:*:*:* | 2.0.0 (incluyendo) | 2.1.3 (excluyendo) |
cpe:2.3:a:phpoffice:phpspreadsheet:*:*:*:*:*:*:*:* | 2.2.0 (incluyendo) | 2.3.2 (excluyendo) |
cpe:2.3:a:phpoffice:phpspreadsheet:*:*:*:*:*:*:*:* | 3.3.0 (incluyendo) | 3.4.0 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://github.com/PHPOffice/PhpSpreadsheet/blob/39fc51309181e82593b06e2fa8e45ef8333a0335/src/PhpSpreadsheet/Reader/Security/XmlScanner.php
- https://github.com/PHPOffice/PhpSpreadsheet/security/advisories/GHSA-7cc9-j4mv-vcjp
- https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing