Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-59941 — Dompdf : Déni de service (DoS) par épuisement des ressources à l'aide de bitmaps d'images surdimensionnés | Kitploit
Outils/GitHubGitHub/far00t01/cve-2026-59941
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubfar00t01/cve-2026-59941

CVE-2026-59941

Dompdf : Déni de service (DoS) par épuisement des ressources à l'aide de bitmaps d'images surdimensionnés

Voir le dépôt
46il y a 2 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-59942 : Épuisement de ressources DoS dans Dompdf - Preuve de concept

  • Type de vulnérabilité : Déni de service (DoS) par épuisement de ressources
  • Logiciel affecté : Dompdf <= 3.1.5
  • Crédits : Fabian Rosales (far00t01).

Avertissement

Ce dépôt et son contenu sont fournis à des fins éducatives et de recherche uniquement. L'auteur n'est pas responsable de toute mauvaise utilisation, dommage ou activité illégale menée avec les informations fournies ici. Obtenez toujours une autorisation avant de tester des environnements cibles.

Résumé

Dompdf v3.1.5 est vulnérable à une attaque par déni de service (DoS) via épuisement de ressources. Un attaquant peut faire planter le processus PHP en fournissant un document HTML spécialement conçu contenant une seule image aux dimensions massives (par exemple, 30 000 x 30 000 pixels).

Bien que Dompdf implémente des vérifications internes pour valider les dimensions des images, celles-ci peuvent être contournées en utilisant une image à haute entropie (telle qu'un bruit aléatoire) encodée en Base64 et enveloppée dans des conteneurs CSS spécifiques.

Analyse technique approfondie :

Les images standard de couleur unie peuvent souvent être optimisées par les algorithmes de compression ou les moteurs de rendu. Cependant, une image de bruit à haute entropie force le moteur PHP à traiter chacun des 900 millions de pixels individuellement. Lorsque render() est appelé, le moteur tente de gérer le bitmap non compressé en mémoire et de calculer la mise en page pour chaque point de données de pixel à forte variance. Cela entraîne :

  • Saturation du CPU à 100 % : Le thread de rendu se bloque indéfiniment en essayant de traiter le flux de pixels.
  • Arrêt du processus : L'allocation mémoire massive (vérifiée à environ 1,2 Go pour une seule image) déclenche une erreur fatale ou un SIGKILL au niveau du système d'exploitation (OOM), entraînant un déni de service immédiat.

Détails

La vulnérabilité existe parce que la validation des dimensions se produit tôt, mais l'allocation de ressources pour le calcul de la boîte englobante de l'objet et des tampons internes pendant la phase de rendu ne limite pas strictement le temps CPU cumulé ou l'utilisation mémoire pour un seul objet ayant passé la vérification initiale.

Résultats de la preuve de concept

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

  1. Installez Dompdf v3.1.5 via Composer.
composer require dompdf/dompdf:3.1.5
  1. Utilisez le script Python suivant pour générer la charge utile malveillante (exploit.py) :
  2. Utilisez le script Python suivant pour surveiller les ressources système dans un terminal séparé (monitor.py) :
  3. Créez un fichier nommé render.php. Ce script sert de point d'entrée vulnérable, imitant une implémentation standard de la bibliothèque Dompdf :
  4. Exécutez le processus PHP en fournissant la charge utile via stdin. Nous utilisons une limite de mémoire de 2 Go pour démontrer que le plantage est causé par une allocation non contrôlée plutôt que par une configuration serveur restrictive :
php -d memory_limit=2G render.php < payload.html
  1. Le moteur tente de traiter chaque pixel de l'image à haute entropie. Le script monitor.py enregistrera une saturation CPU de 99,8 %, suivie d'une PHP Fatal Error (Allowed memory size exhausted) alors que Dompdf tente d'allouer ~1,2 Go en une seule opération. Le processus est ensuite terminé, confirmant le déni de service.

Les journaux suivants démontrent l'exploitation réussie de la vulnérabilité d'épuisement des ressources. Malgré une limite de mémoire généreuse de 2 Go accordée au processus PHP, une seule image à haute entropie provoque un plantage fatal.

Génération de la charge utile :

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

Exécution sur la cible et déni de service :

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

Lors de l'exécution du processus render.php, le script monitor.py a capturé la télémétrie suivante, montrant l'impact sur les ressources système :

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

Principaux constats issus de la télémétrie :

  • Épuisement CPU : le processus a atteint une utilisation CPU soutenue de 99,7 %. Dans un environnement de production, ce niveau de saturation sur un processus PHP mono-thread revient effectivement à refuser le service à toute autre tâche sur ce cœur.
  • Inflation mémoire rapide : la mémoire résidente (RSS) a grimpé jusqu'à 953,17 Mo juste avant que le moteur ne tente l'allocation finale de 1,2 Go qui a déclenché l'erreur fatale.
  • Confirmation du contournement : la télémétrie prouve que les limites « sûres » internes de Dompdf ont été contournées, le moteur ayant poursuivi en tentant une décompression massive de bitmap que l'environnement hôte ne pouvait pas supporter.

Impact

Un attaquant distant non authentifié peut provoquer un déni de service complet sur le serveur web en soumettant une chaîne HTML spécialement conçue. Cela affecte toute application qui permet aux utilisateurs de fournir du contenu HTML ou des URL ensuite convertis en PDF à l'aide de Dompdf.

Référence

  • https://github.com/dompdf/dompdf/security/advisories/GHSA-f5gf-2cj8-52g2
  • https://www.cve.org/CVERecord?id=CVE-2026-59942
Télécharger l’outil