CVE-2026-45034
PhpSpreadsheet: Bypass de File::prohibitWrappers
- Publicado
- 22 jun 2026
- Actualizado
- 23 jun 2026
- Asignación de CNA
- GitHub_M
- Evidencia observada
- 14 ago 2026
CVSS primario
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XBajo · próximos 30 días
- Percentil
- 39,2 %
- Fecha del modelo
- 21 sept 2026
EPSS es una estimación estadística, no una certeza o una medida de impacto. Combínelo con CVSS, estado KEV, exposición y su entorno.
Resumen
# PhpSpreadsheet: Vulnerabilidad de Deserialización Phar (CVE-2026-34084) PhpSpreadsheet es una biblioteca PHP pura para leer y escribir archivos de hojas de cálculo. Antes de la versión 1.30.5, CVE-2026-34084 fue corregido por el helper `File::prohibitWrappers`. El helper llama a `parse_url($filename, PHP_URL_SCHEME)` y luego verifica `is_string($scheme) && strlen($scheme) > 1` para rechazar stream wrappers como `phar://`, `php://`, `data://` o `expect://`. La verificación no es equivalente a "la ruta contiene un wrapper". Cuando la entrada tiene la forma `phar:///path/file.phar/inner` con tres o más barras después del esquema, `parse_url` devuelve `boolean false` en lugar de devolver la cadena del esquema. Por lo tanto, la rama `is_string($scheme)` se omite, el helper retorna sin lanzar una excepción y el llamador continúa. Sin embargo, la capa de streams de PHP aún trata `phar:///...` como un wrapper phar válido y abre el archivo phar subyacente. El resultado es que `IOFactory::load($attackerPath)` evita el parche y aún accede al wrapper phar. En PHP 7.x, simplemente alcanzar el wrapper phar mediante `is_file` es suficiente para que PHP deserialice automáticamente los metadatos del phar, lo que a su vez invoca los métodos mágicos `__wakeup` y `__destruct` de un objeto controlado por el atacante y otorga RCE completo. En PHP 8.x, la deserialización automática de metadatos para operaciones de archivo simples fue eliminada, por lo que la cadena en la capa de PhpSpreadsheet se reduce a una primitiva de lectura de archivos del wrapper phar, y la RCE solo reaparece si el consumidor posterior alguna vez llama a `Phar::getMetadata`. Esta vulnerabilidad está corregida en la versión 1.30.5.
Fuentes
1Exploit PoC para la vulnerabilidad de deserialización phar:// de PHPSpreadsheet, que omite prohibitWrappers para lograr ejecución remota de código en aplicaciones PHP vulnerables.
Uso responsable
Utilice información sobre vulnerabilidades solo en sistemas de su propiedad o que esté autorizado a probar. Kitploit enlaza con metadatos de investigación pública y no almacena código de explotación ni cargas útiles maliciosas.