Falla de RCE de gravedad crítica encontrada en la librería PHP Dompdf

Se ha revelado una vulnerabilidad de alta gravedad en la librería PHP Dompdf de código abierto, identificada como CVE-2023-23924 con puntuación CVSS:10, al explotar esta falla con éxito, un atacante podría conducir a la ejecución remota de código en un servidor destino.

Dompdf es una herramienta que permite leer un documento HTML y convertirlo a PDF. Principalmente es un motor de renderizado basado en estilos y diseño HTML compatible con CSS 2.1 escrito en PHP.

Esta vulnerabilidad afecta a todas las versiones de la librería con versiones 2.0.1 e inferiores, se ha corregido esta falla en la versión 2.0.2.

Dompdf 2.0.2 requiere lo siguiente:

  • PHP 7.1 o superior
  • html5-php v2.0.0 o superior
  • php-font-lib v0.5.4 o superior
  • php-svg-lib v0.3.3 o superior

La validación de URI en dompdf 2.0.1 se puede omitir en el análisis de SVG pasando etiquetas <image> con letras mayúsculas.

PoC

El error ocurre durante el análisis SVG de las etiquetas <image>, en src/Image/Cache.php. Analizar el siguiente archivo SVG es suficiente para reproducir la vulnerabilidad:

<svg>

    <Image xlink:href=»phar:///foo»></Image>

</svg>

Como la etiqueta se llama «Image» y no «image», no pasará la condición para activar la verificación.

Una solución sería usar la función strtolower($name) antes de la verificación:

                        if (strtolower($name) === «image»)

Recomendaciones

  • Los usuarios de la librería Dompdf deben actualizar a la versión 2.0.2 lo antes posible.

Referencias