Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-59941 — Dompdf: Denegación de Servicio (DoS) mediante Agotamiento de Recursos utilizando Mapas de Bits de Imágenes Sobredimensionados | Kitploit
Herramientas/GitHubGitHub/far00t01/cve-2026-59941
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubfar00t01/cve-2026-59941

CVE-2026-59941

Dompdf: Denegación de Servicio (DoS) mediante Agotamiento de Recursos utilizando Mapas de Bits de Imágenes Sobredimensionados

Ver Repositorio
46hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-59942: Agotamiento de recursos en Dompdf (DoS) - Prueba de concepto

  • Tipo de vulnerabilidad: Denegación de servicio (DoS) por agotamiento de recursos
  • Software afectado: Dompdf <= 3.1.5
  • Créditos: Fabian Rosales (far00t01).

Descargo de responsabilidad

Este repositorio y su contenido se proporcionan únicamente con fines educativos y de investigación. El autor no se hace responsable de ningún uso indebido, daño o actividad ilegal realizada con la información aquí proporcionada. Obtenga siempre autorización antes de probar entornos objetivo.

Resumen

Dompdf v3.1.5 es vulnerable a un ataque de denegación de servicio (DoS) por agotamiento de recursos. Un atacante puede provocar la caída del proceso PHP proporcionando un documento HTML especialmente diseñado que contenga una sola imagen con dimensiones masivas (por ejemplo, 30.000x30.000 píxeles).

Aunque Dompdf implementa comprobaciones internas para validar las dimensiones de las imágenes, estas pueden eludirse utilizando una imagen de alta entropía (como ruido aleatorio) codificada en Base64 y envuelta en contenedores CSS específicos.

Análisis técnico en profundidad:

Las imágenes estándar de color sólido a menudo pueden optimizarse mediante algoritmos de compresión o motores de renderizado. Sin embargo, una imagen de ruido de alta entropía obliga al motor PHP a procesar cada uno de los 900 millones de píxeles individualmente. Cuando se llama a render(), el motor intenta manejar el mapa de bits sin comprimir en memoria y calcular el diseño para cada punto de datos de píxel de alta varianza. Esto provoca:

  • Saturación del 100% de la CPU: El hilo de renderizado se bloquea indefinidamente intentando procesar el flujo de píxeles.
  • Terminación del proceso: La enorme asignación de memoria (verificada en ~1,2 GB para una sola imagen) desencadena un Fatal Error o un SIGKILL a nivel del sistema operativo (OOM), lo que resulta en una denegación de servicio inmediata.

Detalles

La vulnerabilidad existe porque la validación de dimensiones ocurre de forma temprana, pero la asignación de recursos para calcular el cuadro delimitador del objeto y los búferes internos durante la fase de renderizado no limita estrictamente el tiempo de CPU acumulado ni el uso de memoria para un solo objeto que ha superado la comprobación inicial.

Resultados de la prueba de concepto

https://github.com/user-attachments/assets/d1f5a07b-a7c5-4b5e-84b5-1e47e73522d9

  1. Instale Dompdf v3.1.5 mediante Composer.
composer require dompdf/dompdf:3.1.5
  1. Utilice el siguiente script de Python para generar el payload malicioso (exploit.py):
  2. Utilice el siguiente script de Python para monitorizar los recursos del sistema en una terminal separada (monitor.py):
  3. Cree un archivo llamado render.php. Este script actúa como el punto de entrada vulnerable, imitando una implementación estándar de la biblioteca Dompdf:
  4. Ejecute el proceso PHP, proporcionando el payload mediante stdin. Utilizamos un límite de memoria de 2GB para demostrar que el fallo se debe a una asignación no controlada y no a una configuración restrictiva del servidor:
php -d memory_limit=2G render.php < payload.html
  1. El motor intenta procesar cada píxel de la imagen de alta entropía. El script monitor.py registrará una saturación de CPU del 99,8 %, seguida de un PHP Fatal Error (Allowed memory size exhausted) cuando Dompdf intenta asignar ~1,2 GB en una sola operación. A continuación, el proceso se termina, lo que confirma la denegación de servicio.

Los siguientes registros demuestran la explotación exitosa de la vulnerabilidad de agotamiento de recursos. A pesar de un generoso límite de memoria de 2 GB proporcionado al proceso PHP, una sola imagen de alta entropía provoca un fallo fatal.

Generación de payload:

python3 exploit.py 
[*] Generating 30000x30000 High-Entropy Noise Bomb...
[+] High-entropy payload saved to: payload.html

Ejecución de objetivos y denegación de servicio:

php -d memory_limit=2G render.php < payload.html
Output
[*] Starting Dompdf rendering process...
PHP Fatal error:  Allowed memory size of 2147483648 bytes exhausted (tried to allocate 1200355712 bytes) in /home/far00t/dompdf_exploit/vendor/dompdf/dompdf/src/Dompdf.php on line 490

Mientras se ejecutaba el proceso render.php, el script monitor.py capturó la siguiente telemetría, mostrando el impacto en los recursos del sistema:

python3 monitor.py 
[*] Searching for PHP processes... (Press Ctrl+C to stop)
[MONITOR] PID: 210767 | RAM: 953.17 MB | CPU: 99.7%

Hallazgos clave de la telemetría:

  • Inanición de CPU: El proceso alcanzó un uso sostenido de CPU del 99.7%. En un entorno de producción, este nivel de saturación en un proceso PHP de un solo hilo efectivamente deniega el servicio a cualquier otra tarea en ese núcleo.
  • Inflación rápida de memoria: La memoria residente (RSS) ascendió a 953.17 MB justo antes de que el motor intentara la asignación final de 1.2 GB que desencadenó el error Fatal.
  • Confirmación de omisión: La telemetría demuestra que los límites internos "seguros" de Dompdf fueron eludidos, ya que el motor procedió a intentar una descompresión masiva de mapa de bits que el entorno anfitrión no podía sostener.

Impacto

Un atacante remoto no autenticado puede causar una denegación de servicio completa en el servidor web enviando una cadena HTML manipulada. Esto afecta a cualquier aplicación que permita a los usuarios proporcionar contenido HTML o URL que posteriormente se conviertan a PDF usando Dompdf.

Referencia

  • https://github.com/dompdf/dompdf/security/advisories/GHSA-f5gf-2cj8-52g2
  • https://www.cve.org/CVERecord?id=CVE-2026-59942
Descargar herramienta